首页 文章

Matlab,SCIP和Opti Toolbox

提问于
浏览
1

我正在使用Opti Toolbox,这是一个免费的Matlab优化工具箱 . 我正在解决一个混合整数非线性程序,一个MINLP . 在Opti Toolbox中,使用的MINLP解算器是SCIP .

我将自己的目标定义为单独的函数(Opti中的有趣参数),并且此函数需要调用其他带有双参数的matlab函数 .

问题是每当Opti调用我的函数来评估目标时,它首先使用' scipvar ' objects and then it calls it again using a vector of ' double '对象的向量来调用它 . 我的obj函数不能与scipvar对象一起使用,它会返回一个错误 .

我尝试(仅用于测试)设置我的函数的输出为固定的类型是' scipvar ', and for the actual real thing when the type is ' double ', and this doesn' t工作,更改固定值实际上改变了最终的最佳值 .

我基本上需要将一个scipvar对象转换为double,这可能吗?还是有其他选择吗?

谢谢 .

1 回答

  • 1

    好吧,所以在Opti工具箱开发人员J. Currie的启发之后,我理解了上面问题的原因 .

    使用scipvar变量向量对目标的第一次调用实际上是一个扫描目标函数的解析器,看它是否可以正确映射到SCIP可以处理的东西 . 我重新实现了目标函数,只使用scip允许的方法 - 通过在matlab中输入方法(scipvar)获得:

    abs dot log减去mrdivide norm power rdivide sqrt次
    显示exp log10 mpower mtimes加prod scipvar sum uminus

    一旦目标可以通过scip解析我的问题工作得很好 .

相关问题