我正在使用 Opti Toolbox,这是一个用于 Matlab 的免费优化工具箱。我正在求解一个混合整数非线性程序,一个 MINLP。在 Opti Toolbox 中,使用的 MINLP 求解器是 SCIP。
我将自己的目标定义为一个单独的函数( Opti 中的fun参数),并且该函数需要调用其他采用双参数的 matlab 函数。
问题是,每当 Opti 调用我的函数来评估目标时,它首先使用“ scipvar ”对象的向量调用它,然后使用“ double ”对象的向量再次调用它。我的 obj 函数不适用于 scipvar 对象,它会返回错误。
我尝试(仅用于测试)在类型为“ scipvar ”时将函数的输出设置为固定的东西,而当类型为“ double ”时设置为实际的东西,这不起作用,实际上更改了固定值改变最终的最优值。
我基本上需要将 scipvar 对象转换为 double,这可能吗?或者还有其他选择吗?
谢谢你。