アットウィキロゴ

v9990

package price;
 
import tool.*;
 
public class pro {
 
    int s,datanumber;
    String[] data=new String[5000];
    double[] p=new double[5000];
  double[] pr=new double[5000];
    int number;
     int[] point=new int[5000];
     int[] op=new int[5000];
 
    public static void main(String[] args) {
        pro re=new pro();
    }
 
    pro(){
 
 
        readfile sub2=new readfile();
        sub2.makedata("data.csv","UTF-8");
        data=sub2.data;
        datanumber=sub2.datanumber;
 
 
        for(s=2;s<datanumber+1;s++){
        String[] x=data[s].split(",");    
        p[s-1]=num(x[2]);
        }
 
        int number=datanumber-1;
 
 
        int sx;
       for(s=13;s<datanumber;s++){
        sx=s-12;
        pr[sx]=(p[s]-p[s-12]);
        }
       number=datanumber-13; 
 
 
       int h;
        System.out.println(number);
       for(s=1;s<number+1;s++){
       h=0;
      if(pr[s]>1.99)h=h+1;
      if(pr[s]>1.99)h=h+1;
      if(h==2)point[s]=1;
      h=0;
      if(pr[s]<2)h=h+1;
      if(pr[s]>0.99)h=h+1;
      if(h==2)point[s]=2;
       h=0;
      if(pr[s]<1)h=h+1;
      if(pr[s]>-0.01)h=h+1;
      if(h==2)point[s]=3;
       h=0;
      if(pr[s]<0)h=h+1;
      if(pr[s]>-1.01)h=h+1;
      if(h==2)point[s]=4;
      h=0;
      if(pr[s]<-1)h=h+1;
      if(pr[s]>-2.01)h=h+1;
      if(h==2)point[s]=5;
       h=0;
      if(pr[s]<-2)h=h+1;
      if(pr[s]<-2)h=h+1;
      if(h==2)point[s]=6;
 
 
        }
 
 
        double[][] px=new double[7][7];
     double[][] qx=new double[7][7];
 
       for(s=1;s<7;s++){
       for(sx=1;sx<7;sx++){
           px[s][sx]=0.05;
             qx[s][sx]=0.05;
       }}
 
       for(s=1;s<7;s++){
 
           px[s][s]=0.75;
             qx[s][s]=0.75;
       }
       int tr; 
 
       for(tr=1;tr<11;tr++){
 
       optimal sub7=new optimal();
       sub7.px=px;
       sub7.qx=qx;
       sub7.point=point;
       sub7.number=number;
       sub7.makedata();
       px=sub7.px;
       qx=sub7.qx;
       op=sub7.op;
       }
 
       for(s=1;s<number+1;s++){
       if(op[s]==1) System.out.println(s+","+2.5+","+pr[s]);   
       if(op[s]==2) System.out.println(s+","+1.5+","+pr[s]); 
       if(op[s]==3) System.out.println(s+","+0.5+","+pr[s]); 
       if(op[s]==4) System.out.println(s+","+-0.5+","+pr[s]); 
       if(op[s]==5) System.out.println(s+","+-1.5+","+pr[s]); 
       if(op[s]==6) System.out.println(s+","+-2.5+","+pr[s]); 
       }
 
 
 
 
    }
    double num(String str){
 
    double nx;
 
    nx=0;
 
 try{
 
    nx=Double.parseDouble(str);
 
 }catch (Exception e) {}
 
 return nx;
 
 
 
}
 
 
 
}
 
 
package price;
 
 
public class optimal {
 
    int[] point=new int[600];
     int[] op=new int[600];
    int number;
      double[][] v=new double[600][7];
     double[][] px=new double[7][7];
     double[][] qx=new double[7][7];
 
     double[][] ps=new double[7][7];
     double[][] qs=new double[7][7];
     int[][] gotox=new int[600][7];
 
    void makedata(){
 
        int s,sx;
        for(s=1;s<7;s++){
        sx=point[s];
        v[1][s]=px[s][sx];    
 
        }
 
        int tx;
        for(s=2;s<number+1;s++){
        for(sx=1;sx<7;sx++){
        int n=point[s];
        double u1=px[sx][n];
        double maxv=0;
        int sxs=0;
        for(tx=1;tx<7;tx++){ 
        double v1=u1*qx[tx][sx]*v[s-1][tx];
         if(v1>maxv)sxs=tx;
        if(v1>maxv)maxv=v1;
        }  
        v[s][sx]=maxv;    
        gotox[s][sx]=sxs;
        }    
 
        }
 
        double maxvv=0;
        sx=0;
       for(s=1;s<7;s++){
       if(v[number][s]>maxvv)sx=s;   
       if(v[number][s]>maxvv)maxvv=v[number][s];      
        }
 
       op[number]=sx;
 
       for(s=0;s<number-1;s++){
       sx=op[number-s];
       op[number-s-1]=gotox[number-s][sx];
       }
 
 
       int s1,s2;
       for(s1=1;s1<7;s1++){
       for(s2=1;s2<7;s2++){
       int c1,c2;
       c1=0;
       c2=0;
 
       for(s=1;s<number+1;s++){ 
       int h=0;     
 
       if(op[s]==s1)h=h+1;
       if(point[s]==s2)h=h+1;
       if(h==2)c2=c2+1;
       if(op[s]==s1)c1=c1+1;
       }
       ps[s1][s2]=0;
       if(c1>0)ps[s1][s2]=(double)c2/c1;
       }
       }
 
 
       for(s1=1;s1<7;s1++){
       for(s2=1;s2<7;s2++){
       int c1,c2;
       c1=0;
       c2=0;
 
       for(s=1;s<number;s++){ 
       int h=0;     
       if(op[s]==s1)h=h+1;
       if(op[s+1]==s2)h=h+1;
       if(h==2)c2=c2+1;
       if(op[s]==s1)c1=c1+1;
       }
       qs[s1][s2]=0;
       if(c1>0)qs[s1][s2]=(double)c2/c1;
       }
       }
 
        for(s1=1;s1<7;s1++){
       for(s2=1;s2<7;s2++){
       px[s1][s2]=0.01;    
       if(ps[s1][s2]>0.01)px[s1][s2]=ps[s1][s2];
       }}
 
 
       for(s1=1;s1<7;s1++){
       for(s2=1;s2<7;s2++){
       qx[s1][s2]=0.01;    
       if(qs[s1][s2]>0.01)qx[s1][s2]=qs[s1][s2];
       }}
 
 
 
 
 
    }
 
 
 
 
}
 
最終更新:2016年05月10日 14:17