到 y.value,python,var,gurobi,expr"/>

首页 > 解决方案 > Gurobi QuadExpr:我应该改变什么到 y.value

问题描述

for i in P:
    S=(y[i]-R*p[i])*(y[i]-R*p[i])/(p[i]*p[i])
    print(S)

当我运行上面的程序时,输出如下。我应该如何改变它?我想输出 y (i) 来计算值。

<gurobi.QuadExpr: 0.6894031221303948 + -0.04151515151515151 y(1.0) + -0.04151515151515151 y(1.0) + [ 0.0025 y(1.0) ^ 2 ]>
<gurobi.QuadExpr: 0.6894031221303948 + -0.04151515151515151 y(2.0) + -0.04151515151515151 y(2.0) + [ 0.0025 y(2.0) ^ 2 ]>
<gurobi.QuadExpr: 0.689403122130395 + -0.0172979797979798 y(3.0) + -0.0172979797979798 y(3.0) + [ 0.00043402777777777775 y(3.0) ^ 2 ]>
<gurobi.QuadExpr: 0.689403122130395 + -0.027676767676767678 y(4.0) + -0.027676767676767678 y(4.0) + [ 0.0011111111111111111 y(4.0) ^ 2 ]>
<gurobi.QuadExpr: 0.6894031221303948 + -0.04612794612794612 y(5.0) + -0.04612794612794612 y(5.0) + [ 0.0030864197530864196 y(5.0) ^ 2 ]>
<gurobi.QuadExpr: 0.6894031221303948 + -0.028631138975966558 y(6.0) + -0.028631138975966558 y(6.0) + [ 0.0011890606420927466 y(6.0) ^ 2 ]>
for i in y:
    print(y[i])

上面的输出如下。

<gurobi.Var y(1.0) (value 3.0)>
<gurobi.Var y(2.0) (value 4.0)>
<gurobi.Var y(3.0) (value 4.0)>
<gurobi.Var y(4.0) (value 5.0)>
<gurobi.Var y(5.0) (value 6.0)>
<gurobi.Var y(6.0) (value 8.0)>

标签: pythonvargurobiexpr

解决方案


假设您已经解决了优化问题,您可以通过.X属性访问变量的值来评估您的表达式:

for i in P:
    S = (y[i].X-R*p[i].X)*(y[i].X-R*p[i].X)/(p[i].X * p[i].X)
    print(S)

或者您可以通过以下方法使用当前解决方案计算表达式的值getValue()

for i in P:
    S = (y[i]-R*p[i])*(y[i]-R*p[i])/(p[i]*p[i])
    print(S.getValue())

推荐阅读