function phi = extremizf(phi,m,n) global nstate nstate = m; y = zeros(1,n); dims = repmat([m],[1 n]); xx = list_all_ind(repmat([m],[1 n-1])); global FN FN{n} = phi; %r = rand; r = 1; for i=1:n r = rand; %r=0; %r = mod(i,2); for xind = 1:size(xx,1) xl = xx(xind,1:i-1); xr = xx(xind,i:n-1); fv = []; for xj = 1:m x = [xl xj xr]; fv(end+1) = F(x); end [a,mind] = min(fv); [A,Mind] = max(fv); if A-a > 1-1e-7 for xj = 1:m x = [xl xj xr]; xind = coord2ind(x,dims); fv = F(x); if 0 % these are arbitrary if abs(fv-a)<1e-8 phi(xind) = a; elseif abs(fv-A)<1e-8 phi(xind) = A; else % phi(xind) = a; % if 1 r = rand; if r<.5 phi(xind) = a; else phi(xind) = A; end %phi(xind) = r*a + (1-r)*A; %end end else % not arbitrary if abs(fv-a) < abs(fv-A) % closer to min phi(xind) = a; else % closer to max phi(xind) = A; end end end %break; else % end FN{n} = phi; end end return function r = F(x) global nstate lenseq = length(x); global FN FF = FN{lenseq}; ind = coord2ind(x,(repmat(nstate,1,lenseq))); r = FF(ind); return