我一直在浏览Matlab的[混合]整数线性程序([M] ILP)命令/类文档,以查看是否存在定义“优化问题”(optimproblem
)的方法并调出使用API而不是使用本地intlinprog
到外部[M] ILP求解器。我还没有发现任何可能的指示,只是没有将问题转换为基于矩阵/求解器的格式(prob2struct
)并创建了我自己的中间ILP数据文件。那超出了我的意愿。
实际上没有办法直接调用第三方求解器吗?
如果可以的话,有人可以将我定向到正确的文档页面吗?
如果实际上没有办法,请有人确认吗?
谢谢。
说明:问题强调使用optimproblem
我很感谢迄今为止的回答和评论,但我从中意识到,我需要强调问题中的关键点。我的目标是利用optimproblem
的高级问题规范,该规范使用Matlab的数组语法来紧凑地表示大量约束,冗长的内积和目标函数。这就是所谓的problem-based方法,类似于AMPL的高级方法。
相比之下,我对第三方求解器上的引用文档的初次浏览的印象是它们的输入处于较低的抽象级别。这就是所谓的solver-based方法,由于以下原因,同事们也将其称为“矩阵级别”:假定原型数组x,Aeq,beq,Aineq,bineq等已经存在。组成,并且由分析师决定跟踪x中的哪些元素对应于哪些(更多)实际参数,即基于问题的方法中的参数。
我希望有一种使用optimproblem
的方法并使它使用第三方求解器,这样我就不必处理矩阵级别了。后者的一个示例是使用prob2struct
生成数组,以通过Matlab API(如果有)将其显式传递给外部求解器。我想避免这种情况,因为我不想跟踪哪个基于问题的变量映射到哪个基于求解器的变量,特别是因为前者通常是高维的。诚然,varindex
简化了簿记,但更不必为这种簿记编写代码。
答案 0 :(得分:1)
使用基于问题的方法设置您的问题。使用 prob2struct 并使用外部求解器求解。通过 mapSolution 函数将解决方案转换回使用基于问题的方法的解决方案。
https://uk.mathworks.com/help/optim/ug/optim.problemdef.optimizationproblem.mapsolution.html
答案 1 :(得分:0)
是的-各种第三方优化求解器都有MATLAB API。例如,CPLEX和Gurobi都具有MATLAB API。但是您通过它们自己的函数调用而不是通过{% if header_type == "header1" %}
{% include '/header_1.html' %}
{% endif %}
{% if header_type == "header2" %}
{% include '/header_2.html' %}
{% endif %}
来调用它们。
答案 2 :(得分:0)
根据TMW,目前(2019年5月30日)答案为“否”。