2016-09-09 5 views
0

Я работаю с SolverStudio (надстройка Excel) и PuLP (язык оптимизации на основе Python), чтобы создать инструмент, который назначает студентов рабочим местам.Печать индексов 3-мерной переменной в PuLP для планирования

Это переменная, индексы Я хочу напечатать:

# 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] является пустой 2d параметр, определенный в SolverStudio и Name[s] содержит имена студентов.

Я поместил последовательность кода в разные положения модели. Это не имеет значения, будь то до или после инструкции prob.solve().

В настоящее время Schedule[w,d] полностью заполняется именем последнего ученика в списке студентов.

Я заметил, что предложение if полностью игнорируется. Я могу удалить его и создать тот же результат.

Есть ли другой способ рассказать Python «для каждого рабочего места и дня, распечатать назначенного студента»?

спасибо, что заблаговременно!

ответ

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]