我正在使用SolverStudio(Excel加载项)和PuLP(基于Python的优化语言)来创建一个工具,将学生分配到工作场所。
这是我要打印其索引的变量:
# Decision variable, =1 if student s is assigned to working place w on day d; 0 otherwise
Assignment = LpVariable.dicts("Assignment",(Students,Working_places,Days),0,1,LpBinary)
对于每个工作地点和日期,我想输出在那里分配的学生的姓名,以便创建时间表。
我目前的做法是:
for w in Working_places:
for d in Days:
for s in Students:
if Assignment[s][w][d] == 1:
Schedule[w,d] = Name[s]
Schedule[w,d]
是SolverStudio中定义的空2d参数,Name[s]
包含学生的姓名。
我将代码序列放在模型的不同位置。无论是在prob.solve()
陈述之前还是之后,它都没有区别。
目前,Schedule[w,d]
完全填写了学生名单中最后一名学生的姓名。
我发现if子句完全被忽略了。我可以删除它并生成相同的输出。
是否有不同的方式告诉Python“每个工作地点和日期,打印指定的学生”?
非常感谢你!
答案 0 :(得分:0)
在此期间我自己发现了错误:
for w in Working_places:
for d in Days:
for s in Students:
if Assignment[s][w][d].varValue == 1:
Schedule[w,d] = Name[s]