void Busq_Tabu_Local(int **RutasMejor,int **Costos,int **Datos,int *LRec,int number, int n, int *CostoRutas,int *RutasCambio,int *Carga){ int cic,it,auxiliar; int CostoMejor; int i1 = -1; int i2 = -1; int j1 = -1; int j2 = -1; //Imprime las rutas iniciales. ImprimirMatriz(RutasMejor, number, n); //Calcula el costo de las rutas iniciales. int CostoActual = Costo(Costos, RutasMejor, Datos, number, n, CostoRutas, RutasCambio); printf("%d\n", CostoActual); clock_t start = clock(); while (1) { cic = 0; CostoMejor = CostoActual; int bol = 1; while (cic < 50) { posTaboo++; if(posTaboo==tabooTam){ posTaboo=0; } if (bol){ bol=0; CostoMejor = EntreCiudad(&i1, &i2, &j1, &j2, RutasMejor, CostoActual, Costos, Datos, LRec, number, n, CostoRutas, RutasCambio); }else{ bol=1; CostoMejor = EntreRutas(&i1, &i2, &j1, &j2, RutasMejor, CostoActual, Costos, Datos, LRec, Carga, number, n, CostoRutas, RutasCambio); } cic++; } if (i1 != -1) { auxiliar = RutasMejor[i1][j1]; RutasMejor[i1][j1] = RutasMejor[i2][j2]; RutasMejor[i2][j2] = auxiliar; i1 = -1; } if (CostoMejor < CostoActual) { printf("%d\n", CostoMejor); CostoActual = CostoMejor; if(CostoActual<4500){ clock_t end = clock(); float seconds = (float) (end - start) / CLOCKS_PER_SEC; printf("%f\n",seconds); } ImprimirMatriz(RutasMejor,number,n); } it++; } }
int main() { Base A[Max][Max]; int fil, col; printf("Cantidad de filas "); scanf("%d",&fil); printf("Cantidad de columnas "); scanf("%d",&col); LlenarMatriz(A,fil, col); printf("Matriz A\n"); ImprimirMatriz(A,fil,col); }
int main() { int fila,colu, f,c; int A[MAX][MAX]; printf("Ingrese filas "); scanf("%d",&fila); printf("Ingrese columnas "); scanf("%d",&colu); // LlenarMatriz(A,fila,colu); LlenarMatrizEspecial(A,fila,colu); ImprimirMatriz(A,fila,colu); printf("Ingrese filas del caballo "); scanf("%d",&f); printf("Ingrese columna del caballo "); scanf("%d",&c); A[f][c] = 1; ImprimirMatriz(A,fila,colu); caballo(A,fila,colu,f,c); ImprimirMatriz(A,fila,colu); }