首页 > 解决方案 > 使用 m.abs3() 时出现 0

问题描述

在时间序列分析中使用 m.abs3() 时,初始值的结果值为 0。这进一步导致后续计算中的“除以 0”问题。

例如,在脚本中,对于 的值x = [-0.010292872139, -0.013621207394, -0.013666766692, -0.013712305714, -0.013757829097, -0.013803253697, -0.013848595166, -0.013893769488, -0.013943077385, -0.013987013738, -0.014030702679],m.abs3(x)[0.0, 0.013621207394, 0.013666766692, 0.013712305714, 0.013757829097, 0.013803253697, 0.013848595166, 0.013893769488, 0.013943077385, 0.013987013738, 0.014030702679]作为结果返回。

我已尝试将 m.if3(x,-x,x) 作为此处建议的解决方法-如何使用 Python Gekko 解决绝对值 abs() 目标?但结果仍然与上述 m.abs3(x) 相同。

您能否让我知道导致这种情况发生的原因以及有没有办法解决这个问题。非常感谢。

标签: gekko

解决方案


解决此问题的一种方法是将初始猜测更改为y默认值以外的值0。这是一个示例脚本,展示了如何y使用y.value=1.

from gekko import GEKKO
m = GEKKO()
x = m.Param(-1)
y = m.abs3(x)

# initialize y to value 1
y.value = 1

m.Minimize((x/y)**2)
m.solve()

推荐阅读