我需要解决n个变量的不等式系统,其中一个不等式具有正交约束。不等式如下。
在我的特定问题中,已经证明解决系统问题始终可以得出一种精确的解决方案。由于正交性,我认为我不能使用线性编程。有人建议使用Python解决有效方法吗? Wolfram alpha可以做到! (您可以看到示例here和here)我知道sympy无法解决,因为它只能解决单变量情况。请包括运行时以及您给出的答案!
编辑:发布此文件后,我发现了z3。它可以做我想做的事。但是我认为这可能是过大的,并且可能不会尽可能高效(希望在n:=中求解线性变量)。
from z3 import Solver, Real
def solve_inequalities(z):
n = len(z)
s = Solver()
ys = [Real(f'y{i}') for i in range(n)]
s.add(sum(ys) == 0)
for i in range(1, n):
s.add(sum(ys[:i]) >= 0)
s.add(sum([(z[i]-ys[i])*ys[i] for i in range(n)]) == 0)
for i in range(n-1):
s.add(z[i]-ys[i] <= z[i+1]-ys[i+1])
s.check()
return s.model()