每个约束的变量系数总和
Sum coefficients of variables at each constraint
我是 python 和 CPLEX 的初学者。我想对每个约束下的变量系数求和,但我不知道如何按约束对变量进行分组,然后使用 Sum 函数。
for i in (d.linear_constraints.get_names()):
for j in (d.variables.get_names()):
Varconst = d.linear_constraints.get_coefficients(i,j)
print("constraints-coefficients: ",i,"-",j,":",Varconst)
我鼓励您使用 docplex 高级 CPLEX python API。
如果我稍微改变一下 zoo example:
from docplex.mp.model import Model
mdl = Model(name='buses')
nbbus40 = mdl.integer_var(name='nbBus40')
nbbus30 = mdl.integer_var(name='nbBus30')
mdl.add_constraint(nbbus40*40 + nbbus30*30 >= 300, 'kids')
mdl.add_constraint(nbbus40*45 + nbbus30*35 >= 320, 'kids2')
mdl.minimize(nbbus40*500 + nbbus30*400)
mdl.solve()
vardict={i:0 for i in mdl.iter_variables()}
for i in mdl.iter_linear_constraints():
for j in i.iter_variables():
Varconst = i.lhs.get_coef(j)
print("constraints-coefficients: ",i,"-",j,":",Varconst)
vardict[j]+=Varconst
for v in mdl.iter_integer_vars():
print(v," = ",v.solution_value)
for i in mdl.iter_variables():
print(i," ==> ",vardict[i])
给予
constraints-coefficients: kids: 40nbBus40+30nbBus30 >= 300 - nbBus40 : 40
constraints-coefficients: kids: 40nbBus40+30nbBus30 >= 300 - nbBus30 : 30
constraints-coefficients: kids2: 45nbBus40+35nbBus30 >= 320 - nbBus40 : 45
constraints-coefficients: kids2: 45nbBus40+35nbBus30 >= 320 - nbBus30 : 35
nbBus40 = 6.0
nbBus30 = 2.0
nbBus40 ==> 85
nbBus30 ==> 65
我是 python 和 CPLEX 的初学者。我想对每个约束下的变量系数求和,但我不知道如何按约束对变量进行分组,然后使用 Sum 函数。
for i in (d.linear_constraints.get_names()):
for j in (d.variables.get_names()):
Varconst = d.linear_constraints.get_coefficients(i,j)
print("constraints-coefficients: ",i,"-",j,":",Varconst)
我鼓励您使用 docplex 高级 CPLEX python API。
如果我稍微改变一下 zoo example:
from docplex.mp.model import Model
mdl = Model(name='buses')
nbbus40 = mdl.integer_var(name='nbBus40')
nbbus30 = mdl.integer_var(name='nbBus30')
mdl.add_constraint(nbbus40*40 + nbbus30*30 >= 300, 'kids')
mdl.add_constraint(nbbus40*45 + nbbus30*35 >= 320, 'kids2')
mdl.minimize(nbbus40*500 + nbbus30*400)
mdl.solve()
vardict={i:0 for i in mdl.iter_variables()}
for i in mdl.iter_linear_constraints():
for j in i.iter_variables():
Varconst = i.lhs.get_coef(j)
print("constraints-coefficients: ",i,"-",j,":",Varconst)
vardict[j]+=Varconst
for v in mdl.iter_integer_vars():
print(v," = ",v.solution_value)
for i in mdl.iter_variables():
print(i," ==> ",vardict[i])
给予
constraints-coefficients: kids: 40nbBus40+30nbBus30 >= 300 - nbBus40 : 40
constraints-coefficients: kids: 40nbBus40+30nbBus30 >= 300 - nbBus30 : 30
constraints-coefficients: kids2: 45nbBus40+35nbBus30 >= 320 - nbBus40 : 45
constraints-coefficients: kids2: 45nbBus40+35nbBus30 >= 320 - nbBus30 : 35
nbBus40 = 6.0
nbBus30 = 2.0
nbBus40 ==> 85
nbBus30 ==> 65