package fin;
import tool.catchword;
import tool.readfile;
public class pro {
int datanumber,s;
double[] y=new double[600];
double[] p=new double[600];
int number;
double lam,beta,theta,gg,phi;
double[][][] v=new double[200][21][21];
int[][][] goton=new int[200][21][21];
int[][][] gotom=new int[200][21][21];
int[] opn=new int[200];
int[] opm=new int[200];
public static void main(String[] args) {
pro te=new pro();
}
pro(){
catchdata xx=new catchdata();
xx.makedata();
y=xx.y;
p=xx.p;
number=xx.number;
for(s=1;s<number+1;s++){
y[s]=100*y[s]/124370.6;
}
p[number+1]=p[number];
phi=0.5;
theta=0.5;
gg=0;
lam=0.5;
y[0]=y[1];
p[0]=p[1];
int n,m;
double gap;
gg=0;
int t=1;
for(n=1;n<21;n++){
for(m=1;m<21;m++){
v[1][m][n]=0;
}}
int nx,mx,nxs,mxs;
double g;
double yy;
for(t=2;t<number+1;t++){
for(n=1;n<21;n++){
for(m=1;m<21;m++){
gap=n-10;
g=m-10;
yy=y[t]-gap;
double maxv=9999;
nxs=0;
mxs=0;
for(nx=1;nx<21;nx++){
for(mx=1;mx<21;mx++){
double gap2=nx-10;
double yy2=y[t-1]-gap2;
double e1=gap-phi*gap2;
double e2=yy-yy2-g;
double g2=mx-10;
double e3=g-theta*gg-(1-theta)*g2;
double e4=p[t]-(1-lam)*p[t+1]-lam*p[t-1]-beta*gap;
double v1=e1*e1+e2*2+e3*e3+e4*e4+v[t-1][mx][nx];
if(v1<maxv)nxs=nx;
if(v1<maxv)mxs=mx;
if(v1<maxv)maxv=v1;
}}
goton[t][m][n]=nxs;
gotom[t][m][n]=mxs;
v[t][m][n]=maxv;
}}}
double maxv=9999;
mx=0;
nx=0;
for(n=1;n<21;n++){
for(m=1;m<21;m++){
if(v[number][m][n]<maxv)mx=m;
if(v[number][m][n]<maxv)nx=n;
if(v[number][m][n]<maxv)maxv=v[number][m][n];
}}
opn[number]=nx;
opm[number]=mx;
for(s=1;s<number;s++){
t=number+1-s;
m=opm[t];
n=opn[t];
opm[t-1]=gotom[t][m][n];
opn[t-1]=goton[t][m][n];
}
for(s=1;s<number+1;s++){
System.out.println(opm[s]);
}
}}
最終更新:2015年04月21日 00:56