OPTIMIZACIÓN
Se define como: ¨El procedimiento usado en el diseño de un sistema para maximizar o
minimizar algún índice de desempeño. Puede implicar la selección de un componente, un
principio de funcionamiento o una técnica.¨
Optimizar es un verbo que designa la acción de buscar la mejor forma de hacer algo.
Como tal, es un verbo transitivo que se conjuga como “realizar”. La palabra optimizar se
compone del vocablo “óptimo”, superlativo de ‘bueno’, que proviene del latín optĭmus, y
del sufijo “-izar”, del latín -izāre.
Optimizar quiere decir buscar mejores resultados, más eficacia o mayor eficiencia en el
desempeño de alguna tarea. De allí que términos sinónimos sean mejorar, optimar o
perfeccionar. Mientras que antónimos serían desmejorar o empeorar.
Se dice que se ha optimizado algo (una actividad, un método, un proceso, un sistema, etc.)
cuando se han efectuado modificaciones en la fórmula usual de proceder y se han
obtenido resultados que están por encima de lo regular o lo esperado. En este sentido,
optimizar es realizar una mejor gestión de nuestros recursos en función del objetivo que
perseguimos.
A nivel general, la optimización puede realizarse en diversos ámbitos, pero siempre con el
mismo objetivo: mejorar el funcionamiento de algo o el desarrollo de un proyecto a través
de una gestión perfeccionada de los recursos. La optimización puede realizarse en
distintos niveles, aunque lo recomendable es concretarla hacia el final de un proceso.
En el ámbito matemático la optimización es el proceso que consiste en encontrar los
mínimos y máximos de una función, algunas de cuyas ramas son:
Optimización combinatoria:
Relacionada a la investigación de operaciones, teoría de algoritmos y teoría de la
complejidad computacional. También está relacionada con otros campos, como la
inteligencia artificial e ingeniería de software. Los algoritmos de optimización
combinatoria resuelven instancias de problemas que se creen ser difíciles en general,
explorando el espacio de soluciones (usualmente grande) para estas instancias. Los
algoritmos de optimización combinatoria logran esto reduciendo el tamaño efectivo del
espacio, y explorando el espacio de búsqueda eficientemente.
Mediante el estudio de la teoría de la complejidad computacional es posible comprender
la importancia de la optimización combinatoria.
Optimización multi-objetivo:
Existe más de una función objetivo a optimizar.
Optimización de topología multi-fase
Es una técnica de simulación basada en el método de elementos finitos capaz de
determinar la distribución óptima de componentes de dos o más materiales bajo cargas
térmicas y mecánicas.
Objetivo
Consiste en la búsqueda de valores para unas determinadas variables (variables de
decisión) de forma que, cumpliendo un conjunto de requisitos representados mediante
ecuaciones y/o inecuaciones algebraicas (restricciones) que limitarán la elección de los
valores de las variables de decisión, proporcionan el mejor valor posible para una función
(función objetivo) que es utilizada para medir el rendimiento del sistema que se estudia.
Con el mejor valor se quiere indicar el mayor o el menor valor posible para la función
objetivo. En resumen, buscamos valores que cumplan unas condiciones y minimicen o
maximicen una función que caracteriza el sistema. El planteamiento abstracto general
para resolver problemas de este tipo es el siguiente:
Optimizar ƒ (𝑥1 , … . . , 𝑥𝑛 )
Sujeto a Restricciones
Donde el empleo del término Optimizar incluirá a ambos objetivos tanto de Minimización
como de Maximización. No obstante y en relación a este aspecto, la mayoría de los
planteamientos pueden hacerse con uno sólo de los objetivos.
CARACTERÍSTICAS
Mejorar la forma de realizar una actividad o sistema
Es un proceso continuo
Mejora los tiempos de respuesta en la base de datos
Programación eficiente, sincronía de procesos y pequeños ajustes en una base de
datos
Destinado a personas u organizaciones que posees medianos o grandes sistemas y
requieren reducir los tiempos de procesamiento.
Clasificación de optimizaciones:
1. Dependientes de la máquina.
Asignación de registros.
Instrucciones especiales ("idioms").
Reordenación del código.
2. Independientes de la máquina.
Ejecución en tiempo de compilación.
Eliminación de redundancias.
Cambio de orden.
Reducción de frecuencia de ejecución (invariancias).
Reducción de fuerza.
TIPOS DE OPTIMIZACIÓN
Locales
La optimización local se realiza sobre módulos del programa. En la mayoría de las
ocasiones a través de funciones, métodos, procedimientos, clases, etc. La característica de
las optimizaciones locales es que sólo se ven reflejados en dichas secciones.
Sirve cuando un bloque de programa o sección es crítico por ejemplo: la E/S, la
concurrencia, la rapidez y confiabilidad de un conjunto de instrucciones. Como el espacio
de soluciones es más pequeño, la optimización local es más rápida.
Bucles
Los ciclos son una de las partes más esenciales en el rendimiento de un programa dado
que realizan acciones repetitivas, y si dichas acciones están mal realizadas, el problema se
hace N veces más grandes.
La mayoría de las optimizaciones sobre ciclos tratan de encontrar elementos que no
deben repetirse en uno.
Una operación es invariante respecto a un bucle, si ninguno de los operandos de los que
depende cambia de valor durante la ejecución del bucle. La optimización consiste en sacar
la operación fuera del bucle.
Otra optimización es la reducción de la fuerza de una operación (sustituir una operación
fuerte por otra más débil, como la multiplicación por la suma o la diferencia por el cambio
de signo, como en el apartado anterior).
Si sacamos operaciones fuera de un bucle, pueden quedar dentro de otro bucle más
externo. El proceso podría repetirse. Si hay alguna llamada de subrutina dentro del bucle,
es difícil saber si se cambia alguna de las variables (podrían ser globales o pasarse como
argumento por referencia). En tal caso, sólo pueden aplicarse las optimizaciones si el
compilador sabe qué variables se cambian. Esto suele ocurrir sólo para ciertas funciones y
subrutinas predefinidas.
Para realizar las optimizaciones pueden hacer falta dos pasos: uno primero, en el que se
analizan los bucles y se obtiene información sobre las variables que cambian, y otro
segundo, en el que se realiza la optimización propiamente dicha. Pero también se puede
fusionar el proceso con el analizador semántico y el generador de código y hacerlo todo
en un solo pasó. Para esto, a veces hay que retrasar o cambiar el orden de algunas de las
operaciones del bucle.
Globales
La optimización global se da con respecto a todo el código.
Este tipo de optimización es más lenta pero mejora el desempeño general de todo
programa. Pueden depender de la arquitectura de la máquina.
En algunos casos es mejor mantener variables globales para agilizar los procesos (el
proceso de declarar variables y eliminarlas toma su tiempo) pero consume más memoria.
Algunas optimizaciones incluyen utilizar como variables registros del CPU, utilizar
instrucciones en ensamblador.
De mirilla
La optimización de mirilla trata de estructurar de manera eficiente el flujo del programa,
sobre todo en instrucciones de bifurcación como son las decisiones, ciclos y saltos de
rutinas.
La idea es tener los saltos lo más cerca de las llamadas, siendo el salto lo más pequeño
posible.
CASOS DE ESTUDIO
CALCULO DIFERENCIAL
Una empresa vende 0.7 toneladas de zumo y 0.3 toneladas de sobrante por cada tonelada
de materia prima. El coste de la materia prima es de 0.8€/kg, los precios de venta del
zumo y del sobrante son 2.5€/kg y 0.05€/kg, respectivamente, y el coste de producción
viene dado por la función donde x representa las toneladas de zumo producido.
Obtener:
Una expresión para calcular las ganancias netas en función de las toneladas de materia
prima.
La cantidad de zumo que se debe fabricar para que las ganancias netas sean máximas.
Solución
Sea x la cantidad de materia prima y sean z y s las cantidades de zumo y de sobrante,
respectivamente. El número de toneladas de zumo producido en función de las toneladas
de materia prima es
Y el de sobrante,
Las ganancias brutas son:
Hemos multiplicado por 1000 porque el precio es por kilo y no por tonelada.
El coste total es el coste de la materia prima más el coste de producción:
Luego las ganancias netas en función de las toneladas de materia prima son:
Calculamos la derivada:
Igualamos la derivada a 0 y resolvemos la ecuación para buscar puntos críticos:
Representamos los puntos obtenidos en la recta real y estudiamos el signo de la derivada:
Elegimos el punto x=−100 del primer intervalo, el punto x=0 del segundo y el punto x=100
del tercer intervalo:
Por el criterio de la primera derivada, la función es decreciente en el primer y tercer
intervalo y creciente en el segundo:
Nota: podemos acotar el dominio de la función al intervalo de los reales positivos ya que
no tiene sentido que se produzcan cantidades negativas de zumo.
De la monotonía, deducimos que en el punto x=−80.21la función tiene un mínimo y en el
punto x=80.21tiene un máximo. Por tanto, las ganancias netas son máximas cuando la
cantidad de materia prima es 80.21 toneladas. En toneladas de zumo, equivale a
56.15toneladas ya que .
APLICACIONES
La optimización puede ser aplicada en cualquier área donde se busque o desee realizar
una actividad de forma eficaz y eficiente, sin perder datos relevantes ni tiempo.
Áreas de aplicación:
Matemáticas
Es la selección del mejor elemento de un conjunto de elementos disponibles.
Economía
Es un proceso mediante el cual el ser humano tiende siempre a buscar la manera de
obtener el mayor rendimiento posible empleando la mínima cantidad de recursos, o
reduciendo costos que puedan calificarse de innecesarios.
En sistemas
Puede optimizar para que se ejecute más rápidamente, o sea capaz de operar con menos
recursos, o consuman menos energía.
Informática
Busca adaptar los programas informáticos para que realicen sus tareas de la forma más
eficiente posible.
Arquitectura
es aprovechar el espacio disponible para resolver la mayor cantidad de los problemas
planteados, dotando a cada espacio particular de las dimensiones necesarias para
que resulte funcional, confortable y estético, con buena iluminación y ventilación
natural (en lo posible).
CONCLUSIÓN
La optimización de funciones nos ayuda a resolver planteamientos en los que se busca la
mejora en los aspectos de costo, producción, etc.
Actualmente, en el mundo competitivo que vivimos, todas las organizaciones tienen el
reto de optimizar sus procesos para conseguir mejorar su cuota de mercado. Si nos
centramos en el sector del gran consumo, donde la competencia es aún mayor.
Existen dos grandes herramientas para la optimización de procesos industriales, Seis
Sigma y manufactura esbelta. Seis Sigma se centra en la eliminación de defectos de
calidad de los productos y los procesos, mientras que manufactura esbelta tiene como
objetivo la eliminación de pérdidas desperdicios (“mudas”) o actividades que no añaden
valor.
Utilizando estas herramientas de manufactura esbelta se logran productos de calidad a
costos bajos y en el tiempo establecido (calidad, costo y entrega)