How to solve multi objective problem (Goal Programming) in Matlab

34 次查看(过去 30 天)
I have a multi objective problem (Goal Programming)...
Maximise Z = 3x + 4y
Minimise Z = 5x +6y
Subject to constraints
x + 4y less than equal to 20
6x + 3y less than equal to 10
Can we solve this problem in Matlab

回答(3 个)

Walter Roberson
Walter Roberson 2017-6-3
No. The problem does not define how to decide between maximizing Z = 3x + 4y and minimizing Z = 5x + 6y .
The constraints do not establish a region in which there is a unique solution to maximizing the one and minimizing the other.
The constraints also do not rule out any x or y range: you can have an indefinitely positive x as long as you have a correspondingly negative y, and you can have an indefinitely positive y as long as you have a correspondingly negative x.

zainab embaby
zainab embaby 2017-7-17
i want to clarify how solve that problem maximization and minimization in one objective by matlab program
  3 个评论
Walter Roberson
Walter Roberson 2017-7-23
To solve a maximization in MATLAB, take the negative of the objective function and minimize that.
There is no general way to "solve two objectives or more in one objective by matlab". You need to decide how to weight satisfaction of the objectives based upon your needs.
Yesterday we had someone who wanted to simultaneously optimize a function that was non-linear over -1 to +1 (with +1 being better), with a second function that could be 0 to infinity (with infinity being better.) A change of .1 from =1 to -0.9 in the first function might be trivial; a change from 500 to 1000 in the second function might be trivial; a change from 0.98 to 0.99 in the first function might be hard and represent significant progress. There is no way that MATLAB can know how the changes in two functions matter relative to each other.
The cases of [-1 +1] compared to [0 +inf) are difficult to automatically compare in any way. If you have two finite ranges then you can scale and translate to produce two [0 to 1] ranges to compare the two. You cannot do that if one of the ranges is infinite: scaling by infinity gives you 0 at every finite value. And dealing with two potentially infinite quantities... how do you compare their relative importances?
Your particular situation involves two functions that are potentially infinite, so no automatic scaling is possible. The two functions work opposite to each other: the more negative one is, the more positive the other can be, and vice versus. Maximizing one forces it toward infinity, and how do you balance that against trying to maximize the other one?
The only semi-coherent guess would be to ask that the two functions be equal if you cannot maximize them simultaneously. And if you ask that then you can reduce down to a single equation.

请先登录,再进行评论。


zainab embaby
zainab embaby 2017-7-23
i want to know formulation deviations simplex method by matlab solver.
  3 个评论
Walter Roberson
Walter Roberson 2017-7-23
In the past, linprog() supported a simplex algorithm. It does not do so in current releases, but current releases do support a dual-simplex algorithm. https://www.mathworks.com/help/optim/ug/linprog.html#inputarg_options
fminsearch uses Nelder-Mead simplex.
For more information on simplex searching in Mathwork-provided optimizers, see the discussions at https://www.mathworks.com/matlabcentral/answers/287850-improving-nelder-mead-optimization-by-genetic-algorithms-and-simulated-annealing-concepts
Walter Roberson
Walter Roberson 2017-7-23
"i ask and i need answer"
You left the question sit for over a month and a half, and then you suddenly start pushing for rapid response, on what is a Sunday afternoon in the timezone of most of the active volunteers. :( If you need that kind of rapid response at inconvenient hours then you should be hiring a consultant and paying priority prices.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Solver Outputs and Iterative Display 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by