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 参数用于定义优化变量的范围,这确保了变量在优化过程中保持在指定范围内。

Python SciPy 优化:使用 Nelder-Mead 方法和约束函数查找最大值

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

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