gpt4 book ai didi

Python约束线性优化

转载 作者:行者123 更新时间:2023-12-01 03:53:58 26 4
gpt4 key购买 nike

您好,我正在尝试求解具有两个侧面约束的线性方程组,其中一个已成功实现,结果之和应为 1,但我需要另一个,即每个解都应为非负。谁知道如何添加这个约束?谢谢

import numpy as np
import numpy.linalg as LA
import scipy.optimize as optimize

A = np.array([[.5, .3, .2], [.4, 6, .3], [.2, .3, .5]])
b = np.array([0, 0, 0])
x = LA.solve(A, b)

def f(x):
y = np.dot(A, x) - b
return np.dot(y, y)

cons = ({'type': 'eq', 'fun': lambda x: x.sum() - 1},{'type': 'eq', 'fun': lambda x: x >= 0})
res = optimize.minimize(f, [0, 0, 0], method='SLSQP', constraints=cons,
options={'disp': False})
xbest = res['x']

print(xbest)

最佳答案

我假设这是您要解决的方程组:

.5x1 + .3x2 + .2x3 = 0
.4x1 + 6x2 + .3x3 = 0
.2x1 + .3x2 + .5x3 = 0
x1 + x2 + x3 =1
x1, x2, x3 >=0

使用scipy.optimize.linprog可以轻松解决这个问题。由于您没有目标函数,因此目标函数的系数将为 [0., 0., 0.]

from scipy.optimize import linprog

print(linprog(c=[0., 0., 0.],
A_eq=[[.5, .3, .2], [.4, 6, .3], [.2, .3, .5], [1., 1., 1.]],
b_eq=[0., 0., 0., 1.],
bounds=(0, None)))

这应该会为您提供问题的结果。但是,您的系统不存在可行的解决方案。您可以在此处找到有关 scipy.optimize.linprog 的更多信息:http://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.optimize.linprog.html

关于Python约束线性优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37821049/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com