【发布时间】:2020-07-26 21:07:31
【问题描述】:
我正在尝试优化形状的体积,我的函数返回形状的边长和高度。但是,我的函数返回负值,这是没有意义的。
这些负值确实使体积最大化,但是考虑到边长和高度为正值,有没有办法获得最大体积?
import math
from autograd import grad
from scipy.optimize import fsolve
z = 3
def objective (X):
x, y = X
return (x*(z**2)*(y))/(4*math.tan(math.pi/z))
def eq(X):
x, y = X
return ((x*(z**2))/(2*math.tan(math.pi/z))) + (x*y*z)-100
def F(L):
'Augmented Lagrange function'
x, y, _lambda = L
return -objective([x, y]) - _lambda * eq([x, y])
dfdL = grad(F, 0)
def obj(L):
x, y, _lambda = L
dFdx, dFdy, dFdlam = dfdL(L)
return [dFdx, dFdy, eq([x, y])]
x, y, _lam = fsolve(obj, [0.0, 0.0, 1.0])
print(f'The answer is at {x, y}')
【问题讨论】:
-
我不确定这是否能帮助你:kitchingroup.cheme.cmu.edu/blog/2018/11/03/…
标签: python optimization scipy