我正在尝试创建一个最大化线性模型,该模型中有两个包含通过二进制连接的“中型电视,报纸和东西”和“笑话(笑话)”(意在出售给媒体)的字典。 X [media,witze]变量,如果应将笑话卖给媒体,则该值为1;否则为0。
因此,在媒体字典中,每个键(媒体名称)都有一个值(或项目,我不确定如何称呼),该值告诉媒体位于哪个国家/地区。我正在尝试限制create不允许在一个国家/地区通过多种媒体出售一个笑话。但是我不确定如何检查每种媒体的字符串值,因为在创建变量时,首先要遍历键,而不是国家。而且,如果我尝试遍历值(国家/地区),它会告诉我它不可散列,所以我不能那样做。
我尝试创建另一个类似于[land(country),witz]的键Y,但是我仍然必须将它与“ medias”多维字典上的值(country)进行比较,我不知道这样做。
因此,如果您知道如何解决它或有什么想法可以帮助我,我将非常感谢。
所以,这是数据(字典) #--编码:utf-8-- 从gurobipy导入*
witze, kategorie, preis, qualitaet = multidict({
"Was sitzt auf einem Baum und schreit 'Aha'? Ein Uhu mit Sprachfehler": ["Flachwitze", 17, 2],
"Was wird beim Trocknen nass? Das Handtuch": ["Scherzfrangen", 5, 1],
"Chuck NORris verwählt sich nicht. Wenn du abhebst, warst du am falschen Telefon.": ["Chuck NORris Witze", 30, 8],
"Lehrerin: Tut mir leid Peter aber mehr als eine 5 Minus kann ich dir im Fach Französisch nicht geben. - Peter: Gracias": ["Gute Witze", 42, 10]
})
medien, land, d_qualitaet, budget, bedarf = multidict({
"Bild" : ["Deutschland", 2, 100, 1],
"Zeit" : ["Deutschland", 5, 60, 1],
"Rheinische Post" : ["Deutschland", 4, 30, 1],
"Hirving Lozano" : ["Mexiko", 8, 200, 1],
"Gazzetta dello Niederlagos" : ["Schweden", 5, 50, 1],
"La Tori de Kross" : ["Schweden", 4, 50, 1],
"tallag": ["SüdkORea", 3, 45, 1]
})
Laender = ["Deutschland","Mexiko","Schweden","SüdkORea"]
import humormodel
humormodel.solve(witze,kategorie,preis,qualitaet,medien,land,d_qualitaet,budget,bedarf,Laender)
和变量:
model.modelSense = GRB.MAXIMIZE
# Variablen-Dictionary fuer den Verkauf anlegen.
xVerkauf = {}
# Variablen in Gurobi erzeugen und hinzufuegen.
for witz in witze:
for medium in medien:
xVerkauf[witz, medium] = model.addVar(name = ('xVerkauf_' + witz + '_' + medium), vtype = GRB.BINARY, obj = preis[witz])