Informe Opt
Informe Opt
Informe Opt
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.
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.
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.
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)
6
Figura 5: Resolución de la instancia spp11.
7
4.2. Utilizando algoritmo en modo no rotación(AGnR)
Agradecimientos
1. Profesor de la UNSL Guillermo Leguizamon,por dictarnos la materia y
estar atento a nuestras consultas
Figura 14:
10
B. Sección del AGnR
Figura 15:
11