How to get intlinprog to stop when the answer is good enough?
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Jonathan
am 28 Mär. 2020
Kommentiert: Alan Weiss
am 31 Mär. 2020
The code below finds an maximum independent set of the graph whose adjacency matrix is A. I would like to pass an option to intlinprog that says stop and return an answer if you get an objective value of -5 or less (meaning an independent set of size 5 or more has been found). This should be much more efficient than finding an independent set of maximum size.
If there is no option to pass to intlinprog that can accomplish my goal, then is there another approach that will?
n = 20;
A = rand(n, n) < 0.1;
A = A | A.';
[r, c] = find(A);
m = numel(r);
B = zeros(m, n);
for eI = 1 : m
B(eI, [r(eI), c(eI)]) = 1;
end
b = ones(m, 1);
c = -ones(n, 1);
% min cost.' * x subject to A * x <= b, x(i) is 0 or 1 for all i.
lb = zeros(n, 1);
ub = lb + 1;
intvars = 1 : n;
options = optimoptions('intlinprog','Display','off');
[x, fval, exitflag, output] = intlinprog(c, intvars, B, b, [], [], lb, ub, options);
0 Kommentare
Akzeptierte Antwort
Alan Weiss
am 29 Mär. 2020
You can create an intlinprog output function to stop the optimizaiton when the objective function value goes below a set limit such as -5. Ensure that the phase is not 'rootlp' when you check the objective function value.
Alan Weiss
MATLAB mathematical toolbox documentation
2 Kommentare
Alan Weiss
am 31 Mär. 2020
Thank you for the suggestion. I will consider putting this in the next documentation release.
Alan Weiss
MATLAB mathematical toolbox documentation
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Surrogate Optimization finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!