Python Pywraplp检查失败:收集->插入(值类型(键,数据))。第二个重复键:x5***检查失败堆栈跟踪:***
我正在尝试使用Pywraplp或工具来构建一个单一的机器调度问题。但是我的代码没有运行。我不理解出现的错误。这里有人用ORT工具来解决OR中的线性问题吗 我的代码是:Python Pywraplp检查失败:收集->插入(值类型(键,数据))。第二个重复键:x5***检查失败堆栈跟踪:***,python,or-tools,Python,Or Tools,我正在尝试使用Pywraplp或工具来构建一个单一的机器调度问题。但是我的代码没有运行。我不理解出现的错误。这里有人用ORT工具来解决OR中的线性问题吗 我的代码是: N = 6 r = [1, 4, 2, 1, 2, 3] p = [4, 7, 2, 9, 1, 5] d = [5, 11, 4, 10, 4, 9] M = 1000*sum(p) #importar o solver from ortools.linear_solver import pywraplp plim = py
N = 6
r = [1, 4, 2, 1, 2, 3]
p = [4, 7, 2, 9, 1, 5]
d = [5, 11, 4, 10, 4, 9]
M = 1000*sum(p)
#importar o solver
from ortools.linear_solver import pywraplp
plim = pywraplp.Solver('Problema - PLIM', pywraplp.Solver.CBC_MIXED_INTEGER_PROGRAMMING)
# alocação de memoria para as estruturas do problema
x = [0]*N
w = []
for i in range(N):
crialinha = [0]*N
w.append(crialinha)
restc = [0]*N
restamax = [0]*N
restsob1 = []
restsob2 = []
for i in range(N):
crialinha1 = [0]*N
crialinha2 = [0]*N
restsob1.append(crialinha1)
restsob2.append(crialinha2)
# Declaração das variaveis de decisão
for i in range(N):
x[i] = plim.IntVar(0, plim.infinity(), 'x'+str(i))
for i in range(N):
for k in range(N):
if k > i:
w[i][k] = plim.IntVar(0, 1, 'w'+str(i)+str(k))
amax = plim.IntVar(0, plim.infinity(), 'x'+str(i))
# Declaração das retrições e coeficientes das variaveis
for i in range(N):
restc[i] = plim.Constraint(-r[i], plim.infinity()) # Restrição de Chegada
restamax[i] = plim.Constraint(p[i]-d[i], plim.infinity()) # Restrição Amax
restc[i].SetCoefficient(x[i], 1) # Restrição de Chegada
restamax[i].SetCoefficient(amax, 1)
restamax[i].SetCoefficient(x[i], -1)
for i in range(N):
for k in range(N):
if k > i:
restsob1[i][k] = plim.Constraint(-plim.infinity(), M-p[i]) # Restrição de sobreposição 1
restsob2[i][k] = plim.Constraint(-plim.infinity(), -p[k]) # Restrição de sobreposição 2
restsob1[i][k].SetCoefficient(x[i], 1)
restsob1[i][k].SetCoefficient(x[k], -1)
restsob1[i][k].SetCoefficient(w[i][k], M)
restsob2[i][k].SetCoefficient(x[i], -1)
restsob2[i][k].SetCoefficient(x[k], -1)
restsob2[i][k].SetCoefficient(w[i][k], -M)
# função objetivo
obj = plim.Objective()
obj.SetCoefficient(amax, 1)
obj.SetMinimization()
# Resolve
status = plim.Solve()
if status == plim.OPTIMAL:
print("Solução Otima")
elif status == plim.FEASIBLE:
print("Solução factivel")
else:
print("Não foi possível encontrar uma solução")
错误是:
警告:在InitGoogleLogging写入STDERR之前进行日志记录
F0915 20:37:12.054214 17688映射_util.h:148]检查失败:收集->插入值_类型键,数据。第二个重复键:x5
*检查故障堆栈跟踪:*
有人能帮我吗???我相信你不能用同一个名字来命名两个变量 请将“x”重命名为在创建amax变量时使用“a”