Sería el Knapsack Problem si tuvieras *un* sólo camión, pero aún si
pudieras restringirlo a llenar de a un camión a la vez, tienes al menos
dos restricciones de empaquetado (peso *y* valor) y seguramente también
tendrás la restricción de volumen o dimensiones de la carga, así que es
una instancia del 0-1 m-Dimensional Knapsack Problem (MKP) — ese
problema es NP-Hard (*creo* que es NP-Completo, pero eso es un detalle
anecdótico) de modo que programación dinámica no aplica porque tendrá
complejidad exponencial.
Eso quiere decir que el algoritmo típico que vas a encontrar en
cualquier libro de algoritmos (Cormen, Sedgewick, etc.) para resolver
Knapsack te sirve de poco y nada. En todo caso, Perl provee
Algorithm::Knapsack listo para usar y en Haskell hay soluciones
polimórficas dinámicas y no dinámicas que no pasan de 20 líneas que
puedes encontrar con simples búsquedas en Google. Encontré [1] entre mis
bookmarks, que puede ayudarte o impulsarte a saltar de un puente.
Para tu problema pareciera ser más apropiado utilizar un algoritmo
genético convencional, o uno probabilístico de la familia ACO (Ant
Colony Optimization).
[1] http://www.diku.dk/users/pisinger/95-1.pdf
--
Ernesto Hernández-Novich - @iamemhn - Unix: Live free or die!
Geek by nature, Linux by choice, Debian of course.
If you can't aptitude it, it isn't useful or doesn't exist.
GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3
Gracias Sr. Novich, esa la orientacion que buscaba para mejorar mis esfuerzos. Ahora se que debo consultar mas el area de IA.