【Python】 gurobipy 学习笔记3——sum的进阶使用

1.sum函数处理-决策变量与系数相乘后累加

在之前的内容中,我们只是讨论了针对单一的变量或数据的sum求和方式,但是,当涉及到两个或多个变量/数据相乘的时候,又要如何使用sum函数呢?

举例:假设我们要编写公式\sum_{j=0}^{3}Zij*fj\leqslant 1   在这里,fi为一系列系数。

from gurobipy import *
from numpy import *

#创建模型
m=Model()
#设置系数
f=[2,3,4,5]
#创建变量
z_ij=m.addVars(4,3,vtype=GRB.BINARY,name="z_ij")
#设置约束
#注意设置多个约束要用addVars,否则会报错
m.addConstrs((z_ij.sum(i,"*")*f[i]<=1 for i in range(4)),name="c1")
#更新模型与输出
m.update()
m.write("sum2.lp")

【Python】 gurobipy 学习笔记3——sum的进阶使用_第1张图片

这样就实现了把系数fi乘进约束的目的。

 2.sum函数处理-系数也为变量的情况

举例:假设我们要编写公式:\sum_{j=0}^{3}Zij*qj\leqslant 1,假设zij和qj均为决策变量。

那么如何使用sum函数对其进行求和,添加约束?

#创建模型
m=Model()
#创建变量
z_ij=m.addVars(4,3,vtype=GRB.BINARY,name="z_ij")  #此处i=0,1,2,3
q_i=m.addVars(4,vtype=GRB.BINARY,name="q_i")
#设置约束
m.addConstrs((z_ij.sum(i,"*")*q_i[i]<=1 for i in range(4)),name="c1")
#更新模型与输出
m.update()
m.write("sum3.lp")

【Python】 gurobipy 学习笔记3——sum的进阶使用_第2张图片

这个和之前的系数相乘其实区别不大。

至此,结束了关于sum函数用法的讲解,下一节将会给出更加方法的函数使用方法(prod、qiucksum函数)

本系列往期内容:

【Python】 gurobipy 学习笔记1——建模基础_胡琪琪爱编程的博客-CSDN博客

【Python】 gurobipy 学习笔记2——sum的基础使用_胡琪琪爱编程的博客-CSDN博客

你可能感兴趣的:(学习,笔记)