function talagen(m0,n0) global m n randomize m = m0; n = n0; global pstr pstr = mfilename global lstr rstr global U P0 P 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; Aeq = zeros(1,xdim); Aeq(1:pdim) = oo'; Beq = 1; global maxr maxr = 0; global F F = fillsupsuma(m,n); while 1 P = unifP(m,n); y = fmincon(@myobj,P,[],[],Aeq,Beq,LB,UB); fprintf('%s: PARAMS: n=%d m=%d; \n',pstr,n,m); fprintf('maxr _________________________ maxr = %1.9f \n',maxr); end return function y = myobj(x) global m n global F global pstr P = makepos(x); [hh,Ht,H] = gethhn(P,m,n); hh = hh+eye(n); H2 = (max(eig(hh'*hh))); %look at the first m-gale diff i=1; global maxr %%[Ef,K] = condexp(P,F,Xt,m,n) %Ef0 = condexp(P,F,[],m,n); %for y=m % Ef1 = condexp(P,F,y,m,n); % d = abs(Ef1-Ef0); % r = d/Ht(1); [d,dd] = sumsqmdif(P,F,m,n); %r = max(dd./Ht); %d1 = mxvi(P,F,m,n,1); %r = d1/Ht(1); r = sum(dd.^2)/H2; y = -r; if (r > maxr) global maxP maxP = P; maxr = r; fprintf('%s: PARAMS: n=%d m=%d; \n',pstr,n,m); fprintf('maxr _________________________ maxr = %1.9f \n',maxr); end %end return