function oldpsi(m0,n0) global m n randomize m = m0; n = n0; global pstr pstr = mfilename global lstr rstr global Ainf Binf mylinopt mylinopt = optimset('Diagnostics','off'); mylinopt = optimset('Display','off'); [Ainf,Binf] = lipab(m,n); global U P0 P = ones(m^n,1); P = P/sum(P); zz = P*0 + 1e-12; oo = P*0+1; U = P; P0 = P; global LB UB pdim = m^n; xdim = pdim; LB = zeros(xdim,1); UB(1:pdim) = zz; UB = LB*0; UB(1:pdim) = oo; Aeq0 = zeros(1,xdim); Aeq0(1:pdim) = oo'; global maxr maxr = 0; while 1 % pick an arb. marg. distr. %Pmarg = getmargs(P,m,n); %Pmarg = pnormdim(rand(m,n),1); %Pmarg = pnormdim(ones(m,n),1); %P = randgivenmarg(m,n,Pmarg); P = unifP(m,n); % and corresponding marg. distr %U = prodmeas(P,m,n); %U = P0; % constrain P to have these marginals %[Aeq,Beq] = constrain_marg(m,n,Pmarg); %Aeq = [Aeq;Aeq0]; %Beq(end+1)=1; Aeq = Aeq0; Beq = 1; x = P(:); y = fmincon(@myobj,x,[],[],Aeq,Beq,LB,UB); fprintf('%s: PARAMS: n=%d m=%d; \n',pstr,n,m); fprintf('RAT _________________________ maxr = %1.9f \n',maxr); end return function y = myobj(x) global m n global Ainf Binf mylinopt global lstr rstr global LB UB saf raf global islip global Lipk global dorat global pstr pdim = m^n; xdim = pdim; P = x(1:pdim); P = makepos(P); %global U U = prodmeas(P,m,n); [hh,Ht,H] = gethhn(P,m,n); K = P - H*U; lhs = Psi(K,m,n); [x,fval] = linprog(-K,Ainf,Binf,[],[],0*K,0*K+n,0,mylinopt); lhs = -fval; rhs = H; r = lhs/rhs; y = -r; global maxr if (r > maxr) global maxP maxP = P; maxr = r; fprintf('%s: PARAMS: n=%d m=%d; \n',pstr,n,m); fprintf('RAT _________________________ maxr = %1.9f \n',maxr); end return