python - 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)>
解决方案
假设您已经解决了优化问题,您可以通过.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())
推荐阅读
- sql - 选择查询消除不需要的行
- winforms - Winforms Clear Datagridviewcheckboxcell
- rust - 互斥体
原子读写 - visual-studio-code - 在 Visual Studio 代码中检索重命名的文件
- .net - Azure Function EventGridTrigger:错误绑定参数
- python - 为什么我的 xml 解析在我的 python 字典中多次存储相同的结果?
- amazon-web-services - 在 Terraform 中为 AWS lambda 指定触发事件
- swift - 如何在 CGImage 中的 CGPoint 处找到 CGColor
- python - 如何使用 HTML、CSS 和 Python 创建分页?
- class - 是否有任何选项可以在 dart 中创建最终方法,所以没有人可以覆盖它?