アットウィキロゴ

ひltrr

package hilter;
 
 
public class optimal {
 
    double[] y=new double[501];
    double[] ys=new double[501];
    double[][] v=new double[501][101];
    double[][] pol=new double[501][101];
 int[][] gotox=new int[501][101];
 int number;
 int[] op=new int[501];
 
    void makedata(){
 
        int s,sx;
 
 
 
 
     s=1;
     for(sx=1;sx<101;sx++){
     v[s][sx]=(y[s]-pol[s][sx])*(y[s]-pol[s][sx]);   
     }
 
 
     double lam=0;
  int tx;   
 for(s=2;s<number;s++){
 for(sx=1;sx<101;sx++){ 
 double u1=(y[s]-pol[s][sx])*(y[s]-pol[s][sx]);
 double minv=0;
 int txs=0;
 for(tx=1;tx<101;tx++){
 double e1=(ys[s+1]-pol[s][sx])-(pol[s][sx]-pol[s-1][tx]);
 double v1=u1+lam*e1*e1+v[s-1][tx];
 if(v1<minv)txs=tx;
 if(v1<minv)minv=v1;
 if(minv<1)txs=tx;
 if(minv<1)minv=v1;
 }
 gotox[s][sx]=txs;
 v[s][sx]=minv;
 }
 
 }
 
s=number;     
for(sx=1;sx<101;sx++){ 
 double u1=(y[s]-pol[s][sx])*(y[s]-pol[s][sx]);
 double minv=0;
 int txs=0;
 for(tx=1;tx<101;tx++){
 double e1;
 double v1=u1+v[s-1][tx];
 if(v1<minv)txs=tx;
 if(v1<minv)minv=v1;
 if(minv<1)txs=tx;
 if(minv<1)minv=v1;
 }
 gotox[s][sx]=txs;
 v[s][sx]=minv;
 }        
 
double minv=9*10^13;
int sxs=0;
for(sx=1;sx<101;sx++){
if(v[number][sx]<minv)sxs=sx;  
if(v[number][sx]<minv)minv= v[number][sx];   
 
}
 
System.out.println(sxs);
 
 
op[number]=sxs;
 
for(s=1;s<number;s++){
sx=number+1-s;
int s1=op[sx];
op[sx-1]=gotox[sx][s1];
}
 
 
for(s=1;s<number+1;s++){
sx=op[s];
ys[s]=pol[s][sx];
}
 
 
 
 
 
    }
 
 
 
 
}
 
 
 
package hilter;
 
import java.io.*;
 
public class pro {
 
    double[] y=new double[101];
    double[] ys=new double[101];
    double[][] v=new double[101][101];
    double[][] pol=new double[101][101];
 int[][] gotox=new int[101][101];
 int number;
  String[] data=new String[6000];
    int s,datanumber;
 
    public static void main(String[] args) {
       pro te=new pro();
    }
    pro(){
 
 
        readx("a.csv");
 
 
        for(s=2;s<datanumber+1;s++){
data[s]=rev_csv(data[s]);
    String[] x=data[s].split(",");
    y[s-1]=num(x[1])/1000;     
     System.out.println(y[s-1]);
        }
 
 
        int s,sx;
 
        number=datanumber-1;
 
     for(s=1;s<number+1;s++){   
     for(sx=1;sx<101;sx++){
    pol[s][sx]=y[s]+(sx-50);
     }
     ys[s]=y[s];
     }
 
     int tr;
 
    for(tr=1;tr<2;tr++){ 
 
    optimal sub=new optimal();
    sub.pol=pol;
    sub.y=y;
    sub.ys=ys;
    sub.number=number;
    sub.makedata();
    ys=sub.ys;
 
    }
 
    for(s=1;s<number+1;s++){
    System.out.println(y[s]+","+ys[s]);
    }
 
 
 
 
 
    }
 
       void readx(String file){
 
String str;
BufferedReader br;  
int s;
s=0;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));  
while((str = br.readLine()) != null) {  
s=s+1;
data[s]=str;  
}
br.close();
} catch (IOException e) {System.out.println(e);}  
 
datanumber=s;
 
} 
  String rev_csv(String str){
 
        String str5=str;
        int px=str5.indexOf("\"");
 
 
 
        while(px>-1){
       str5=rev(str5);
       px=str5.indexOf("\"");   
        }
        return str5;
    }
 
    String rev(String str){
 
        int p1=str.indexOf("\"");
        int p2=str.indexOf("\"",p1+1);
 
     String str1=str.substring(0,p1);   
        String str2=str.substring(p1+1,p2);  
        String str3=str.substring(p2+1,str.length());
        str2=str2.replace(",","");
 
        return str1+str2+str3;
 
    }  
 
     double num(String str){
 
    double nx;
 
    nx=0;
 
 try{
 
    nx=Double.parseDouble(str);
 
 }catch (Exception e) {}
 
 return nx;
 
 
 
} 
 
}
 
最終更新:2016年10月24日 14:57