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