Esto es algo que hice para una empresa de viajes en autobús hace mucho tiempo, y nunca estuve contento con los resultados. Estaba pensando en ese viejo proyecto recientemente y pensé en revisar ese problema.
Problema:
La compañía de viajes en autobús tiene varios autobuses con diferentes capacidades de pasajeros (por ejemplo, 15 autobuses de 50 pasajeros, 25 autobuses de 30 pasajeros ... etc.). Se especializaron en ofrecer transporte a grupos muy grandes (más de 300 pasajeros por grupo). Como cada grupo necesita viajar juntos, necesitaban administrar su flota de manera eficiente para reducir el desperdicio.
Por ejemplo, 88 pasajeros están mejor atendidos por tres autobuses de 30 pasajeros (2 asientos vacíos) que por dos autobuses de 50 pasajeros (12 asientos vacíos). Otro ejemplo, 75 pasajeros estarían mejor atendidos por un autobús de 50 pasajeros y un autobús de 30 pasajeros, una combinación de tipos.
¿Qué es un buen algoritmo para hacer esto?