Informe Opt

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 11

Reporte Final Optimización En La Industria

Luna Ramiro - Diaz Emiliano

19/06/2023

Resumen
En este informe, se presenta un algoritmo genético (AG) para resolver
el problema del strip packing con la capacidad de rotar los rectángulos en
90 grados. El problema consiste en acomodar una serie de objetos rectan-
gulares en un espacio limitado, minimizando el espacio(altura) utilizado.
El algoritmo genético propuesto utiliza principios evolutivos, como se-
lección, cruza y mutación, para generar y mejorar soluciones candidatas.
Se describe en detalle la representación de las soluciones, la función de
evaluación y las operaciones genéticas utilizadas, y también se mostrarán
gráficas de las soluciones encontradas y parámetros de estadı́stica.
Se llevaron a cabo experimentos comparativos de diferentes versiones
del algoritmo, demostrando que el algoritmo genético propuesto produce
configuraciones de empaquetamiento eficientes que aprovechan mejor el
espacio disponible. La capacidad de rotar los rectángulos resulta benefi-
ciosa para mejorar la utilización del espacio y el rendimiento general del
algoritmo.
Los resultados obtenidos indican que el algoritmo genético propuesto
es prometedor y efectivo para resolver el problema del strip packing con
rotación de rectángulos. Esta solución es muy buena, donde la rotación
de objetos es un factor importante a considerar.

1. Introducción
En el ámbito de la optimización y la resolución de problemas complejos,
los algoritmos genéticos han demostrado ser una herramienta poderosa. Estos
algoritmos se basan en principios inspirados por la evolución biológica y han
sido ampliamente utilizados para abordar diversas situaciones en las que se
busca encontrar soluciones óptimas o aproximadas.
En el presente informe, nos centraremos en la aplicación de un algoritmo
genético para resolver el problema del strip packing, pero con una particularidad
adicional: los rectángulos pueden girar 90 grados. El problema del strip packing
consiste en acomodar una serie de objetos rectangulares en un espacio limitado,
como una tira o un contenedor rectangular, de manera que se minimice la altura
utilizada, en este caso.
La capacidad de girar los rectángulos en 90 grados agrega una complejidad
adicional al problema. Esto implica que un rectángulo puede ser colocado tanto

1
en posición horizontal como vertical, lo que aumenta el espacio de búsqueda de
soluciones y plantea nuevos desafı́os en la búsqueda de la configuración óptima.
El objetivo de este informe es presentar un algoritmo genético diseñado
especı́ficamente para abordar el problema del strip packing con rotación de
rectángulos. El algoritmo se basa en los principios de selección, cruza y muta-
ción de la información genética, adaptándolos al contexto de la resolución de
este problema particular.
A lo largo de este informe, describiremos en detalle el diseño y funciona-
miento del algoritmo genético propuesto, ası́ como los componentes clave que
lo conforman, como la representación de la solución, la función de evaluación y
las operaciones genéticas utilizadas. Además, presentaremos los resultados ob-
tenidos mediante experimentos y comparaciones con otros enfoques existentes,
con el fin de evaluar la eficacia y eficiencia del algoritmo en la resolución del
problema.
En resumen, este informe ofrece una solución innovadora y robusta para el
problema del strip packing con rotación de rectángulos, utilizando un enfoque
basado en algoritmos genéticos. Esperamos que los resultados y conclusiones
presentados en este informe sean de utilidad para aquellos interesados en abordar
este desafiante problema de optimización combinatoria.

2. Propuesta Algoritmica
Como se mencionó anteriormente, se intenta resolver el problema de strip
packing con dos alternativas, una de ellas es permitiendo que el algoritmo pue-
da rotar en 90° los rectángulos, y la otra no permite rotación, el método que se
utilizara será elección del usuario. Para llegar al algoritmo más eficiente, parti-
mos desde la versión inicial, analizamos una instancia de prueba, y tras varios
cambios y pruebas, logramos una gran mejora en cuanto a la altura máxima
alcanzada con respecto a esta versión primitiva.
Estado inicial del programa:
El programa con el que contamos es capaz de apilar rectángulos en una
superficie de ancho fijo y altura infinita. Estos rectángulos se ingresan en la tira
uno por uno, al lado del otro, y cuándo ya no hay más espacio a lo ancho en la
tira actual para acomodar un nuevo rectángulo, se establece el “alto de la tira”
y este será igual a la altura máxima de los rectángulos que están ubicados en la
tira actual. Luego, la próxima figura se coloca arriba de esta tira (arrancando
desde la altura máxima de la tira de abajo), repitiendo el mismo proceso hasta
terminar de colocar los rectángulos. El resultado final obtenido es el alto total de
la mejor combinación de rectángulos alcanzada, es decir, la suma de las alturas
de todas las tiras de la generación que logró minimizar dicha cantidad.
A este programa se le realizaron modificaciones iniciales relacionadas con
la consigna. En primer lugar, se buscó la manera de hacer que el programa
sea escalable, pudiendo ingresar la instancia del problema deseada (cantidad de
rectángulos a apilar) y logrando que el programa trabaje con esta. Esto se hizo
con una función que lee un archivo de tipo “txt” en el que están los rectángulos

2
a ingresar, y en base a este armar los rectángulos con los que se va a traba-
jar en la resolución del problema. Posteriormente, procedimos a determinar las
condiciones sobre cuándo un rectángulo debı́a rotar y cuándo no. Finalmente,
considerando las rotaciones, logramos expresar el resultado final utilizando mos-
trando dos matrices del mismo tamaño, donde una contiene el orden de inserción
de los rectángulos mas óptimo y la otra matriz guarda en ella datos relacionados
con la rotación de los rectángulos en la configuración mostrada. Para ello, los
rectángulos rotados tendrı́an un “1” asociado, y aquellos que permanecieran en
su estado inicial (no rotados) tendrı́an un “0”. Por ejemplo si queremos saber si
el rectángulo ubicado en la posición i de la matriz 1 fue o no rotado, debemos
mirar la posición i de la matriz de rotaciones y fijarnos si tiene un 1 o un 0.

2.1. Primer Incremento


La primera consideración que tuvimos fue ingresar los rectángulos de la ma-
nera original hasta que el ancho del rectángulo a ingresar supere el ancho máxi-
mo permitido en la tira. En este caso, se comprobaba si rotando el rectángulo
podı́amos ingresarlo de igual manera (para que esto suceda, el rectángulo debı́a
ser más ancho que alto) y si se cumplı́a esta condición se lo colocaba en la tira
actual. Esta configuración nos permitió minimizar la altura máxima aproxima-
damente en un 8 % con respecto a los resultados iniciales.
Si bien logramos cierta mejora, decidimos seguir pensando en mejorar la
solución para encontrar resultados aún mejores.

2.2. Segundo Incremento


Tras varias jornadas de análisis, decidimos modificar la función de fitness,
comprobando las dimensiones del rectángulo a ingresar antes de ingresarlo, sin
importar si este irá al principio o final de la tira. Establecimos una condición a
evaluar para cada rectángulo, que de cumplirse, obligarı́a a este a rotarse antes
de ser ingresado, independientemente del contexto. La condición fue la siguiente:

if altor > altotira and anchor < altor

Esta condición evalúa si el rectángulo es más alto que la tira (cuya altura
está definida por el rectángulo más alto colocado sobre ella) y que también este
mismo sea más alto que ancho. De este modo, al rotarlo conseguimos disminuir
la altura de la tira sobre la que se colocará este rectángulo. Con esta condición
aplicada sobre la función de fitness original y sobre la instancia de prueba,
obtuvimos una minimización de los resultados de aproximadamente un 7 % con
respecto a la versión anterior.

2.3. Tercer Incremento


Por último, decidimos refinar aún más la condición de rotado, añadiendo
a la consideración anterior otra más, mediante la cual evaluarı́amos aquellos

3
rectángulos que no cumplieran con la primera condición. La nueva condición
fue la siguiente:

if altor < altotira and anchor < altotira and altor < anchor

Esta condición verifica que tanto el alto como el ancho del rectángulo no
sean mayores al alto de la tira sobre la que se colocarı́a, y además, se controla
que el rectángulo sea más alto que ancho. En este caso, la rotación nos permite
minimizar el ancho que esta pieza ocupará, dado que independientemente de la
manera en la que se coloque, este no aumentará la altura máxima de la tira,
pero optamos por ingresarlo de manera que ocupe el menor ancho posible.
Esta configuración nos permitió minimizar los resultados aproximadamen-
te en un 3 % con respecto a la versión anterior, y serı́a finalmente el último
incremento del programa.

3. Descripción del Problema


Propuesta
Presentar un algoritmo genetico (AG) basado en el algoritmo dado en el
trabajo práctico n° 5 de la materia, que resuelva una versión del problema
de Strip Packing (SPP) de manera tal que los rectángulos puedan ser rotados
90ž, lo cuál permitirá acomodar los rectángulos de 2 maneras diferentes, con
la consecuente posibilidad de minimizar aún más el material de desecho por
permitir la rotación de los rectángulos.
Consideraciones Generales

Se necesitará modificar de alguna manera la codificación de las posibles


soluciones de manera tal que la misma indique no sólo la secuencia de
ubicación en el strip de los rectángulos, sino también se debe indicar si
cada rectángulo va en su posición original o rotado.
La función objetivo, claramente tiene que ser re-diseñada según la nueva
codificación aunque se sigue manteniendo el corte guillotina.

También es necesario revisar los operadores genéticos (crossover y muta-


ción) según la nueva codificación.
Se brindará un conjunto de instancias de SPP para resolver. El programa
deberá solicitar la instancia a resolver por su nombre y la misma deberı́a
estar almacenada como archivo de texto simple
El AG deberá también preguntar si permite o no rotación. Si NO permite
rotación, deberı́a actuar como el AG del Práctico 5 y si permite rotación
deberı́a realizar la acciones correspondientes según el nuevo diseño. En
sı́ntesis el AG de la propuesta deberı́a tener dos comportamientos, con
(AGr) y sin rotación (AGnr).

4
Figura 1: Instancias a resolver

4. Resultados
A continuación se mostraran los resultados de las ejecuciones para los dos
modos del algoritmo.Primero se mostraran las soluciones y estadı́sticas, y al
costado hay un gráfico que muestra cómo quedarian las figuras posicionadas
según la solución hallada.

5
4.1. Utilizando algoritmo en modo rotación(AGR)

Figura 2: Resolución de la instancia spp9a.

Figura 3: Resolución de la instancia spp9b.

Figura 4: Resolución de la instancia spp10.

6
Figura 5: Resolución de la instancia spp11.

Figura 6: Resolución de la instancia spp12.

Figura 7: Resolución de la instancia spp13.

7
4.2. Utilizando algoritmo en modo no rotación(AGnR)

Figura 8: Resolución de la instancia spp9a.

Figura 9: Resolución de la instancia spp9b.

Figura 10: Resolución de la instancia spp10.


Figura 11: Resolución de la instancia spp11.

Figura 12: Resolución de la instancia spp12.

Figura 13: Resolución de la instancia spp13.


5. Conclusiones
En conclusión, al comparar las ejecuciones de un problema de strip packing
utilizando dos algoritmos diferentes, uno que permitı́a girar las figuras en 90° y
otro que no lo permitı́a, se encontró consistentemente que el algoritmo que per-
mitı́a el giro de las figuras obtuvo mejores resultados en términos de eficiencia y
optimización del espacio. Estos resultados sugieren que permitir la rotación de
las figuras durante el proceso de empaquetado puede conducir a una mejor utili-
zación del espacio disponible y una mayor capacidad de acomodar las diferentes
formas y tamaños de los objetos a empaquetar. Esta conclusión tiene implica-
ciones importantes en la mejora de la planificación y organización de objetos en
diversos contextos de aplicación, donde el algoritmo que permite el giro de las
figuras puede ser preferible para lograr una mejor eficiencia en el empaquetado.

Agradecimientos
1. Profesor de la UNSL Guillermo Leguizamon,por dictarnos la materia y
estar atento a nuestras consultas

2. Profesor Eduardo Campazzo por dictarnos curso de “Python y libreria


numpy” en CACIC 2022 realizado en La Rioja.

A. Sección del AGR dónde se evalua la condi-


ción de rotación

Figura 14:

10
B. Sección del AGnR

Figura 15:

11

También podría gustarte