Transforming Optimization Code from Problem-Based to Solver-Based Approach in MATLAB
古いコメントを表示
Hello,
I have successfully implemented an ILP problem using MATLAB's problem-based optimization approach. However, I am now looking to switch to the solver-based approach to take advantage of its flexibility and efficiency.
In the problem-based approach, I defined binary decision variables, constraints, and an objective function using optimvar, optimconstr, and optimexpr. The code works well, but I need guidance on how to transform this code into a solver-based format using intlinprog.
Here’s a summary of what I have:
Decision Variables:
A 3D binary matrix A(N, numNodes, num_vehicles) for task assignment.
A binary vector chi(num_vehicles) for satisfaction.
Other binary variables like z, t_wait_aux, etc.
Constraints:
Assignment constraints, dependency constraints, and time-based constraints.
I linearized expressions using auxiliary variables and max constraints.
Objective Function:
The objective is to maximize the satisfaction rate, expressed as a linear function of chi.
Could you provide guidance or directions how to systematically convert my existing problem-based variables and constraints into the matrix form required by intlinprog
Here is the code
the problem is attached.
Thank you for your continued help!
run('MyProblem.m')
6 件のコメント
Didn't you have this problem in solver-based form approximately a year ago ? My guess was you wanted to try the problem-based approach starting from the solver-based formulation now ...
It will be hard to change or add anything in the solver-based formulation after applying "prob2struct" for a complex model. So I doubt you will profit from a conversion.
Maria
2024 年 8 月 16 日
Torsten
2024 年 8 月 16 日
If your problem works in the problem-based formulation, "prob2struct" should work because it's exactly this formulation that is used to solve the problem within the MATLAB environment. Simply speaking: "prob2struct" translates your problem-based commands in MATLAB code that can be used with optimization solvers like "intlinprog", "fmincon", "ga" ,etc.
What I meant to say is that your problem is so complicated that you won't profit from the answer you get from "prob2struct" because you won't understand it.
Steven Lord
2024 年 8 月 16 日
Yes it doesn't work ‘prob2struct’,
What specifically does "doesn't work" mean in this context?
- Do you receive warning and/or error messages? If so the full and exact text of those messages (all the text displayed in orange and/or red in the Command Window) may be useful in determining what's going on and how to avoid the warning and/or error.
- Does it do something different than what you expected? If so, what did it do and what did you expect it to do?
- Did MATLAB crash? If so please send the crash log file (with a description of what you were running or doing in MATLAB when the crash occured) to Technical Support so we can investigate.
I see you posted an error message, but that doesn't seem to me to be related to a call to prob2struct. You just didn't provide the definition of that function in your MyProblem.m file.
Maria
2024 年 8 月 16 日
Maria
2024 年 8 月 16 日
回答 (1 件)
Matt J
2024 年 8 月 16 日
0 投票
See prob2struct
3 件のコメント
Maria
2024 年 8 月 16 日
@Maria That's not what @Torsten said. He said that he doesn't recommend moving to solver-based form at all because it is hard to make changes once the problem is in that form.
If solve() works on the problem-based formulation then prob2struct has to work. All that solve() really does internally is convert to solver-based form for you (probably using prob2struct) and then run a traditional solver.
Maria
2024 年 8 月 16 日
カテゴリ
ヘルプ センター および File Exchange で Problem-Based Optimization Setup についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!