python-3.x - 使用python的非线性规划问题
问题描述
我有这个(非?)线性规划问题,不确定如何解决它。所以我有以下变量 x,y 及其界限:
x_lower=[0,0,0,0,0,0]
x_upper=[100,20,50,200,10,50]
list_y=[1.41,1.42,5.60,5.70,8.60,8.80]
我想通过以下条款传递这些:
back_true=(x*y)
back_false=(-x*y/y)
lay_true=(x+x*(y-1)**(-1))
lay_false=(-x*y/y)
其中 x 是一个随机整数,边界为 0,术语 x_upper[i] 与来自 list_y[i] 的术语“y”配对
这是为了获得 x 的组合,以最小化三个列表中项的和的最大值之间的差异,同时保持每个和结果的最小值非负。
res=[back_true[0],lay_false[1],back_false[2],lay_true[3],back_false[4],lay_true[5]]
res2=[back_false[0],lay_true[1],back_true[2],lay_false[3],back_false[4],lay_true[5]]
res3=[back_false[0],lay_true[1],back_false[2],lay_true[3],back_true[4],lay_false[5]])
因此,将通过使用以下与 list_y 配对的 lsits 来给出每个的最大值:
for x in [100,0,0,200,0,50] >>> res = 439.9634 (max); res2 = -13.59 ; res3 = -159.362
for x in [0,20,50,0,0,50] >>> res = -243.59 ; res2 = 404.0293 (max); res3 = -182.381
for x in [0,20,0,50,200,0] >>> res= 92.5531; res2 = -32.381; res3 = 1848.257 (max)
sum(res (max),res2 (max) ,res3 (max))= 2692.25
我想获得使三个 res 项的最大值之和最小化的组合。正如您所看到的,使一个术语的最大化违反了至少另一个的非负约束。
我不仅想将这些都保持在零以上,而且要获得三个“res”项的最大可能总和,即:
查找 'x' 的组合列表,其最小化 [sum(res,res2,res3) (maxes) 减去 sum(res,res2,res3) 使用 x 组合],而 res、res2、res3 中的每一个 >=0
有谁知道我该怎么做?
我正在与 scipy optimize 的 linprog 一起玩,但它似乎不需要像我想使用的那些更复杂的术语,所以不确定我是否可以使用它。
解决方案
推荐阅读
- python - “模块'eel.chrome'”的自动py到exe问题
- java - 我可以在这段代码中使用什么而不是 try-catch 异常处理
- android-studio - How to improve performance of Android Studio in Apple M1 macs?
- firebase - 无效参数:在 URI 文件中未指定主机:/// (Flutter)
- node.js - nodejs应用程序中的TLS连接错误
- angular - 带有模板的日期过滤器不应用过滤(PrimeNG 表)
- java - 为什么中间变量可以解决流的类型问题?
- ios - 使用 Charles Proxy 在 iOS13 上下载 apple-app-site-association 文件失败
- amazon-web-services - 如何使用变量作为 terraform 提供程序别名?
- python-3.x - 应有验证错误但收到 Keyerror