在PuLP中打印三维变量的索引以进行调度

时间:2016-09-09 07:15:34

标签: python optimization scheduling pulp

我正在使用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“每个工作地点和日期,打印指定的学生”?

非常感谢你!

1 个答案:

答案 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]