Dynamic-Calibration/utils/YALMIP-master/operators/max_integer_model.m

25 lines
477 B
Mathematica
Raw Normal View History

2019-12-18 11:25:45 +00:00
function F = max_integer_model(X,t);
[M,m] = derivebounds(X);
if all(M==m)
F = [t == max(M)];
return
end
n = length(X);
d = binvar(n,1);
F = (sum(d)==1);
F = F + (-(max(M)-min(m))*(1-d) <= t-X <= (max(M)-min(m))*(1-d));
kk = [];
ii = [];
for i = 1:n
k = [1:1:i-1 i+1:1:n]';
ii = [ii;repmat(i,n-1,1)];
kk = [kk;k];
Mm = M(k)-m(i);
end
xii = extsubsref(X,ii);
dii = extsubsref(d,ii);
xkk = extsubsref(X,kk);
F = F + (xkk <= xii+(M(kk)-m(ii)).*(1-dii));