You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何在循环里为minimize函数调用不同优化方法

问题原因

  • 你调用enumerate(methods)遍历列表时,返回的第二个值已经是方法名的字符串对象,不需要再通过列表索引取值。你写的methods[type]会报错,因为Python列表仅支持整数下标索引,不能传入字符串作为索引。
  • scipy.optimize.minimize的method参数本身就接受字符串类型输入,你列表中存储的已经是带引号的合法字符串,不需要额外添加引号。

修正后代码

from scipy.optimize import minimize

# 这里替换为你自己定义的calculate_loss函数
def calculate_loss(x):
    return (x[0]-3)**2 + (x[1]-5)**2

methods = ["Nelder-Mead", "Powell"]
# 建议不要用type作为变量名,会覆盖Python内置的type关键字,改为method_name更合适
for numb, method_name in enumerate(methods):
    x0 = [10, 20]
    res = minimize(calculate_loss, x0, method=method_name)
    # 也可以通过索引取值,写法为method=methods[numb],效果完全一致
    print(f"优化方法:{method_name},优化结果x = {res.x},是否成功:{res.success}")

内容的提问来源于stack exchange,提问作者majyno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:24:02