如果方差可用,则计算 pyomo 标准差

Calculation of standard deviation in pyomo if variance is avaiable

提问人:slow_learner 提问时间:5/24/2020 更新时间:5/24/2020 访问量:270

问:

我构造了一个 pyomo 代码,其中我计算 3 个向量的加权平均值为

def meanX_definition(model, i):
    return m.meanX[i] ==(m.x1[i]+4*m.x2[i]+m.x3[i])/6
m.meanX_const = Constraint(m.N, rule = meanX_definition)

然后,我将方差计算为

def varX_definition(model, i):
    return m.varX[i] ==((m.x1[i]-m.meanX[i])**2+ 4*(m.x2[i]-m.meanX[i])**2+(m.x3[i]-m.meanX[i])**2)/6
m.varX_const = Constraint(m.N, rule = varX_definition)

由于我的模型是随机模型,因此我想设置限制,因为 x1、x2 和 x3 必须定位在平均值和 +-2 标准差之间。

为此,我尝试将标准偏差计算为

def stdX_definition(model, i):
    return m.desvestX[i] == sqrt(m.varX[i])
m.stdX_const = Constraint(m.N, rule = stdX_definition)

def stdX_definition(model, i):
    return m.desvestX[i] == m.varX[i]**(0.5)
m.stdX_const = Constraint(m.N_notinitial_notfinal, rule = stdX_definition)

我还尝试定义所有点的标准差,但第一个点和最后一个点的标准差,以防误差是 [0] 和 [n] 处的标准差为 0,因为所有 3 个向量的起点和终点都相同。

不幸的是,发生了错误。有人可以告诉我如何修复它以便我得到标准偏差吗?ApplicationError: Solver (ipopt) did not exit normally

python pyomo 标准差 方差 sqrt

评论

0赞 Erwin Kalvelagen 5/25/2020
看起来 ipopt 正在崩溃。这始终是一个错误。求解器日志中是否有任何有用的消息?不知道这是否有帮助,但可能会做.还要确保是一个正变量。sqrt(m.varX[i]+0.001)m.varX
0赞 slow_learner 5/25/2020
我刚刚尝试了您的解决方案,现在错误是 ,所以已经推进了一些东西。迭代还传递了以下消息ValueError: Cannot load a SolverResults object with bad status: errorError in an AMPL evaluation. Run with "halt_on_ampl_error yes" to see details. Warning: Cutting back alpha due to evaluation error
0赞 Erwin Kalvelagen 5/25/2020
这可能表明您仍在取负数的平方根。检查 varX 上的边界。
0赞 slow_learner 5/25/2020
我已将 varX 的值保存在 .txt 文件中,端点的最终值为 -9.407356729606605e-70,其余值为正值;但是,其中一些是 10E-10 的量级。我现在正在测试添加 10 个,代码需要很长时间,但还没有失败

答: 暂无答案