【问题标题】:Cplex optimality target setting in matlabmatlab中的Cplex最优目标设置
【发布时间】:2019-04-04 05:42:22
【问题描述】:

我正在尝试在 matlab 中使用 CPLEX (cplexqp) 解决一个大的二次优化问题。不幸的是,H 矩阵(或某些来源称之为 Q 矩阵)本质上是非凸的,因此我想将最优目标从 0(默认)设置为 3,以告诉 CPLEX 在发现 Q 是非凸的时不要终止.但是,我不确定如何执行此操作。我试图阅读手册和说明,他们都只是说设置最优目标 = 2 或 3,而没有任何实际示例或有关如何执行此操作的一般命令。我尝试在选项中执行此操作,但收到 CPLEX 无法识别 'optimalitytarget' 的错误。

options = cplexoptimset('Display','on','TolFun',0.0000001,'TolRLPFun',0.0000001,'MaxNodes',50000,'MaxIter',50000, 'optimalitytarget',3);

我也试过了:

Cplex = cplexoptimset('cplex')
Cplex.Param.optimalitytarget = 3;

没有任何成功。我知道 API 是 Cplex.Param.optimalitytarget 但我似乎无法弄清楚在哪里设置它。

抱歉,这是一个微不足道或愚蠢的问题。我觉得这是一件非常简单的事情,要么你知道,要么你不知道,我不知道该怎么做。非常感谢您对此提供任何帮助或建议。

【问题讨论】:

  • 您使用哪个 cplex 版本? (优化目标:原解决方案目标参数的新名称)
  • 我使用的是 12.7 版本。

标签: matlab optimization cplex


【解决方案1】:

您可以在发行版中找到在 MATLAB 中使用 CPLEX 的示例。它们位于[installPath]/cplex/examples/src/matlab

您提到您正在使用cplexqp,即toolbox API。查看https://www.ibm.com/support/knowledgecenter/es/SSSA5P_12.7.0/ilog.odms.cplex.help/CPLEX/MATLAB/topics/gs_param.html,我怀疑您的第二个示例的问题在于您使用Param。该结构与 Cplex 类 API 相关,而不是工具箱 API。我认为以下方法会更好:

options = cplexoptimset('cplex'); 
options.optimalitytarget=3; 

【讨论】:

  • 感谢您的回复。我尝试了您的建议,但仍然收到 Q 矩阵非凸的错误,这意味着 CPLEX 仍在将最优目标设置为默认值 0。我已经浏览了 matlab 中的 cplex 示例,但我没有找到任何示例设置 cplex 参数。
  • 等等!我做错了什么,在我修复它之后,你的方法完全奏效了。非常感谢!!!!!!!!!
【解决方案2】:

模型 = cplex.Cplex("filename.mps") Model.parameters.optimalitytarget.set(float(3))

这对我有用!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多