Does MATLAB have a mixed-integer optimization feature that uses metaheuristic algorithms?
古いコメントを表示
I am interested in optimization and know that MATLAB has a built-in metaheuristic algorithm that can be utilized. I have worked with some of these algorithms, such as Genetic Algorithms (GA) and Particle Swarm Optimization (PSO). However, I believe they are typically designed to solve problems with a single type of decision variable.
I am currently working on a problem that involves multiple types of decision variables, including binary, integer, and continuous variables. Can this kind of problem be effectively solved using a heuristic approach?
14 件のコメント
Torsten
2025 年 2 月 3 日
I don't know if you would call it efficient, but "ga" can if you have no nonlinear equality constraints that you want to define in "nonlcon".
Walter Roberson
2025 年 2 月 3 日
ga() and gamultiobj() and intlinprog() are designed for mixed-integer programming.
binary decision variables are integer decision variables over [0 1]
M.Sattar
2025 年 2 月 6 日
Mike Croucher
2025 年 2 月 6 日
To add to these, binary problems can be solved with QUBO, part of the quantum computing support package. The algorithm employed is called Tabu Search which is meta heuristic.
Walter Roberson
2025 年 2 月 7 日
No, QUBO is purely for binary decision variables.
Walter Roberson
2025 年 2 月 8 日
Note that QUBO involves a matrix representation of the objective, not a function-handle representation.
I wonder if the binary variables can be treated as specially constrained integer variables. If so, then the problem is essentially of mixed-integer programming type. The second part of this example shows how to solve a surrogate optimization problem that involves mixed integer and real variables.
Walter Roberson
2025 年 2 月 8 日
It should certainly be possible to treat binary variables as integer variables constrained to [0 1]
M.Sattar
2025 年 2 月 8 日
As said, you can handle these variables by setting bounds in MATLAB's "ga":
x1 and x2: Set intcon and lb = 0, ub = 1
x3 and x4: Set intcon and lb = 0
x5 and x6: Set intcon and lb = 1, ub = number of values x5 and x6 can take and identify 0 with 1, 0.5 with 2, 1.2 with 3 etc. in the objective function.
Here is a helpful page with the available software for certain problem classes and benchmark tests of commercial and non-commercial solvers:
採用された回答
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Linear Programming and Mixed-Integer Linear Programming についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!