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

如何用scipy.optimization.differential_evolution处理非确定性目标函数?

差分进化求解器在非确定性目标函数下的参数校准问题

问题背景

我正在使用差分进化求解器校准/优化仿真参数。由于场景数据量极大且仿真计算成本高昂,我希望尽可能减少仿真运行次数。因此在每次迭代中,我会从数据库随机选择少量场景,用当前参数向量进行仿真,将仿真结果与真实记录的相似度作为优化目标值——该目标值不仅依赖参数向量,还取决于所选的场景。

这就导致切换到下一次迭代时,即使参数向量本身已得到优化,目标值也可能出现恶化;反之,参数未优化时目标值也可能变好。

核心问题在于SciPy的_accept_trail方法,它仅接受能量值降低的轨迹。这对确定性目标函数是合理的,但完全不适用于我这种非确定性场景。

已尝试的两种方案

  • 在回调函数中,针对新选择的场景计算种群能量,这样能正确对比目标值是否得到优化,但会使计算量直接翻倍——每个场景需要用新旧参数向量各运行一次仿真。
  • 修改_accept_trail方法中的判断逻辑,将energy_trail <= energy_orig替换为True,但这种做法会大幅降低收敛速度。

疑问

有没有更适合这类非确定性目标函数问题的建模解决方案?有没有无需fork SciPy即可绕过_accept_trail方法的途径?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:55:59