在使用scipy.optimize.minimize函数进行优化时,可以通过constraints参数来添加约束条件。约束条件可以是等式约束或者不等式约束。

对于等式约束,可以使用LinearConstraint类来定义。例如,假设有一个等式约束为x[0] + x[1] = 1,可以如下定义约束函数:

from scipy.optimize import LinearConstraint

定义等式约束函数

def eq_constraint(x): return x[0] + x[1] - 1

创建等式约束对象

eq_cons = LinearConstraint(eq_constraint, [0], [0])

对于不等式约束,可以使用Bounds类来定义。例如,假设有一个不等式约束为0 <= x[0] <= 1,可以如下定义约束函数:

from scipy.optimize import Bounds

创建不等式约束对象

bounds = Bounds([0], [1])

然后,在调用optimize.minimize函数时,将约束对象作为constraints参数传入即可:

result = optimize.minimize(target_function, initial_guess, method='Nelder-Mead', constraints=[eq_cons, bounds])

需要根据具体的约束条件来定义对应的约束函数,并创建约束对象。

from scipy import optimizedef target_functionx return reg2predictx0result = optimizeminimizetarget_function initial_guess method=Nelder-Meadmax_point = resultxmax_value = resultfunprint最大值点: max_po

原文地址: https://www.cveoy.top/t/topic/iM46 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录