Alguém já teve contato com o algoritmo de SRP:Shift Redistribution Procedure, poderia dar um conferida nesse código para verificar se faz sentido!
Schedule SRP(Schedule s, Lib b, Constraints c){
for(int day = 0; day < n_days - 1; day++){
for(int funcionario = 0; funcionario < n_funcionario; funcionario++ ){
List* list1 = s->funcionario_per_day[funcionario]; //Seleciona uma lista do Grafo multipartida
Node* n1 = getNodeByDay(list1,day); // Seleciona o dia em questão na lsita
for(int funcionario2 = 0; funcionario2 < n_funcionario; funcionario2++){
List* list2 = s->funcionario_per_day[funcionario]; //Seleciona uma lista do Grafo multipartida
Node* n2 = getNodeByDay(list2,day); // Seleciona o dia em questão na lsita
n1->next = n2;
Node* p_n1;
Node* p_aux;
if(day > 0){
p_n1 = get NodeByDay(list2, day - 1);
p_aux = p_n1->next;
p_n1->next = n1;
}
int** matrix_cost = calculaCustosShiftDay(day, s, b, c);
if(d > 0)
p_n1->next = p_aux;
n1->next = aux;
}
}
recombineScheduleWithCosts(s, matrix_cost, day);
}
}