96 387 70 69 info@foreplanner.com

Optimización: 4 errores que debes evitar

error

Errores a evitar para resolver un problema de optimización

Que la optimización puede mejorar los procesos en las empresas es un hecho irrefutable hoy en día. Por eso, cada vez hay más compañías dispuestas a desarrollar nuevos proyectos de optimización para mejorar sus procesos: producción, compras, planificación, turnos, transporte … hay infinidad de procesos en los que la optimización supone enormes mejoras. Sin embargo, en ocasiones puede resultar una tarea tremendamente complicada en la que se termina fracasando.

En este artículo vamos a analizar los errores más comunes y daremos algunos consejos y alternativas para poder evitarlos, claves para la optimización y mejora productividad.

1) Intentar replicar lo que ya se está haciendo

Una de las mayores ventajas que tiene modelizar un problema es que te permite utilizar la capacidad de cómputo de los ordenadores y así poder explorar una cantidad de soluciones tan grande que ningún humano podría llegar a plantearse.

Pero si empezamos a limitar el modelo imponiendo todos los criterios que habitualmente seguimos, finalmente lo único que conseguiremos es que la solución obtenida sea la misma que ya conseguíamos a mano. Por supuesto, esto será decepcionante, dándonos la sensación de que todo el trabajo realizado no ha servido de nada.

Para evitar este problema la solución es limitar el modelo solo con aquellas restricciones que sean estrictamente necesarias. Por ejemplo, si una operación solo se puede hacer en una máquina, naturalmente hay que añadir esa restricción. Pero lo que no tiene sentido es hacerlo por el hecho de que normalmente ese tipo de operaciones se hacen en esa máquina, aunque se podrían hacer en otra.

2) Miedo a simplificar  

A veces queremos capturar en un modelo absolutamente toda la casuística posible, lo que da como resultado modelos tan complicados que ni siquiera se pueden utilizar.

En estos casos, antes de añadir nuevas variables al modelo hay que preguntarse si estas realmente nos aportan algo o si solo estamos reflejando un caso particular que no es representativo del problema a resolver.

Veamos con un ejemplo a qué tipo de casos nos referimos. En algunas ocasiones, por limitaciones de acceso, a algunas calles solo se puede acceder con un tipo de vehículos. Un día como no teníamos disponibles vehículos de ese tipo y el pedido era urgente, lo terminamos llevando con otro vehículo y nos las arreglamos para hacérselo llegar al cliente.

¿Esto significa que hay que contemplar la posibilidad de que cualquier vehículo pueda servir a ese cliente, pero que solo se pueda hacer cuando el vehículo que puede acceder no esté disponible, que el pedido sea urgente y además haya que calcular tiempos de servicio especiales para estás situaciones?

Rotundamente no, nunca hay que modelar un problema enfocándolo a resolver un caso puntual. Lo que sí es útil e incluso necesario en ocasiones es disponer de una herramienta que te proporcione la flexibilidad de intervenir en esos casos anómalos y así poder seguir haciéndolo todo desde la herramienta.

Es importante entender que esto no significa que haya que simplificar hasta el extremo y que al final lo que estemos resolviendo no se parezca a nuestro problema real. Sino que hay que ser capaces de saber que es imprescindible y no tener miedo de descartar lo que no lo es.

Básicamente este punto lo podríamos resumir con la cita de Einstein en la que afirma que» todo debe hacerse tan simple como sea posible, pero no más»

Simplificar

3) Obsesión por el óptimo

Cuando vamos resolver un problema todos queremos el óptimo y es natural, quién no va a querer obtener la mejor solución posible. Pero… ¿realmente es tan importante hallar el óptimo?

Aunque parezca extraño, la respuesta es que no. Donde tendríamos que poner el foco, es en mejorar lo que teníamos previamente. Si por ejemplo teníamos una ruta de 100Km y la hemos reducido a 80Km, lo importante es que hemos mejorado un 20% y no si esa solución es óptima.

Y con esto no quiero decir que haya que conformarse con cualquier cosa. El problema es que la inmensa mayoría de problemas reales son tan difíciles que no se pueden resolver con métodos exactos. Por tanto, si nos ofuscamos en que nuestra solución sea la óptima, lo más probable es que invirtamos mucho tiempo y esfuerzo para terminar abandonando ante la imposibilidad de obtener soluciones óptimas.

Por último, no quiero finalizar este apartado sin hacer una aclaración sobre las comparaciones con la solución real. Parece una obviedad, pero la comparación entre la solución real y la del algoritmo tiene que ser justa. Con esto quiero decir, que si a un vehículo le caben n kg y acabamos cargándolo con alguno más “porque si es poco no pasa nada”, el algoritmo no lo va a hacer ya que si el máximo son n, se ceñirá a esos n. Por eso, cuando comparemos las soluciones puede parecer que no hemos mejorado nada, pero es que las condiciones no son las mismas en ambos casos.

4) No prestar suficiente atención a la calidad de los datos

Hasta ahora nos hemos centrado en la parte de modelar el problema, pero no hay que olvidar la importancia de tener unos buenos datos de entrada. Básicamente, lo podemos resumir a todo a que, si los datos de entrada son malos la solución obtenida necesariamente lo será, no importa el algoritmo que se utilice.

Imaginemos que no hemos seguido el consejo anterior y con mucho esfuerzo hemos conseguido obtener la solución óptima para un problema de programación de la producción. Para cada orden, una operación no podrá empezar hasta que no haya terminado su predecesora en la otra máquina. En diagrama de Gantt que tenemos a continuación vemos representada la solución:

secuenciación 1

Aquí vemos que una operación de la esmaltadora no puede empezar hasta que no haya terminado su predecesora en la prensa e igual con el resto de máquinas.

Ahora supongamos que nuestros datos no son buenos y la duración de la segunda operación de la prensa (la de rojo) no tarda 5 minutos, sino que tarda 45. Esto supondría que la sucesora en la esmaltadora no pudiera empezar a la hora programada y los retrasos se extenderían a toda la programación provocando un efecto látigo.

secuenciación con esperas

 

 

Así que ni con la mejor solución posible seríamos capaces de evitar los efectos de tener unos datos de entrada erróneos y como vemos en el diagrama, no habríamos conseguido evitar que las máquinas estuvieran largos periodos paradas.

 Conclusión

Cuando se resuelve un problema de optimización es importante evitar replicar lo que ya se hace para poder aprovechar completamente el potencial de realizar una optimización automatizada.

Por otro lado, es esencial saber modelizar lo que es realmente representativo del problema, ni más ni menos.

Además de no ofuscarse buscando la solución óptima, cuando lo que nos debe preocupar es mejorar todo lo posible.

De este modo conseguiremos modelos que representen lo que queremos resolver, no perderemos el tiempo buscando un óptimo imposible de alcanzar y podremos hallar soluciones en un tiempo de cómputo razonable.

Por último, no hay que olvidar la importancia de los datos, ya que por muy bueno que sea el modelo, de nada servirá si los datos que recibe no lo son.