アットウィキロゴ

sんざい

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