Buenas, tengo problemas con el ejercicio 2
Para resolver el problema de inicialización calculé un máximo de items que puedo tener de cada tipo de comida según la regla (2 * W/S), luego puedo inicializar con un random entre 0 y ese numero.
Para las condiciones de borde, penalice el valor de fitness calculando cuanto me estoy "pasando", ya sea por el monto máximo a gastar o por la cantidad de items de cada tipo de menu.
El problema es que mi fitness se estanca en un valor y el algoritmo termina por timeout y me da una solucion que se pasa mucho del monto a gastar, por ej:
con una entrada:
N: 10
S: 4
N - G - P - H
0 - 17 - 8 - 1
1 - 15 - 9 - 3
2 - 19 - 8 - 1
3 - 10 - 8 - 4
4 - 12 - 10 - 4
5 - 6 - 6 - 1
6 - 1 - 19 - 4
7 - 4 - 18 - 2
8 - 10 - 9 - 1
9 - 13 - 13 - 2
W: 54
La evolucion del fitness:
Fitness: 15.0
Fitness: 15.0
Fitness: 16.0
Fitness: 16.0
Fitness: 18.0
Fitness: 18.0
Fitness: 21.0
Fitness: 21.0
Fitness: 21.0
Fitness: 21.0
Fitness: 21.0
Fitness: 21.0
Fitness: 22.0
Fitness: 22.0
Fitness: 22.0
Fitness: 22.0
....
El algoritmo se estanca con un fitness 22 y no sale de ahi hasta que termina por timeout, probe varias tipos de penalizaciones, incluso penalizar con fitness=0.
El resultado es:
1 1
2 1
3 1
4 4
5 3
6 1
7 1
8 1
9 1
10 1
Monto total: 152 (mucho mayor a W)
gracias!