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

Scipy中differential_evolution的部分参数边界设置问题

Scipy中differential_evolution的部分参数边界设置问题

嗨,这个问题我之前也碰到过!Scipy的differential_evolution确实要求每个参数都得设置明确的数值边界,不能用None来表示无限制,这也是它和basinhopping的一个明显区别点。

那怎么解决这个问题呢?其实很简单,给那些需要无边界的参数设置一个足够宽泛的合理范围就可以了:

  • 对于你第二个参数那种完全无限制的(None, None),可以根据你的问题场景,设置一个极大的区间,比如(-1e10, 1e10)——只要这个范围远大于你预期的最优参数取值,就不会干扰算法找到正确结果;
  • 第五个参数是(0, None),也就是下限为0、无上限,那可以设成(0, 1e10)。

调整后的边界列表就变成这样:

bounds = [(0.0, 1.0), (-1e10, 1e10), (0.0, 1.0), (0.0, 1.0), (0, 1e10)]

为什么differential_evolution不能接受None呢?这和它的核心工作机制有关:它是基于种群的全局优化算法,需要明确的参数空间范围来初始化候选解种群,以及后续的变异、交叉操作,所以必须给每个参数指定确定的上下界数值。

如果担心太宽泛的范围会拖慢优化速度,你还可以先通过预实验或者结合问题的物理/业务意义,大致估算参数的合理区间,把范围缩小到一个既满足算法要求,又不会过于冗余的区间,这样能让优化过程更高效。

备注:内容来源于stack exchange,提问作者jasmine

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 09:50:28