Rutina para optimizar cortes. Versión 1.0

Ya he contado la idea de la rutina para optimizar cortes. Pretendo hacerlo en varias versiones sucesivas, que vayan incorporando las mejoras. La primera es poco ambiciosa, porque los proyectos demasiado ambiciosos muchas veces no llegan a arrancar.

Versión 1.0

Ordena las piezas de pedido de mayor a menor, y va usando las barras a cortar. Prueba con la primera de la lista, si cabe la pone, y si no cabe, prueba con la siguiente. Cuando lo que queda de cada barra es más pequeño que lo que mide la pieza más pequeña, que es la última de la lista de piezas, se da por terminada la barra y se empieza con la siguiente.

A modo de ejemplo, usando baras de 6m, con el patrón de solución óptima y con n = 4 basta para hacerlo fracasar:

Las piezas de pedido serían: 6.00, 3.00, 3.00, 2.00, 4.00, 1.50, 3.00, 1.50, 1.20, 1.20, 2.40, 1.00, 2.00, 3.00. El consumo teórico sería de 4 barras de 6m. Y debería ser, porque existe solución sin resto: {6.00}, {3.00, 3.00}, {2.00, 4.00}, {3.00, 1.50, 1.50}, {2.40, 1.20, 1.20}, [3.00, 2.00, 1.00}. Sin embargo, la versión 1.0 fracasa:

  1. Ordena las piezas de mayor a menor (nº de piezas · longitud): 1 · 6.00, 1 · 4.00, 4 · 3.00, 1 · 2.40, 2 · 2, 20 · 1.5, 2 · 1.20, 1 · 1.00
  2. Agrupa. según el orden que tiene, en listas cuya suma sea menor o igual a 6:
    {6.00}, {4.00, 2.00}, {3.00, 3.00}, {3.00, 3.00}, {2.40, 2.00, 1.50}, {2.00, 1.50, 1.20, 1.20}, {1.00}

Funciona correctamente mientras trabaja con las piezas cuyo denominador es 1, 2, 3. Pero en la quinta agrupación se meten elementos de denominador 3, 4 y 5. La cosa se descuadra y fracasa, necesita una barra de más, que para mayor dramatismo genera un retal de 5m.

La rutina es muy incompleta, no optimiza nada, pero debería ser el punto de partida.

 

Anuncios

Acerca de Pablo Nieto Cabezas

Arquitecto

Publicado el 19 diciembre, 2016 en Informática, Tecnología y etiquetado en , . Guarda el enlace permanente. 2 comentarios.

  1. Un simple bucle de excel te soluciona el corte lineal.

    • La verdad es que lo he pensado en Javascript. Supongo que se podría escribir en VBA, y que será un script sencillo. Pero debo reconocer que no tengo mucha experiencia en programar macros en Excel.
      Quizá intente hacerlo en Excel para aprender…

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: