当前位置:   article > 正文

python不等式编程_Python不等式优化系统

python计算不等式规划区域

我正在用Python编写一个程序,其中一小部分涉及优化方程组/不等式组。理想情况下,我想做的是在Modelica中可以做的,写出方程,让解算器来处理它。在

解算器和线性规划的操作有点超出了我的适应范围,但我还是决定尝试一下。问题是程序的总体设计是面向对象的,并且有许多不同的组合方式来形成方程,以及一些非线性,所以我无法将其转化为线性规划问题(但我可能错了)。在

经过一番研究,我发现Z3解算器似乎能满足我的需要。我想到了这个(这看起来是我想要优化的典型案例):from z3 import *

a = Real('a')

b = Real('b')

c = Real('c')

d = Real('d')

e = Real('e')

g = Real('g')

f = Real('f')

cost = Real('cost')

opt = Optimize()

opt.add(a + b - 350 == 0)

opt.add(a - g == 0)

opt.add(c - 400 == 0)

opt.add(b - d * 0.45 == 0)

opt.add(c - f - e - d == 0)

opt.add(d <= 250)

opt.add(e <= 250)

opt.add(cost == If(f > 0, f * 50, f * 0.4) + e * 40 + d * 20 +

If(g > 0, g * 50, g * 0.54))

h = opt.minimize(cost)

opt.check()

opt.lower(h)

opt.model()

现在这个方法奏效了,给了我想要的结果,尽管它不是非常快(我需要解决这种系统几千次)。

但我不确定我是否使用了合适的工具(Z3是一个“定理证明器”)。在

这个API基本上正是我所需要的,但是我想知道其他包是否允许类似的语法。或者我应该尝试用一种不同的方式来描述这个问题,以允许使用标准的LP方法?(虽然我不知道怎么做)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/929684
推荐阅读
相关标签
  

闽ICP备14008679号