使用 CPLEX 作为求解器的 MATLAB 中求解值的参考
Reference for Solution Value in MATLAB using CPLEX as solver
我正在考虑使用 MATLAB 对问题建模并使用 CPLEX 作为求解器来解决优化问题。一切正常,我能够得到我的解决方案。但是,可以说我有 3 个大小不同的优化变量,当我获得解决方案时,我得到了 1 个变量中所有变量的值,我现在必须通过它来寻找每个变量的值。现在,如果我在 python 中执行此操作并且我的变量之一是 x,我将只使用 value.x 来获取 x 变量的值。是否有类似的方法来获取各个优化变量的值,而无需自己手动查找。这就是我用来获得解决方案的方法:
options = cplexoptimset('cplex');
options.timelimit = 300;
[sol3,fval3, exitflag3, output3] = cplexmiqp(PP.H, PP.f, PP.Aineq, PP.bineq, ...
PP.Aeq, PP.beq,[], [], [], PP.lb, PP.ub, ctype, [], options);
如果我有 3 个优化。变量 x1、x2 和 x3 不是标量而是数组,我的解决方案作为 [x1 x2 x3] 存储在 sol3 中。我只想引用每个变量而不用手动操作。
对于 CPLEX,变量只是一个索引,CPLEX 不知道变量的子集以数组、列表、矩阵等形式组织的事实。所以一般来说,答案是“你不能做那”。但是,您使用的工具箱 API 旨在 drop-in 替代 matlab 工具箱函数,因此功能有限。
您可以切换到 class API。使用此 API 您可以显式地逐个或逐个数组地创建变量,并保留各种变量的索引。这与您在 Python.
中所做的有点相似
我正在考虑使用 MATLAB 对问题建模并使用 CPLEX 作为求解器来解决优化问题。一切正常,我能够得到我的解决方案。但是,可以说我有 3 个大小不同的优化变量,当我获得解决方案时,我得到了 1 个变量中所有变量的值,我现在必须通过它来寻找每个变量的值。现在,如果我在 python 中执行此操作并且我的变量之一是 x,我将只使用 value.x 来获取 x 变量的值。是否有类似的方法来获取各个优化变量的值,而无需自己手动查找。这就是我用来获得解决方案的方法:
options = cplexoptimset('cplex');
options.timelimit = 300;
[sol3,fval3, exitflag3, output3] = cplexmiqp(PP.H, PP.f, PP.Aineq, PP.bineq, ...
PP.Aeq, PP.beq,[], [], [], PP.lb, PP.ub, ctype, [], options);
如果我有 3 个优化。变量 x1、x2 和 x3 不是标量而是数组,我的解决方案作为 [x1 x2 x3] 存储在 sol3 中。我只想引用每个变量而不用手动操作。
对于 CPLEX,变量只是一个索引,CPLEX 不知道变量的子集以数组、列表、矩阵等形式组织的事实。所以一般来说,答案是“你不能做那”。但是,您使用的工具箱 API 旨在 drop-in 替代 matlab 工具箱函数,因此功能有限。
您可以切换到 class API。使用此 API 您可以显式地逐个或逐个数组地创建变量,并保留各种变量的索引。这与您在 Python.
中所做的有点相似