function jointconc(m0,n0) global m n randomize m = m0; n = n0; global pstr pstr = mfilename global lstr rstr global maxr maxr = 0; xdim = m^n; LB = zeros(xdim,1)+1e-9; UB = 0*LB + 1; Aeq = ones(1,xdim); Beq = 1; global iic while 1 %iic = randcomb(n,floor(n/2)); %iic = 1:floor(n/2); iic = [3 4]; %iic = [1 2]; P = unifP(m,n); P = fmincon(@myobj,P,[],[],Aeq,Beq,LB,UB); fprintf('%s: PARAMS: n=%d m=%d \n',pstr,n,m); fprintf('RATIO_________________________ maxr = %1.9f \n',maxr); end return function y = myobj(x) global m n global iic P = makepos(x); global lstr rstr pstr [hh,Ht,H] = gethhn(P,m,n); joinh = hh(1,2); %n1 = floor(n/2); %Pii = getmargX(P,m,n,[1:n1]); Pii = getmargX(P,m,n,iic); [hh,Ht,H] = gethhn(Pii,m,length(iic)); margh = hh(1,2); lstr = 'margh'; rstr = 'joinh'; lhs = eval(lstr); rhs = eval(rstr)+1e-9; global maxr r = lhs/rhs; y = -r; if (r > maxr) global maxrP maxrP = P; maxr = r; fprintf('%s: PARAMS: n=%d m=%d \n',pstr,n,m); fprintf('RATIO_________________________ maxr = %1.9f \n',maxr); %if r > 2 % keyboard % save BADJOINCONC m n P r %end end return function jointconc0 %(m,n) m = 2; n = 6; while 1 P = unifP(m,n); [hh,Ht,H] = gethhn(P,m,n); jointh = hh(1,2) n1 = floor(n/2); Pii = getmargX(P,m,n,[1:n1]); [hh,Ht,H] = gethhn(Pii,m,n1); margh = hh(1,2) if jointh+1e-9 < margh 'bad' keyboard end end return