How to solve multi objective problem (Goal Programming) in Matlab
27 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Matt J
el 13 de Feb. de 2019
Abolade Omiyale commented:
Please, I need a sample Matlab code for a goal programming formulation.
Walter Roberson
el 16 de Feb. de 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()
Respuestas (3)
Walter Roberson
el 3 de Jun. de 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 comentarios
zainab embaby
el 17 de Jul. de 2017
i want to clarify how solve that problem maximization and minimization in one objective by matlab program
3 comentarios
Walter Roberson
el 23 de Jul. de 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
el 23 de Jul. de 2017
i want to know formulation deviations simplex method by matlab solver.
3 comentarios
Walter Roberson
el 23 de Jul. de 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
el 23 de Jul. de 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.
Ver también
Categorías
Más información sobre Solver Outputs and Iterative Display en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!