function johnmetric(m0,n0) global m n randomize m = m0; n = n0; global pstr pstr = mfilename global lstr rstr global U U = ones(m^n,1); U = U/sum(U); global dorat dorat = 1; 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 Ainf Binf mylinopt mylinopt = optimset('Diagnostics','off'); mylinopt = optimset('Display','off'); fdim = m^n; xdim = fdim; LB = zeros(xdim,1); UB = 0*LB + 1e7; global maxr maxr = 0; global CW W while 1 % pick a CW CW = zeros(m,m,n); NI = 1-eye(m); for i=1:n Ci = rand(m); Ci = (Ci+Ci')/2; Ci = Ci .* NI; CW(:,:,i) = Ci; end W = rand(n,1); [Ainf,Binf] = lipabcw(m,n,CW); %[Ainf,Binf] = lipabw(m,n,W); F = randlip; x = [F(:)]; y = fmincon(@myobj,x,Ainf,Binf,[],[],LB,UB); fprintf('%s: PARAMS: n=%d m=%d \n',pstr,n,m); fprintf('aRATIO_________________________ (%s)/(%s); maxr = %1.9f \n',lstr,rstr,maxr); end return function y = myobj(x) global m n global lstr rstr global pstr pdim = m^n; fdim = m^n; xdim = fdim; global U CW W F = x; %for i=1:n i = 1; maxd = 0; for xi=1:m^i x = i2c(xi,m,i); [Ef1,K] = condexp(U,F,x ,m,n); [Ef0,K] = condexp(U,F,x(1:end-1),m,n); d = abs(Ef1-Ef0); maxd = max(d,maxd); end lstr = 'maxd'; %sumc = sum(sum(sum(CW)))/(m^2-m)/n; sumci = sum(sum(CW(:,:,i)))/(m^2-m); %maxc = max(CW(:)); Ci = CW(:,:,i); [U,margs] = prodmeas(U,m,n); Pi = margs(:,i); maxcp = max(Ci*Pi); maxci = max(Ci(:)); %rstr = 'sumci'; %rstr = 'maxci'; rstr = 'maxcp'; %Wi = W(i); %rstr = 'Wi'; lhs = eval(lstr); rhs = eval(rstr); global maxr r = lhs/rhs; y = -r; if (r > maxr) global maxrP maxrF maxrC maxrW maxrF = F; maxr = r; maxrC = CW; maxrW = W; save JOHN F m n maxr CW W fprintf('%s: PARAMS: n=%d m=%d \n',pstr,n,m); fprintf('bRATIO_________________________ (%s)/(%s); maxr = %1.9f \n',lstr,rstr,maxr); end return function phi = randlip global Ainf Binf m n mylinopt K = genK(m,n); [x,fval] = linprog(-K,Ainf,Binf,[],[],0*K,0*K+n*10,0,mylinopt); phi = x'; return function c=i2c(i,m,n) %global m n dims = repmat(m,[1 n]); c = ind2coord(i,dims); return