微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 行中设置的线性部分的组合。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。