1.sum函数处理-决策变量与系数相乘后累加
在之前的内容中,我们只是讨论了针对单一的变量或数据的sum求和方式,但是,当涉及到两个或多个变量/数据相乘的时候,又要如何使用sum函数呢?
举例:假设我们要编写公式 在这里,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")
这样就实现了把系数fi乘进约束的目的。
2.sum函数处理-系数也为变量的情况
举例:假设我们要编写公式:,假设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")
这个和之前的系数相乘其实区别不大。
至此,结束了关于sum函数用法的讲解,下一节将会给出更加方法的函数使用方法(prod、qiucksum函数)
本系列往期内容: