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

Python 中具有多个函数和线性约束的优化线性规划问题查询

如何解决Python 中具有多个函数和线性约束的优化线性规划问题查询

我对 Python 中的优化有点陌生,尤其是在 Scipy 上。如果我只有一个这样的功能

def prod(x):
    return -x[0] * x[1]

然后我可以很容易地知道如何进行最大化:

linear_constraint = LinearConstraint([[1,1]],[20],[20])
x0 = np.array([15,5])
result = minimize(prod,x0,constraints=linear_constraint)
print(result['x'])

考虑到 x0 * x1 的约束,这基本上是最大化 x0 + x1 = 20。这里的答案是array([10.,10.])

所以现在,我想做一些更复杂的事情,而不仅仅是优化一个功能。假设我想优化多个功能。假设我有大小为 P 的矩阵 n x 3

A     B     C
3     2     7
6     3     4
8     1     5
...

有没有办法优化(最小化)P[i] * x,这里的* 是所有i = 1..n 的点积?总之,我想优化:

3*x[0] + 2*x[1] + 7*x[2]
6*x[0] + 3*x[1] + 4*x[2]
8*x[0] + 1*x[1] + 5*x[2]
...

并且在 x[0] + x[1] + x[2] = 1 的约束下。任何人都知道如何在 Python 上正确实现这一点(顺便说一下,我正在使用 Scipy)?我仍然不确定从哪里开始。提前致谢!

解决方法

对于标准优化工具,目标函数必须返回一个标量。这称为“单一目标”。优化中有一个分支处理多目标(名称如向量优化、多目标优化和多标准优化)。有很多关于这方面的文献。我建议阅读一些书来熟悉相关的概念、想法和算法。

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