function hconvcheck global m n mrat m=2; n=2; mrat = 0; xdim = 2*m^n + 1; Aeq = zeros(2,xdim); Aeq(1,1:m^n) = Aeq(1:m^n) + 1; Aeq(2,m^n+1:2*m^n) = Aeq(2,m^n+1:2*m^n) + 1; Beq = ones(2,1); LB = zeros(xdim,1); LB = LB+1e-9; LB(1:2*m^n) = LB(1:2*m^n) + 0.05; UB = ones(xdim,1); while 1 P1 = pnormdim(rand(m^n,1),1); P2 = pnormdim(rand(m^n,1),1); lam = rand; x = [P1;P2;lam]; [x,fv] = fmincon(@myopt,x,[],[],Aeq,Beq,LB,UB); fprintf('mrat = %1.9f \n',mrat); end return function y = myopt(x) global m n mrat P1 = x(1:m^n); P2 = x(m^n+1:2*m^n); lam = x(end); [hh1,Ht1,H1] = gethhn(P1,m,n); [hh2,Ht2,H2] = gethhn(P2,m,n); P3 = lam*P1 + (1-lam)*P2; HL = lam*H1 + (1-lam)*H2; [hh3,Ht3,H3] = gethhn(P3,m,n); r = H3 / HL; if r > mrat global mP1 mP2 mLam mrat = r; mP1 = P1; mP2 = P2; mLam = lam; fprintf('mrat = %1.9f \n',mrat); save HCC P1 P2 lam mrat end y = r; return