How to solve multi objective problem (Goal Programming) in Matlab
33 views (last 30 days)
Show older comments
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
2 Comments
Matt J
on 13 Feb 2019
Abolade Omiyale commented:
Please, I need a sample Matlab code for a goal programming formulation.
Walter Roberson
on 16 Feb 2019
https://www.mathworks.com/help/optim/examples/multi-objective-goal-attainment-optimization.html shows an example of using fgoalobtain()
https://www.mathworks.com/help/gads/gamultiobj.html#bvf79ug-4 shows examples of gamultiobj()
Answers (3)
Walter Roberson
on 3 Jun 2017
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.
0 Comments
zainab embaby
on 17 Jul 2017
i want to clarify how solve that problem maximization and minimization in one objective by matlab program
3 Comments
Walter Roberson
on 23 Jul 2017
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
on 23 Jul 2017
i want to know formulation deviations simplex method by matlab solver.
3 Comments
Walter Roberson
on 23 Jul 2017
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
on 23 Jul 2017
"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.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!