function [A,fval,f] = mylpn2bs(h) % wrong stricture %global A0 global C global nstate C = zeros(nstate,1); C(2)=1; m = nstate; % box constraints LB = zeros(m^2,1); UB = ones(m^2,1); % normalization constraints Aeq = zeros(m,m^2); for i=1:m for j=1:m Aeq(i,m*(i-1)+j) = 1; end end Beq = ones(m,1); Ain = zeros(m*m*(m-1),m^2); rind = 0; for i1 = 1:m for i2 = i1+1:m for j=1:m ind1 = coord2ind([j i1],[m m]); ind2 = coord2ind([j i2],[m m]); for s = [-1,1] rind = rind+1; Ain(rind,ind1) = s; Ain(rind,ind2) = -s; end end end end Bin = ones(size(Ain,1),1)*h; %A1 = pnormdim(rand(m,m),1); A1 = pnormdim(ones(m,m),1); f = zeros(m^2,1); for j=1:m indf = coord2ind([j 1],[m m]); c = sum(C(2:end))*F([1 j]); f(indf) = c; end for i=2:m for j=1:m indf = coord2ind([j i],[m m]); c = C(i)*F([2 j]); f(indf) = -c; end end %keyboard x0 = [A1(:)]; [xp,fvalp] = linprog( f,Ain,Bin,Aeq,Beq,LB,UB); [xn,fvaln] = linprog(-f,Ain,Bin,Aeq,Beq,LB,UB); if abs(fvalp)>abs(fvaln) x = xp; fval = fvalp; else x = xn; fval = fvaln; end A = reshape(x(1:nstate^2),[nstate nstate]); %keyboard return %function [h,i1,i2] = strict(A) function h = strict(x) A = reshape(x(1:nstate^2),[nstate nstate]); [n,n,T] = size(A); h = 0; i1 = 0; i2 = 0; for t=1:T for i=1:n %for i=1 for j=i+1:n x = A(:,i); y = A(:,j); d = .5*sum(abs(x-y)); if d>h i1=i; i2=j; h=d; end end end end return function r = F(x) %r = length(find(x~=1)); %return global nstate lenseq = length(x); global FN FF = FN{lenseq}; ind = coord2ind(x,(repmat(nstate,1,lenseq))); r = FF(ind); return function f = Yext global nstate C = zeros(nstate,1); C(2)=1; m = nstate; f = zeros(m^2,1); for j=1:m indf = coord2ind([j 1],[m m]); c = sum(C(2:end))*F1([1 j]); f(indf) = c; end for i=2:m for j=1:m indf = coord2ind([j i],[m m]); c = C(i)*F1([2 j]); f(indf) = -c; end end return function r = F1(x) r = length(find(x~=1)); return