アットウィキロゴ

lp

package nog;
 
 
public class pro {
 
    int[] home=new int[101];
    int[] work=new int[101];
    int[] n=new int[101];
    int s,sx,number;
double alpha,beta;
 
     double[] lb=new double[11];
     double[] lbs=new double[11];
  double[] lc=new double[11];
     double[] w=new double[11];
    double[] r=new double[11];
 
    int s1,s2;
 
    public static void main(String[] args) {
        pro test=new pro();
    }
 
    pro(){
 
 
        alpha=0.7;
        beta=0.6;
 
number=100;
 
for(s=1;s<number+1;s++){        
home[s]=(int)(10*Math.random())+1;
work[s]=(int)(10*Math.random())+1;
}
 
 
for(s=1;s<number+1;s++){        
sx=home[s];
n[sx]=n[sx]+1;
}
 
 
 
  for(s=1;s<11;s++){
   lb[s]=0.5;
   }
 
  int mode;
 
  mode=0;
 
  while(mode<50){
 
    for(s=1;s<11;s++){
    w[s]=beta*Math.pow(n[s],beta-1)*Math.pow(lb[s],1-beta);
    r[s]=(1-beta)*Math.pow(n[s],beta)*Math.pow(lb[s],-beta);
    }
 
     for(s=1;s<101;s++){
     s1=home[s];
     s2=work[s];
     lc[s1]=lc[s1]+(1-alpha)*w[s2]/r[s1];
     }
 
 
     for(s=1;s<11;s++){
     lbs[s]=seekl(s);
     }
 
 
for(s=1;s<11;s++){
 lb[s]=lbs[s];
 }
 
mode=mode+1;
 
  }
 
 for(s=1;s<11;s++){
 w[s]=beta*Math.pow(n[s],beta-1)*Math.pow(lb[s],1-beta);
 r[s]=(1-beta)*Math.pow(n[s],beta)*Math.pow(lb[s],-beta);
 }
 
 
 
 
 
 
 
 
 
 
    }
    double seekl(int s){
 
        double l1,l2,l3;
        double x1,x2;
        int mode;
 
        l1=0.1;
        l2=0.9;
        l3=0;
        mode=0;
 
        while(mode<50){
        l3=(l1+l2)/2;
        x1=lx(s,l3)+l3;
        if(x1>1)l2=l3;
        if(x1<1)l1=l3;
 
 
        mode=mode+1;    
        }
        return l3;
    }
 
    double lx(int s ,double lp){
 
        double ws,rs;
 
    ws=beta*Math.pow(n[s],beta-1)*Math.pow(lp,1-beta);
    rs=(1-beta)*Math.pow(n[s],beta)*Math.pow(lp,-beta);
 
    int sx;
    double lx;    
    lx=0;
     for(sx=1;sx<101;sx++){
     s1=home[sx];
     s2=work[sx];
     if(s1==s)lx=lx+(1-alpha)*w[s2]/r[s1];
     }
 
     return lx;
 
 
 
    }
}
 
最終更新:2014年05月25日 17:18