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

Gekko不遵守变量边界限制 无法得到与Excel Solver一致的解

约束实际已生效

你输出的所有变量取值都落在了你设置的[-0.005, 0.005]边界范围内,不存在约束失效的问题。你觉得结果不符合预期,本质是求解结果和Excel Solver不一致,和约束是否生效没有直接关联。

Array定义变量的参数错误

m.Array的第二个参数是数组维度,你传入的0.004是无效参数,正确创建9个初始值为0.004、边界符合要求的变量的写法是:

yb = m.Array(m.Var, 9, value=0.004, lb=-0.005, ub=0.005)

你之前的写法无法按照预期生成变量数组,不是约束功能的问题。

和Excel Solver结果不一致的解决方案

两个工具默认的求解器配置、收敛规则不同,出现结果差异属于正常现象,可以通过以下配置对齐结果:

  1. 调高求解精度
    Gekko默认的收敛公差比Excel Solver宽松,可手动调高精度阈值:
m.options.rtol = 1e-8  # 残差收敛公差
m.options.otol = 1e-8  # 目标函数收敛公差
  1. 统一初始值
    非线性优化对初始值非常敏感,你可以将Gekko的变量初始值设置为和Excel Solver使用的初始值完全一致,避免落到不同的局部最优解。
  2. 切换求解器
    Gekko默认使用IPOPT内点法求解器,你可以切换为更适合中小规模非线性优化的APOPT求解器,更接近Excel Solver的GRG非线性求解器的结果:
m.options.SOLVER = 1 # 1=APOPT, 2=BPOPT, 3=IPOPT(默认)

冗余代码提示

你代码中定义的v9变量没有加入y列表参与后续计算,可直接删除,不影响求解结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:06:02