Python KeyError: 0 устранение неисправностей - PullRequest
0 голосов
/ 30 марта 2020

Я новичок в Gurobi и Python в целом и продолжаю получать код ошибки 'KeyError: 0' в строке 27 (которая является последней строкой) всякий раз, когда я запускаю свой код (который, очевидно, не завершен, но мой профессор посоветовал нам запускать наш код, когда мы его пишем, потому что так проще устранять неполадки).

Я читал на нескольких форумах, что это значит (что он пытался получить доступ к значению ключа '0' из словарь, в котором ключ отсутствует в том словаре (или), который не инициализирован, но все еще не понимает его?

from gurobipy import *

# Sets
SetA = ["a", "b", "c", "d", "e"]
SetB = ["f", "g", "h", "i", "j",
   "k", "l", "m", "n", "o"]

A = range(len(SetA))
B = range(len(SetB))

# Data
PC = 100
X = [1, 2, 3, 4, 5]
D = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Y = [
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
[21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
[31, 32, 33, 34, 35, 36, 37, 38, 39, 40],
[41, 42, 43, 44, 45, 46, 47, 48, 49, 50]
]

m = Model("Problem 2")

# Variables
Z = {(a,b): m.addVar() for a in A for b in B}

# Objective
m.setObjective(quicksum((PC+X[a]+Y[a][b])*Z[a][b] for a in A for b in B), GRB.MINIMIZE)

1 Ответ

0 голосов
/ 30 марта 2020

Решение:

Изменить последнюю строку на:

 m.setObjective(quicksum((PC+X[a]+Y[a][b])*Z[a,b] for a in A for b in B), GRB.MINIMIZE)
...