Python 如果方差可用,则以pyomo为单位计算标准偏差

Python 如果方差可用,则以pyomo为单位计算标准偏差,python,pyomo,standard-deviation,variance,sqrt,Python,Pyomo,Standard Deviation,Variance,Sqrt,我构造了一个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]-

我构造了一个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)

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


不幸的是,出现了一个错误,ApplicationError:Solver(ipopt)没有正常退出。有人能告诉我如何修正它,以便得到标准偏差吗?

看起来ipopt要崩溃了。这总是一个错误。解算器日志中是否有有用的消息?不知道这是否有帮助,但可能是执行
sqrt(m.varX[i]+0.001)
。还要确保
m.varX
是一个正变量。我刚刚尝试了您的解决方案,现在错误是
ValueError:无法加载状态不好的SolverResults对象:error
,因此有些东西已经升级。在AMPL评估中,迭代还传递了以下消息
Error。运行“暂停打开报警错误是”以查看详细信息。警告:由于计算错误而减少alpha值
这可能表示您仍在使用负数的平方根。检查varX上的边界。我已将varX的值保存在.txt文件中,端点处的结束值为-9.407356729606605e-70,其余值为正;然而,其中一些是10e-10级。我现在正在测试添加10,代码需要很长时间,但还没有失败
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)