我正在尝试使用SciPy在Python中实现一个非线性程序。问题是,我的模型涉及到大量的约束,我想知道是否有一种方法可以像在LINGO等其他优化软件中那样以紧凑的形式编写它。
问题如下:
Objective Function -> Min Z = (n : ℕ) : --(sum from k=1 to k=n) x(k)^2
s.t
(for all values from k=1 to k=(n-1)) : x(k) <= x(k+1)
我尝试了一些东西,例如:
def Objective(x):
sum = 0
for i in range(number of days):
sum += x[i]*x[i]
return sum
问题是,这是不工作的一些原因和限制,我已经尝试了不同的方法,它不断产生一个错误。
1条答案
按热度按时间gudnpqoy1#
是的,它可以(显著地)“压缩”。将 x 移到最里面的和的外面,你会看到左边的约束等价于 x 和 a 的和的标量积。此外,约束的左侧根本不会改变 i,这意味着右侧应该丢弃除
max()
之外的所有行。这给我们留下了:
但重要的是,注意这个问题在对数意义上是无界的。最佳解是 x 接近0且 a 接近无穷大的解。这可以通过降低
tol
来观察。