python3 <<'PY' import math,random a=0.25; b=1.0/12 def bestK(y1,y2,K=4,N=150000): alpha=2*a+2*b-y1-y2; mu1=a+b-y1; nu1=a+b best=-1 for _ in range(N): w=[random.random() for i in range(K)]; sw=sum(w); q=[alpha*v/sw for v in w] u=[random.random() for i in range(K)]; su=sum(u); aa=[mu1*v/su for v in u] if any(aa[i]>q[i]+1e-12 for i in range(K)): continue r=[aa[i]/q[i] for i in range(K)] c1=random.random()*min(q[0],nu1); c2=random.random()*min(q[1],nu1-c1) R=nu1-c1-c2; T=a-r[0]*c1-r[1]*c2 if abs(r[2]-r[3])<1e-14: continue c3=(T-r[3]*R)/(r[2]-r[3]); c4=R-c3 cc=[c1,c2,c3,c4] if any(cc[i]<-1e-10 or cc[i]>q[i]+1e-10 for i in range(K)): continue val=0.0 for i in range(K): qi=q[i]; ai=aa[i]; ci=cc[i] bi=qi-ai; di=qi-ci val+=math.sqrt(max(0,a*ai*ci))+math.sqrt(max(0,b*ai*di))+math.sqrt(max(0,b*bi*ci))+math.sqrt(max(0,a*bi*di)) if val>best: best=val return best for y1,y2 in [(0.035,0.095),(0.02,0.22),(0.0,0.0),(0.0,0.2)]: print(y1,y2,bestK(y1,y2,4,100000)) PY