python - 数据优化
问题描述
我有一些猜测的输入数据 (X0),我想在多个函数中优化它们,如下所述。
X0 = [A, B, C, D, E, F, G, H, I, J, K] #每个元素都是一个浮点值
职能:
F1 = A + B + C + D - 200 = 0
F2 = C + D + E - 50 = 0
F3 = C + D + E + F + G - 45 = 0
F4 = E + F + G + H + I + J + K - 67 = 0
F5 = H + I + J + K - 64 = 0
我不确定 scipy 如何优化多个函数中的输入数据。我在下面准备了一个脚本;我不确定它是否有响应。
from scipy.optimize import minimize
x0 = np.array([1. for i in range(11)])
def my_function(A, B, C, D, E, F, G, H, I, J, K):
F1 = A + B + C + D - 200
F2 = C + D + E - 50
F3 = C + D + E + F + G - 45
F4 = E + F + G + H + I + J + K - 67
F5 = H + I + J + K - 64
return F1 + F2 +F3 +F4 + F5
cons = ({'type': 'ineq', 'my_function': lambda A, B, C, D: A + B + C + D - 200},
{'type': 'ineq', 'my_function': lambda C, D, E: C + D + E - 50},
{'type': 'ineq', 'my_function': lambda C, D, E, F, G: C + D + E + F + G - 45},
{'type': 'ineq', 'my_function': lambda E, F, G, H, I, J, K: E + F + G + H + I + J + K - 67},
{'type': 'ineq', 'my_function': lambda H, I, J, K: H + I + J + K - 64})
res = minimize(my_function, x0, method='BFGS', constraints=cons )
解决方案
你很亲密。使用类型eq
(平等)而不是不平等。此外,您的约束应该只接收一个参数,即值数组,您只需访问它们的位置。
检查以下内容:
from scipy.optimize import minimize
x0 = np.random.random(size=[11])
def my_function(X):
A, B, C, D, E, F, G, H, I, J, K = X
F1 = A + B + C + D - 200
F2 = C + D + E - 50
F3 = C + D + E + F + G - 45
F4 = E + F + G + H + I + J + K - 67
F5 = H + I + J + K - 64
return F1 + F2 +F3 +F4 + F5
cons = ({'type': 'eq', 'fun': lambda X: X[0] + X[1] + X[2] + X[3] - 200},
{'type': 'eq', 'fun': lambda X: X[2] + X[3] + X[4] - 50},
{'type': 'eq', 'fun': lambda X: X[2] + X[3] + X[4] + X[5] + X[6] - 45},
{'type': 'eq', 'fun': lambda X: X[4] + X[5] + X[6] + X[7] + X[8] + X[9] + X[10] - 67},
{'type': 'eq', 'fun': lambda X: X[7] + X[8] + X[9] + X[10] - 64})
res = minimize(my_function, x0, constraints=cons)
退货
success: True
x: array([79.27328348, 78.72671652, 21.16500123, 20.83499877, 8. ,
-2.5794818 , -2.4205182 , 15.7738023 , 16.59847106, 15.92703282,
15.70069382])
推荐阅读
- mysql - Grafana 用户变量
- reactjs - 如何在导航栏中将菜单项居中,例如示例
- android - Android:“重复属性”错误问题
- jmeter - 无法将从正则表达式中提取的数据写入 excel 文件
- javascript - 无法在 Phaser 3 中更改场景
- javascript - 从 URL 加载后 SVG 元素点击反应
- java - 如何使用 JDK 11 使用 SHA256 ECDSA 算法验证证书的证书链
- excel - 通过宏更新总和公式以包括最近插入的行
- xslt - XSL FO 将动态值从 HTML 传递到 XSLT 变量
- c# - 为什么 GZipStream 会删除空格?