Python Docplex建模出现变量名重复警告的问题咨询
问题原因及修复方案
原因分析
变量名重复警告的核心是直接拼接数字字符串时,不同的(t,i,a)组合生成了完全相同的变量名。
举个具体的冲突场景:
- 当
t=2、i=251、a=10时,拼接后的变量名是LI225110 - 当
t=2、i=2511、a=0时,拼接后的变量名同样是LI225110
A=3时,a的取值仅为0-2(个位数),和i的数字拼接后不容易撞名;但A=11时,a会出现10这类两位数,就大概率和i的末尾数字组合出重复字符串,触发警告。
修复方法
给变量名的各个参数之间加上分隔符(比如下划线_),确保不同组合的变量名唯一。修改后的代码如下:
from docplex.mp.model import Model model = Model(name='Logistics') T = 3 A = 11 I = [3200, 2600, 2530] LI = [[[model.binary_var(name=f"LI_{t}_{i}_{a}") for a in range(A)] for i in range(I[t])] for t in range(T)]
用f-string格式化变量名,通过下划线明确分隔t、i、a三个参数,每个组合的变量名都会唯一,不会再出现重复警告。
内容的提问来源于stack exchange,提问作者Nasser Tarin
相关产品推荐
相关产品推荐

