Multi objective optimization with intlinprog

조회 수: 15 (최근 30일)
Koustubh  Gaikwad
Koustubh Gaikwad 2015년 2월 25일
답변: Alberto Chavez 2020년 2월 27일
Hello,
My problem is a linear optimization problem with integer values, so I followed from http://www.mathworks.com/help/optim/ug/intlinprog.html and was able to make it work just I way I want it. Now I have two optimization functions and the remaining problem is the same. Multi objective optimization works fine on http://www.mathworks.com/help/gads/examples/performing-a-multiobjective-optimization-using-the-genetic-algorithm.html. Hoever, I need to do the ssamre with integer values.
Is this possible using intlinprog?
Thanks

답변 (2개)

Matt J
Matt J 2015년 2월 25일
편집: Matt J 2015년 2월 25일
One possibility is to apply your own manual scalarization scheme, e.g.,
weights=linspace(0,1,10);
for i=1:length(weights)
alpha=weight(i);
f=alpha*Objective1+(1-alpha)*Objective2;
[X(i,:), Fval(i,:)]= intlinprog(f,...);
end
  댓글 수: 3
Victor Hugo Cantú
Victor Hugo Cantú 2019년 9월 26일
I'm trying to solve a linear programming with two objectives. For one objective the code works pretty good using "linprog".
For two objectives, I already coded the weighted sum approach, similar to the one you proposed, and it works well. However, I would like to use another scalarization approach, i.e., Tchebycheff or AASF. For nonlinear functions, "fmincon" works well, but with "linprog" I'm having troubles to code it, mainly because the objective function is represented as the coefficients of the function. Is there any other way to send "f" to "linprog" instead of a vector of coefficients ?
Here I put an example of how Tcehebycheff works for "fmincon":
function f = fun(x,z,A)
f1 = sum(x.^2,2);
f2 = 3*x(:,1) + 2*x(:,2) - x(:,3)/3 + 0.01*(x(:,4) - x(:,5)).^3;
f = max((f1 - z(1))*A(1), (f2 - z(2))*A(2));
% f = f1*A(1) + f2*A(2); % for weighted sum approach
end
where z is the ideal point, a vector of objectives in which each element is the best solution found for every objective up to now (for being used for evolutionary algorithms). Even if one does not use the z, I see difficult how to transfert the f to "linprog":
f = max(f1*A(1), f2*A(2));
It is to note again, that f is a vector of coefficients.
Thank you in advance.
Matt J
Matt J 2019년 9월 26일
편집: Matt J 2019년 9월 26일
See my answer to your post
Note, the way you use fmincon is not to be trusted because it is applied to a non-differentiable objective.

댓글을 달려면 로그인하십시오.


Alberto Chavez
Alberto Chavez 2020년 2월 27일
This may be a little bit late, but have you tried the constraint method for your multi-objective optimization?, If you indicate your first function as your new constraint (for second objective) and the optimized first value as your new equality/inequality, that may serve to calculate new objectives while maintaining the optimal on the first functions. You may say that your "weights" is the order in which you solve each objective.

카테고리

Help CenterFile Exchange에서 Surrogate Optimization에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by