繁体   English   中英

Python Scipy 优化下限(而不是 A_ub)

[英]Python Scipy Optimize with Lower bounds (instead of A_ub)

昨晚我花了大约 4-5 个小时搜索 Stack Overflow,浏览 scipy 优化文档等,但找不到我的问题的答案。 我的问题是,当似乎仅用于上限时,如何为优化方程设置下限? 请参阅下面的公式和代码。

import numpy as np
from scipy.optimize import linprog
from numpy.linalg import solve

c = np.array([4,7,5])
A = np.array([[4,1,10],[3,2,1],[0,4,5]])
b = np.array([10,12,20])

res = linprog(c,A_ub = A,b_ub = b)
print(res)

最小化 (4,7,5)

('Optimal value:', -0.0, '\nX:', array([ 0.,  0.,  0.]))
     fun: -0.0
 message: 'Optimization terminated successfully.'
     nit: 0
   slack: array([ 10.,  12.,  20.])
  status: 0
 success: True
       x: array([ 0.,  0.,  0.])

最大化 (-4,-7,-5)

('Optimal value:', -37.666666666666664, '\nX:', array([ 0.66666667,  5.            `    ,  0.        ]))`
     fun: -37.666666666666664
 message: 'Optimization terminated successfully.'
     nit: 2
   slack: array([ 2.33333333,  0.        ,  0.        ])
  status: 0
 success: True
       x: array([ 0.66666667,  5.        ,  0.        ])

它在第一个中给了我一个答案,以最小化 x1,x2,x3 显然显示全零。 如果每个都 <=10,<=12,<=20,则第二个答案使函数最大化,因为显然它是一个上限。 我需要的是基于 >=10,>=12,>=20 最小化函数的最佳答案。

对不起,如果这很容易! 我花了很多时间在网上爬行...

a'x >= b-a'x <= -b相同。 即,将>=不等式乘以 -1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM