Discrete Optimization
26 views (last 30 days)
Show older comments
Hi, is it possible to make an optimization with Matlab using discrete variable? Which kind of function can make it?
Thanks
2 Comments
Walter Roberson
on 14 Aug 2011
Duplicate is at http://www.mathworks.com/matlabcentral/answers/13640-genetic-algorithm-optimization
Answers (3)
Walter Roberson
on 10 Nov 2020
ga() and gamultiobj() support discrete variables with general functions.
intlinprog supports discrete variables with matrix instead of function describing the objective.
There is some work with quadratic optimization that I had the impression could handle discrete variables when using Problem Based Optimization, but I did not track down which solver it uses.
3 Comments
Walter Roberson
on 10 Nov 2020
"Mixed-Integer Quadratic Programming Portfolio Optimization: Problem-Based"
Bruno Luong
on 10 Nov 2020
Edited: Bruno Luong
on 10 Nov 2020
It's interesting, but sorry it's not a solver. It's an example of how to solve a particular MIQP using relaxation. And this page one can read the warning "While this technique works for this example, it might not apply to different problem or constraint types.'
btw this technique can be well implemented with solver-based approach. This page just uses problem-based for illustration, but it is not a requirement.
It's like saying quadprog is a non-linear solver since newton method solves quadratic subproblem at each step, or mtimes is linear system solver since Gauss-Seidel relaxation method requires matrix-vector multiplication at each step.
MATLAB lacks a real MIQP solver.
PA00
on 14 Aug 2011
Can you expose more your problem? You can use "bintprog" when state variables are "1" or "0" like on or off but the method of optimization always depends on the problem itself and on the way you find to create a function to be minimized.
0 Comments
See Also
Categories
Find more on Linear Least Squares in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!