python - mathematical - scipy optimize bisect
¿Cómo crear una función de embalaje optimizada en python? (3)
Entonces me dieron la tarea de crear un módulo de envío para un sistema de tienda en línea. Puede ser un poco exagerado, pero me gustaría crear uno que sepa cómo empacar paquetes de la manera más optimizada. Habiendo aprendido la programación simplemente al hacerlo, esta es un área en la que aún no tengo conocimiento. De todos modos, puedo dar una breve descripción del problema real.
Por lo tanto, cuando los usuarios hagan las cosas en las tiendas virtuales, tendrán x productos en su carrito con diferentes tamaños y pesos. Así que quiero dar esa lista de productos a la función y dejar que descubra cómo estos productos deben empaquetarse en paquete (s).
- longitud máxima del paquete: 100
- ancho máximo del paquete: 50
- altura máxima del paquete: 50
- peso máximo del paquete: 20
Cada producto tiene un peso, largo, ancho y alto también.
Dado que los paquetes y productos son básicamente cajas, supongo que esto sería bastante complejo, ya que hay diferentes formas de colocar los productos dentro del paquete. Mi objetivo no es hacer la función de embalaje perfecta, pero me gustaría hacer algo mejor que simplemente poner productos dentro del paquete hasta que se alcance un límite.
Ahora, no espero que ustedes hagan esto por mí, pero lo que me gustaría preguntar es tres cosas.
- ¿Dónde puedo encontrar buenos recursos en línea que me enseñen los elementos básicos necesarios?
- ¿Hay algunas herramientas nativas de python que sería bueno usar?
- Algunos consejos de lo que debo ser consciente, trampas, etc.
Como dije, no pretendo que esto sea perfecto y esté 100% optimizado, pero me gustaría terminar con algo que se acerque. No me gustaría que los usuarios sientan que la tarifa de envío será mucho más alta de lo que realmente es.
Ese es su problema típico de mochila . Se pueden encontrar muchas soluciones para diferentes idiomas en el Código Rosetta .
Este parece ser un buen problema para aplicar el algoritmo simplex o algún tipo de algoritmo genético . Si nunca escuchó sobre este último, le recomiendo que lea sobre ellos. Como puedo ver en su pregunta, usted está haciendo esta mejora porque le gusta hacer que las cosas funcionen de manera óptima, y no porque se lo hayan indicado. ¡Imagínese cuando les diga que aplicó una técnica de Inteligencia Artificial para resolver su problema!
Existen muchos algoritmos directos que resuelven su problema, pero esta puede ser una gran oportunidad para aprender algunos cálculos evolutivos. Algunos enlaces interesantes sobre algoritmos genéticos [todos, siéntanse libres de editar y agregar]:
- Estas páginas presentan algunos fundamentos de algoritmos genéticos.
- Algoritmos genéticos en inglés simple
Suerte con eso!
Manuel
El hecho de que tenga altura, longitud y ancho lo hace más difícil que un simple problema de mochila. Aquí hay una discusión interesante sobre un problema de mochila en 3D .
Aquí hay un documento sobre el tema de los mismos tipos.