python3 - <<'PY' import math ln2=math.log(2) def f(x): return 0.0 if x<=0 else -x*math.log(x)/ln2 def H(x): return f(x)+f(1-x) def obj(v): u,al,be,ga,de,s=v if min(u,al,be,ga,de,s)<0 or max(al,be,ga,de,s)>1: return 1e9 den=ga*de if den<1e-12: return 1e9 w=(3-u*al*be)/den if w<-1e-9: return 1e9 w=max(w,0) b12=u*al*(1-be)+w*ga*(1-de);b21=u*(1-al)*be+w*(1-ga)*de;b22=u*(1-al)*(1-be)+w*(1-ga)*(1-de) if b12>3+1e-9 or b21>1+1e-9 or b22>1+1e-9: return 1e9 A1=3-b12;C1=1-b21;R=1-b22;A2=s*R;C2=(1-s)*R pA=9+A1+A2;pC=3+C1+C2 HX=(pA/20)*(f(9/pA)+f(A1/pA)+f(A2/pA))+(u/20)*H(al)+(w/20)*H(ga) HY=(u/20)*H(be)+(w/20)*H(de)+(pC/20)*(f(3/pC)+f(C1/pC)+f(C2/pC)) return 2.1822287-HX-HY def golden(fun,a,b,tol=1e-12): g=(math.sqrt(5)-1)/2;c=b-g*(b-a);d=a+g*(b-a);fc=fun(c);fd=fun(d) while b-a>tol: if fc