-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmakespan.py
18 lines (18 loc) · 928 Bytes
/
makespan.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#Função que calcula a aptidao de uma solução dada uma instância para o problema flow shop sequencing
#A aptidão desse problema é o makespan, que deve ser minimizado
#param solucao deve ser uma lista de inteiros identificando as tarefas (de 1 até n onde n é o número de tarefas da instância)
#param instancia deve ser uma lista de listas m X n, onde m é o número de máquinas e n o número de tarefas, com inteiros identificando os tempos de cada tarefa em cada máquina
def makespan (instancia, solucao):
nM = len(instancia)
tempo = [0] * nM
tarefa = [0] * len(solucao)
for t in solucao:
if tarefa[t-1] == 1:
return "SOLUÇÃO INVÁLIDA: tarefa repetida!"
else:
tarefa[t-1] = 1
for m in range (nM):
if tempo[m] < tempo[m-1] and m!=0:
tempo[m] = tempo[m-1]
tempo[m] += instancia[m][t-1]
return tempo[nM-1]