CPLEX Python-使用二次项和线性项创建目标函数

问题描述

这里是 CPLEX 新手。对不起!

我正在通过 python API 运行 CPLEX,我想设置包含二次项和线性项的目标函数,并最小化。

示例如下:

obj = aQ+bV

其中 a & b 是标量常数, Q 是二次项 V 是一个向量。

以下是使用虚拟数据的具体示例。 我想找到最小化以下等式的 x1,x2,x3:

              Quadratic Part                                               Linear Part

Quadratic and linear terms in objective function

到目前为止,我可以通过显式写出二次矩阵并运行来解决二次部分

p.objective.set_quadratic(Q)

如何将第二个线性项添加到该目标函数中?

谢谢,

丹尼尔

解决方法

使用 docplex python 可以直接使用二次项

https://github.com/AlexFleischerParis/zoodocplex/blob/master/zooquadratic.py

举个小例子

,

感兴趣的人:

解决方案非常简单。

  1. p.objective.set_quadratic(q) - 这个函数设置了目标的二次部分,但它并不详尽,这意味着你可以通过简单地包含第 2 行来为目标添加一个线性项。>

  2. p.objective.set_linear() 或在我的情况下在变量部分添加线性项:

  3. p.variables.add(obj= my_linear_objective,ub=upper_bounds,lb=lower_bounds,names=my_names)

在这里,您所做的基本上是创建一个目标,该目标是第 1 行中设置的二次部分 + 第 2 行或第 3 行中设置的线性部分的组合。