我正在尝试为一个函数最小化提供约束,到目前为止,我通过scipy(scipy.optimize.fmin_l_bfgs_b()
)提供了一个无约束算法。在
仔细阅读(例如,Python constrained non-linear optimization),我发现了一个名为mystic
的最小化包,这似乎是我需要的。我的情况如下。我有一个3N
变量的函数(表示N
节点的xyz位置坐标),并且我想为每个节点提供一个约束列表,比如z/x = const.
。这使得总共有N
个约束。如何为mystic()
最有效地定义/提供这些约束?同一个约束对象也可以与scipy.optimize.slsqp()
一起使用吗?由于我的约束是线性的,这应该也是一个可行的选择。在
我尝试了以下方法,但它使我的计算机崩溃:
import mystic.symbolic as ms
ieqns = ''
for p in range(N):
ieqns += 'x'+str(p+2) +'/x'+str(p) +" <= 2"
cf = ms.generate_constraint(ms.generate_solvers(ms.simplify(ieqns)))
pf = ms.generate_penalty(ms.generate_conditions(ieqns), k=1e12)
我是
mystic
的作者。我相信你想做的事情是这样的:然后我们可以在应用约束的同时最小化(但是,在以下情况下,约束基本上是无关的):
^{pr2}$相关问题 更多 >
编程相关推荐