所以我使用PULP在Python中为复杂的LP建模时,出于某些原因,我决定在Optlang中测试对相同问题的建模,但是我注意到Optlang添加了一些约束时间太长,那时我想起了PULP具有返回针对Sums的自定义类LpAfineExpression的LpSum,对于Optlang,我必须使用默认的Sum函数。
我的猜测是:Sum函数使Optlang建模花费的时间太长,所以我想知道是否有更好的方法来实现Sum。
这是我用来在Optlang中添加约束的代码,其中 Per,Emp,Blocks,FT 是列出变量和系数的索引的列表,分别为2154、8、1 ,1个元素。
for (j,k) in product(Per,Emp):
opt_model.add(optl.Constraint(sum(x_vars[i,j,k,l,Frentes[i]]*TCH[i,j,k,l,Frentes[i]] for (i,l) in product(Blocks,FT) if "F{}{}{}{}{}".format(i,j,k,l,Frentes[i]) in Variables),ub=MOA_max[j,k],lb=MOA_min[j,k],name="TCH{}|{}".format(j,k)))
PS:PULP和Optlang之间的时间差大约是2分钟到20分钟。