Python SciPy 优化:使用 Nelder-Mead 方法和约束函数查找最大值
from scipy import optimize
# 定义目标函数
def target_function(x):
return reg2.predict([x])[0]
# 定义约束函数
def constraint_function(x):
# 定义不等式约束
# 例如,假设我们要将 x 约束为大于 0
if x < 0:
return -1 # 如果违反约束,则返回负值
else:
return 0 # 如果满足约束,则返回 0
# 定义优化过程的初始猜测
initial_guess = [0, 0, 0] # 用您的初始猜测值替换
# 定义优化变量的范围
bounds = [(0, 1), (0, 1), (0, 1)] # 用您的变量范围替换
# 使用 Nelder-Mead 方法执行优化
result = optimize.minimize(target_function, initial_guess, method='Nelder-Mead', bounds=bounds, constraints=constraint_function)
# 从优化结果中提取最大值点和最大值
max_point = result.x
max_value = result.fun
# 打印结果
print('最大值点:', max_point)
print('最大值:', max_value)
在本代码中,添加了 constraint_function 来定义不等式约束。您可以根据您的具体要求修改约束函数。bounds 参数用于定义优化变量的范围,这确保了变量在优化过程中保持在指定范围内。
原文地址: https://www.cveoy.top/t/topic/fOgD 著作权归作者所有。请勿转载和采集!