public class pro{
public static void main(String[] args) {
double th1[]=new double[11];
double th2[]=new double[11];
int s1,s2;
double tk,tl,tr;
double w1,w2,l1,l2;
int i,t1;
double b1,b2,c1,wel;
double tr1,tr2,tr3;
double maxwel,maxtk,maxtl,maxtr;
int n1,n2,n3;
for (s1=1;s1<11;s1++){
th1[s1]=0.2*s1;
}
for (s2=1;s2<11;s2++){
th2[s2]=0.1*s2;
}
maxwel=-999;
maxtk=0;
maxtl=0;
maxtr=0;
for (n1=10;n1<40;n1++){
for (n2=5;n2<30;n2++){
tk=0.01*n1;
tl=0.01*n2;
tr1=0.1;
tr2=0.05;
tr=tr1;
b1=0;
b2=0;
for (s1=1;s1<11;s1++){
for (s2=1;s2<11;s2++){
w1=(1-tk)*th1[s1];
w2=(1-tl)*th2[s2];
l1=1-(w1+w2+tr)/(3*w1);
l2=1-(w1+w2+tr)/(3*w2);
i=0;
if (l1<0){
i=i+1;
}
if (l2>0){
i=i+1;
}
if (i==2){
l1=0;
}
if (i==2){
l2=(w2-tr)/(2*w2);
}
i=0;
if (l1>0){
i=i+1;
}
if (l2<0){
i=i+1;
}
if (i==2){
l1=(w1-tr)/(2*w1);
}
if (i==2){
l2=0;
}
c1=w1*l1+w2*l2+tr;
b1=b1+th1[s1]*l1+th2[s2]*l2-c1;
}
}
t1=0;
while(t1<100){
tr=tr2;
b2=0;
for (s1=1;s1<11;s1++){
for (s2=1;s2<11;s2++){
w1=(1-tk)*th1[s1];
w2=(1-tl)*th2[s2];
l1=1-(w1+w2+tr)/(3*w1);
l2=1-(w1+w2+tr)/(3*w2);
i=0;
if (l1<0){
i=i+1;
}
if (l2>0){
i=i+1;
}
if (i==2){
l1=0;
}
if (i==2){
l2=(w2-tr)/(2*w2);
}
i=0;
if (l1>0){
i=i+1;
}
if (l2<0){
i=i+1;
}
if (i==2){
l1=(w1-tr)/(2*w1);
}
if (i==2){
l2=0;
}
c1=w1*l1+w2*l2+tr;
b2=b2+th1[s1]*l1+th2[s2]*l2-c1;
}
}
tr3=tr2-b2*(tr2-tr1)/(b2-b1);
b1=b2;
tr1=tr2;
tr2=tr3;
if (b2*b2<0.001){
t1=1000;
}
t1=t1+1;
}
tr=tr2;
wel=0;
for (s1=1;s1<11;s1++){
for (s2=1;s2<11;s2++){
w1=(1-tk)*th1[s1];
w2=(1-tl)*th2[s2];
l1=1-(w1+w2+tr)/(3*w1);
l2=1-(w1+w2+tr)/(3*w2);
i=0;
if (l1<0){
i=i+1;
}
if (l2>0){
i=i+1;
}
if (i==2){
l1=0;
}
if (i==2){
l2=(w2-tr)/(2*w2);
}
i=0;
if (l1>0){
i=i+1;
}
if (l2<0){
i=i+1;
}
if (i==2){
l1=(w1-tr)/(2*w1);
}
if (i==2){
l2=0;
}
c1=w1*l1+w2*l2+tr;
wel=wel+Math.log(c1)+Math.log(1-l1)+Math.log(1-l2);
}
}
if (wel>maxwel){
maxtk=tk;
}
if (wel>maxwel){
maxtl=tl;
}
if (wel>maxwel){
maxtr=tr;
}
if (wel>maxwel){
maxwel=wel;
}
System.out.println(maxtk);
}
}
最終更新:2009年12月13日 10:18