Реализация задержки (total float) в качестве ограничения Pulp в Python - PullRequest
0 голосов
/ 02 октября 2019

Определение Total Float в Google таково:

Total Float - это количество времени, в течение которого действие может быть отложено с даты его раннего начала без задержки даты окончания проекта.

В моем сценарии я уже знаю, как долго каждая задача может быть отложена от даты начала. Мой вопрос: как мне сказать Pulp добавить ограничение, которое говорит, что задача или часть задачи не должны начинаться сразу?

so task A have to start straight away
but the other tasks can start up to 2 hour ahead of the start time
I want to add this as a constraints so pulp can optimize the best distribution of tasks that hits a specific objective.
   Hour TypeofTask TaskFrequency  
0   08    A             5         
1   09    D             8         
2   08    D             7         
3   10    C             4         
4   09    B             6         
5   08    B             9         
6   10    A             2         
7   09    D             1         
8   08    C             3        
9   08    E             2         
10  09    A             7         

до сих пор единственные ограничения, которые я смог сделать

decision_variables = []
for rownum, row in df.iterrows():
    variable = str('x' + str(rownum))
    variable = pulp.LpVariable(str(variable), lowBound = 0, cat= 'Integer') 
    decision_variables.append(variable)
overall_tf = ""
for rownum, row in df.iterrows():
       for i, tf in enumerate(decision_variables):
            if rownum == i or row['taskfrequency'] == 0:
                formula =row['taskfrequency']* tf
                overall_tf+= formula
prob += (overall_tf == 400)

с нетерпением жду вашей помощи.

...