问题描述
这里是 CPLEX 新手。对不起!
我正在通过 python API 运行 CPLEX,我想设置包含二次项和线性项的目标函数,并最小化。
示例如下:
obj = aQ+bV
其中 a & b 是标量常数, Q 是二次项 V 是一个向量。
以下是使用虚拟数据的具体示例。 我想找到最小化以下等式的 x1,x2,x3:
Quadratic Part Linear Part
到目前为止,我可以通过显式写出二次矩阵并运行来解决二次部分
p.objective.set_quadratic(Q)
谢谢,
丹尼尔
解决方法
使用 docplex python 可以直接使用二次项
见
https://github.com/AlexFleischerParis/zoodocplex/blob/master/zooquadratic.py
举个小例子
,感兴趣的人:
解决方案非常简单。
p.objective.set_quadratic(q) - 这个函数设置了目标的二次部分,但它并不详尽,这意味着你可以通过简单地包含第 2 行来为目标添加一个线性项。>
-
p.objective.set_linear() 或在我的情况下在变量部分添加线性项:
-
p.variables.add(obj= my_linear_objective,ub=upper_bounds,lb=lower_bounds,names=my_names)
在这里,您所做的基本上是创建一个目标,该目标是第 1 行中设置的二次部分 + 第 2 行或第 3 行中设置的线性部分的组合。