void vnd(int n, int *s, int *p, int *w, int b, int penalidade, int *peso_objetos, int *fo) { int *sl; int peso_objsl,fosl; sl = cria_vetor(n); for (int i = 0; i < n; i++) sl[i] = s[i]; peso_objsl = *peso_objetos; fosl = *fo; int k = 1; while(k <= 2) //while 1 { switch(k){ case 1: descida1opt(n, sl, p, w, b, penalidade, &peso_objsl, &fosl, 0.8); break; case 2: descida2opt(n, sl, p, w, b, penalidade, &peso_objsl, &fosl); break; } if (fosl > *fo) { for (int i = 0; i < n; i++) s[i] = sl[i]; *fo = fosl; *peso_objetos = peso_objsl; k = 1; } else k++; }//while 1 printf("-------------------------------------------------\n"); printf("Melhor solucao encontrada pelo VND:\n"); printf("Funcao objetivo: %d\n", *fo); printf("Peso da mochila: %d Inviabilidade = %d \n", *peso_objetos, MAX(0,*peso_objetos - b)); printf("-------------------------------------------------\n"); libera_vetor(sl); }//vnd