Programación Lineal Multiobjetivo aplicada al mundo...
Transcript of Programación Lineal Multiobjetivo aplicada al mundo...
Facultad d
e C
iencia
s S
ocia
les y
Jurí
dic
as
UNIVERSIDAD DE JAÉN Facultad de Ciencias Sociales y Jurídicas
Trabajo Fin de Grado
Programación Lineal Multiobjetivo
aplicada al mundo empresarial
Alumno: María López Valdivia
Julio, 2016
Agradecimientos
En primer lugar a mi tutora Ana María Martínez Rodríguez por resolver las
dudas que hayan ido surgiendo en el trascurso de la realización de este trabajo.
Un agradecimiento especial a mi pareja Daniel Pegalajar Luque, sin su ayuda
este trabajo no hubiera salido adelante. Gracias por apoyarme en los momentos malos,
aguantar mis lloros, enfados y cabreos; y dedicarme esas palabras que solo tú sabes
para sacar lo mejor de mí.
A Tita, por darme paz y tranquilidad, cuando te tumbabas a mi lado y me
observabas la concentración se apoderaba de mí y todo era mucho más fácil; además de
esos momentos de descanso acariciándote y jugando contigo me animaban a continuar.
Nunca pude imaginar como un animal tan pequeñito como tú podría aportar tanto a una
persona.
A mis padres Antonio y Fermina, aunque no os tenga a mi lado sin vosotros no
hubiera podido andar este camino y ver el final de el con este trabajo, sé que en la
distancia me apoyáis y con cada llamada lo demostráis.
A mis abuelos Juan y Rafaela, solo con ver vuestra cara de satisfacción y orgullo
el día de mi graduación me disteis fuerzas para continuar toda la vida.
A mi abuela María, allá donde estés sé que estarás orgullosa de mí y ver que he
conseguido lo que muchos no creían que conseguiría jamás.
2
Resumen
Hoy en día, la toma de decisiones se ha convertido en un apartado trascendental
en la gestión de una organización. Una mala decisión puede lastrar el futuro de una
empresa, así como una buena catapultarla al éxito. Para facilitar esta tarea, existe lo que
se denomina “Programación Lineal Multiobjetivo”.
El presente trabajo tiene como objeto la descripción de esta técnica de una forma
concisa, centrándose en su aplicación en el ámbito empresarial, sector en el que
destacan los resultados en cuanto a investigación. Se analizarán las principales técnicas
de resolución: e-restricciones, ponderaciones, programación por metas… y se ilustrarán
mediante ejemplos que ayudarán a entender las bondades y ventajas de estas técnicas.
Se pretende mostrar con esto el gran potencial que posee este campo y como con el
transcurrir de los años ha ido convirtiéndose en pieza fundamental en la gestión
empresarial.
Abstract
Nowadays, decision making has become an important theme in the management
of an organization. A bad decision can wreck the future of a company as well as a good
one can catapult to success. In order to facilitate this, “Multiobjective Linear
Programming” has been created.
This essay aims to study this technique in a concise way, focusing on its
application in business, a sector with great results in terms of papers. Main resolution
methods will be discussed: e-restrictions, weights analysis, goal programming… and
will be illustrated by examples that will help us to understand the benefits and
advantages of these techniques. It is intended to show that the great potential of this
field and as with the passing of the years it has become a fundamental part in business
management.
3
Tabla de contenido 1. INTRODUCCIÓN ................................................................................... 5
1.1. MOTIVACIÓN DEL PROYECTO SELECCIONADO ........................ 6
1.2. OBJETIVOS ........................................................................................ 6
1.2.1. OBJETIVO GENERAL ................................................................. 6
1.2.2. OBJETIVOS ESPECIFICOS ......................................................... 7
2. ESTADO DEL ARTE.............................................................................. 8
2.1. ¿QUÉ ES LA PROGRAMACIÓN LINEAL MULTIOBJETIVO? ....... 8
2.2. ANTECEDENTES HISTÓRICOS DE LA PROGRAMACIÓN
LINEAL MULTIOBJETIVO .................................................................................... 8
2.3. PROGRAMACIÓN LINEAL VS PROGRAMACIÓN LINEAL
MULTIOBJETIVO ................................................................................................. 12
3. FUNDAMENTOS TEÓRICOS DE “PROGRAMACIÓN LINEAL
MULTIOBJETIVO” ................................................................................................... 14
3.1. PLANTEAMIENTO DEL PROBLEMA ............................................ 14
3.2. OPTIMALIDAD PARETIANA ......................................................... 14
3.3. MATRIZ DE PAGOS (PAY-OFF MATRIX)..................................... 16
3.4. TASA DE INTERCAMBIO ............................................................... 17
4. MÉTODOS DE RESOLUCIÓN ............................................................ 18
4.1. PRINCIPALES TÉCNICAS DE RESOLUCIÓN ............................... 18
4.2. TÉCNICAS GENERADORAS .......................................................... 18
4.2.1. MÉTODO DE LAS PONDERACIONES .................................... 19
4.2.2. MÉTODO DE LAS -RESTRICCIONES .................................... 20
4.2.3. SIMPLEX MULTIOBJETIVO .................................................... 20
4.3. TÉCNICAS SATISFACIENTES ....................................................... 21
4.3.1. PROGRAMACIÓN POR METAS .............................................. 21
5. EJEMPLOS ........................................................................................ 28
5.1. EJEMPLO 1: “MÉTODO DE LAS PONDERACIONES” .............. 28
4
5.2. EJEMPLO 2:”MÉTODO DE LAS -RESTRICCIONES” .................. 31
5.3. EJEMPLO 3: “METAS CON PRIORIDADES O LEXICOGRAFICAS”
35
5.4. EJEMPLO 4:”METAS SIN PRIORIDADES” .................................... 40
6. CONCLUSIONES GENERALES ......................................................... 42
7. FUTURAS LÍNEAS DE INVESTIGACIÓN ......................................... 43
8. ÍNDICE DE FIGURAS .......................................................................... 45
9. ÍNDICE DE TABLAS ........................................................................... 45
10. BIBLIOGRAFÍA ................................................................................... 46
5
1. INTRODUCCIÓN
Durante mis estudios en el Grado en Estadística y Empresa en la Universidad de
Jaén, he cursado varias asignaturas dedicadas a la “Investigación Operativa”, materia
que ha estudiado y planteado soluciones a problemas procedentes de ámbitos
principalmente enfocados al mundo empresarial. Entre los temas impartidos destaca la
“Programación Lineal”.
Los problemas contenidos en la “Programación Lineal” solo tienen en cuenta
una única función objetivo, además estos son planteados y mediante la aplicación de
una serie de algoritmos se resuelven, obteniendo en el proceso un único valor óptimo.
Sin embargo, como bien sabemos la realidad es bastante diferente ya que día a
día nos enfrentamos al hecho de tener que tomar decisiones entre varias opciones. Y
depende de cómo tomemos éstas las cosas sucederán de una manera u otra. Por tanto el
hecho de tomar decisiones y hacerlo correctamente es un proceso que adquiere una gran
importancia en la actualidad, tanto a nivel personal como a nivel empresarial para
cualquier organización.
En relación con mis estudios en el área empresarial, puedo decir que la toma de
decisiones dentro de una empresa está a la orden del día y es uno de los factores que
determina la futura supervivencia de ésta, puesto que en una empresa se establecen una
serie de objetivos, generales o específicos, hacia los cuales deben enfocarse y
encaminarse todo y cada uno de los esfuerzos que realice la organización para llegar a
su consecución y de esta forma mejorar o estabilizar la eficacia y eficiencia de la
entidad.
Es por esto que los problemas que plantea la “Programación Lineal” son una
herramienta que se nos queda corta en este aspecto y hay que dar un paso más adelante
para llegar a la “Programación Lineal Multiobjetivo” técnica que plasma
fehacientemente la realidad empresarial.
Con este trabajo de investigación busco introducirme en las diferentes técnicas
que componen este ámbito y exponer cada una de ellas de una forma concisa para
demostrar su amplio campo de aplicación, así como de las bondades que las
caracterizan.
6
1.1. MOTIVACIÓN DEL PROYECTO SELECCIONADO
La decisión multiobjetivo es un campo presente en todos los aspectos de nuestra
vida; cada mañana nada más levantarnos ya tenemos que decidir entre si desayunar
leche o zumo y ver que ropa es la adecuada para ese día. Estas decisiones parecen
fáciles de tomar pero hay otros campos en los que se nos presentan decisiones cruciales,
donde evidentemente, es mucho más complicado dilucidar saber cuál es la adecuada o
acertada.
En el mundo empresarial estas situaciones están presentes a diario ya que hasta
la ley empresarial por excelencia “Fabricar mucho, gastando poco” lleva implícita
decisiones de este tipo. Es por ello necesario explotar estas soluciones que ofrecen un
punto de vista más cercano a la realidad que nos rodea y que proporciona resultados
útiles en el mundo empresarial al ayudarnos a lidiar con los objetivos conflictivos.
Es por esta razón mi motivación hacia este campo de investigación puesto que
considero esta área de la “Investigación Operativa” muy útil y necesaria, observando
los tiempos que corren; además de adecuarse como una pieza de puzle a mi formación
en “Estadística y Empresa” ya que esta es su área de aplicación por excelencia.
1.2. OBJETIVOS
En el siguiente apartado se detallan los objetivos que se persiguen con el
siguiente trabajo:
1.2.1. OBJETIVO GENERAL
La finalidad de este trabajo de investigación es mostrar que es la “Programación
Lineal Multiobjetivo” para ello haré un recorrido por su historia, expondré los conceptos
básicos que la conforman y los diferentes métodos de resolución que existen.
Estos serán presentados de forma teórica primero y con una relación de ejemplos
posteriormente para esclarecer el tema y mostrar la gran utilidad que tiene esta
disciplina.
7
1.2.2. OBJETIVOS ESPECIFICOS
Para alcanzar el objetivo general de este trabajo, se abordarán una serie de
objetivos específicos a lo largo del texto. Podemos describirlos a continuación:
Exponer las dificultades que pueden presentarse a la hora de resolver
problemas de este tipo, así como aquellos conceptos importantes que nos
ayuden a superar estos obstáculos.
Esbozar un apartado histórico, desde el origen de las técnicas hasta las
aplicaciones y estado en el que nos encontramos en la actualidad.
Resaltar las principales diferencias entre algunos de los métodos y
técnicas más representativos de la Programación Lineal Multiobjetivo.
Realizar ejemplos que ayuden a comprender lo expuesto a lo largo del
presente trabajo.
8
2. ESTADO DEL ARTE
2.1. ¿QUÉ ES LA PROGRAMACIÓN LINEAL MULTIOBJETIVO?
La Programación Lineal Multiobjetivo (PLMO) o también conocida como
Decisión Multicriterio abarca un conjunto de técnicas utilizadas en el propósito de la
toma de decisiones. Esta añade un extra de complejidad a la programación matemática
lineal clásica, puesto que introduce al problema más de un objetivo que optimizar. Su
propósito es llevar al decisor frente a la mejor solución posible planteada en un
problema con varios objetivos a mejorar en la que la mayoría de ellos están en conflicto,
es decir la mejora en algunos de ellos conlleva el empeoramiento de otros.
2.2. ANTECEDENTES HISTÓRICOS DE LA PROGRAMACIÓN LINEAL
MULTIOBJETIVO
Tomar decisiones entre varias opciones que sean contradictorias es algo natural
en los seres humanos, ya que situaciones de elecciones contradictorias es algo con lo
que las personas lidiamos a diario.
Por tanto podemos decir que el concepto de “criterios contradictorios” está
presente desde tiempos prehistóricos, ya que en esta época nuestros antecesores debían
cazar para comer además de preocuparse de su seguridad ya que podrían ser devorados
por su propia víctima; por esto sus objetivos eran cazar y salir ilesos en el proceso. Otro
campo de manifestación de este concepto son fábulas, como es “El Asno de Buridán”
(Zupko, 2003) donde un asno es colocado delante de dos montones de heno ambos del
mismo tamaño y calidad y el asno murió debido a la indecisión entre cual montón de los
dos coger.
Este es uno de los múltiples ejemplos que podemos encontrar en el origen de la
“Toma de decisiones multicriterio” un amplio campo científico que se divide en dos
ramas las cuales son: “Toma de decisiones multiatributo” y “Programación
multiobjetivo” en la cual nos vamos a centrar en este trabajo.
9
En 1891 Francis Ysidro Edgeworth (1845-1926) introdujo el concepto de “Caja
de Edgeworth” (Edgeworth, 1881), esta se trata de un diagrama donde se representan las
curvas de indiferencia de dos individuos y su objetivo es identificar una asignación que
beneficie a ambos individuos por igual. Esta es la base para un concepto posterior
desarrollado en 1896 por el economista Vilfredo Pareto (1848-1923) que se conoce
como “Óptimo de Pareto” (Vilfredo, 1896), este se denomina como el punto de
equilibrio en el que no se puede mejorar el bienestar de los individuos sin reducir el de
alguno de ellos.
Ilustración 2 Francis Edgeworth1 y Vilfredo Pareto
2, los “padres” de la Programación Multiobjetivo
El concepto de “Óptimo de Pareto” es de suma importancia y de él parten las
posteriores investigaciones en las que se basa la “Programación Multiobjetivo”, estas se
sucedieron en su mayoría durante los años 70 donde se produjo una gran revolución
científica.
Ésta dio comienzo en el año 1951 con la introducción del vector eficiente o no
dominado (Koopmans, 1951)como una versión nueva del “Óptimo de Pareto” por parte
de Koopmans, en este mismo año Kuhn-Tucker formulo el problema de maximización
1 http://www.apprendre-math.info/history/photos/Edgeworth_3.jpeg 2 https://eixamestudis.files.wordpress.com/2013/08/vilfredo_pareto_eixam.jpg
Toma de decisiones
Multicriterio
Toma de decisiones
Multiatributo
Programación Multiobjetivo
Ilustración 1 Esquema de la Toma de decisiones Multicriterio
10
de vectores (KuHN, 1951) lo que estableció las condiciones necesarias para la
existencia de soluciones en los problemas multiobjetivo.
Podemos decir que el año 1960 marca un punto importante en la evolución de la
“Toma de Decisiones Multicriterio” puesto que es aquí cuando esta se divide; la
“Programación Multiobjetivo” se individualiza y adopta su propia metodología.
En 1955 se sentaron las bases de la “Programación por Metas” aunque esta no
fue desarrollada para problemas lineales por Charnes y Cooper hasta el año 1961; en
este mismo año publican su trabajo titulado “Management Models and Industrial
Applications of Linear Programming” en este trabajo se presenta por primera vez un
problema de Programación Lineal, en el cual entran en conflicto una serie de objetivos
incluidos como restricciones.
En esta década de los 60 siguen apareciendo diferentes metodologías para la
resolución de los problemas con múltiples objetivos, como el método de las
ponderaciones el cual fue enunciado en 1963 por Zadech y el método de las -
restricciones por Marglin en 1967.
Yuri Ijiri publica un libro en 1965 donde se mejora el marco teórico y la
estructura operativa propuesta por Charnes y Cooper anteriormente, su principal
novedad es la introducción de las propiedades excluyentes, (Ijiri Y. , 1965)
razonamiento de gran importancia a la hora de la resolución de los problemas
multiobjetivo. Este hecho propicio la aparición de una serie de trabajos enfocados a
distintas áreas en los que la programación multiobjetivo es aplicada para resolverlos.
En 1968 Charnes y Cooper publicaron de nuevo dos trabajos en los que se
presenta el problema de la programación de medios de publicidad (Charnes A. a., 1968)
como un caso de programación por objetivos. Para finalizar esta década en 1969 Mao
publica un libro sobre temas financieros (Mao, 1969) en el que se plantean algunos
problemas relacionados con la planificación de la estructura financiera de la empresa
dentro de un marco de programación con objetivos múltiples.
La primera reunión científica dedicada al análisis multicriterio tuvo lugar en
1970 en La Haya (Paises Bajos) y en 1972 la segunda ya que este año se celebró la I
Conferencia Mundial sobre Toma de Decisiones Multicriterio, en la Universidad de
Carolina del Sur. Con este acto se da comienzo a una revolución en la ciencia
multicriterio apareciendo a partir de este punto numerosos artículos e investigaciones
sobre esta rama de aprendizaje.
11
Es este mismo año y de la mano de Sang M. Lee cuando aparece el primer libro
dedicado a esta temática (Lee, 1972). En este libro Lee presenta el marco teórico de la
programación por objetivos de una manera mucho más precisa de lo que se había hecho
en trabajos anteriores, permitiendo mejorar los aspectos relativos a la formulación de los
modelos; también se presenta por primera vez tanto el método gráfico de resolución de
programas multiobjetivo como un algoritmo simplex modificado y adaptado a
estructuras multiobjetivo.
En 1976, James P. Ignizio publica otro libro dedicado también a la programación
multiobjetivo (Ignizio J. P., 1976), presentando claros avances con respecto al libro de
Lee. Desde un punto de vista teórico, la principal novedad del libro de Ignizio consiste
en demostrar rigurosamente que las técnicas clásicas de programación matemática
(lineal, cuadrática, etc.) son casos particulares de la programación con múltiples
objetivos, cuando hasta entonces en la mayor parte de la bibliografía se consideraba
exactamente lo contrario; es decir, se presentaba a la programación multiobjetivo como
una particularización de la programación lineal. Este libro proporciona los instrumentos
necesarios para poder utilizar al máximo las técnicas multiobjetivo. Este libro, junto al
publicado por Jared Cohon sobre “Programación y planificación multiobjetivo”
(Cohon, 1978), fueron considerados como dos obras magistrales de la época.
Durante la década de los ochenta, el elemento que caracteriza la importancia y la
dimensión que va adquiriendo la decisión multicriterio, es la introducción de la
informática en la reflexión sobre esta nueva corriente científica. Junto con el campo de
la Toma de Decisiones Multicriterio Discretas que alcanzaron la madurez en esta época.
Numerosos métodos interactivos para problemas de carácter discreto se
desarrollaron; uno de los más pioneros fue presentado por Stanley Zionts para la
resolución de problemas con un número discreto de alternativas (Zionts S. , 1981).
Otra de las preocupaciones de esta época, era la falta de información presente en
numerosos problemas de decisión. Numerosos investigadores estudiaron la posibilidad
de obtener ordenamientos de alternativas con información parcial o en presencia de
riesgo. Este fue el centro de atención del trabajo publicado por Craig Kirkwood y
Rakesh Sarin en 1985 en la revista Operations Research. Estos presentan un método
para clasificar alternativas multiatributo utilizando una función de evaluación ponderada
con información parcial, este método se aplica para evaluar materiales para su uso en la
contención de desperdicios nucleares (Kirkwood, 1985). A partir de estos primeros
12
resultados la modelización parcial o con información incompleta se ha convertido en un
tópico de investigación muy importante.
Desde la década de los 90 hasta nuestros días han aparecido una enorme
cantidad de métodos, técnicas, artículos, etc. que sería imposible referenciarlos a todos
aquí, los eventos más destacados ocurridos durante esta década, abarcan diversos
aspectos: (Köksalan, 2013):
La potencialidad de las nuevas herramientas informáticas permitió el
desarrollo de métodos interactivos. El decisor pasó a formar parte activa
del proceso de decisión y no una mera figura a menudo sustituida por un
modelo matemático.
La interdisciplinariedad ganó terreno en todos los ámbitos de la decisión,
dando lugar a la aparición de numerosas aplicaciones prácticas reales y
de gran envergadura. La implicación de distintos países y profesionales
de las más diversas disciplinas dio origen a una perspectiva de progreso
sin precedentes hasta el momento.
En el ámbito académico, la valoración y la estimación de las
publicaciones en el ámbito de la Toma de Decisiones en general y de la
Decisión Multicriterio en particular, han constituido importantes
estímulos para dar lugar a la aparición de artículos y trabajos con elevado
índice de impacto.
2.3. PROGRAMACIÓN LINEAL VS PROGRAMACIÓN LINEAL
MULTIOBJETIVO
En sus inicios la Programación Lineal solo tenía una perspectiva, esta era desde
el punto de vista uniobjetivo; durante un largo periodo de tiempo o incluso en la
actualidad esta se sigue utilizando, aunque cada vez este planteamiento va dejando paso
a una propuesta con mucha más fuerza y mucho más realista como es la Programación
Lineal Multiobjetivo, que plasma la realidad de una forma más fiel que la visión
uniobjetivo.
En líneas generales, en todas las decisiones que debemos tomar, ya sea en
nuestro hogar, en el mundo empresarial o en cualquier aspecto, hay varios criterios que
nos condicionan a decantarnos entre una opción u otra y en la mayoría de los casos estos
criterios se contradicen y entran en conflicto entre ellos. Podemos decir que esta es la
13
base principal que propició la aparición de la PLMO y lo que ha hecho que la
Programación Lineal Clásica pierda protagonismo frente a ella.
Podemos decir que la Programación Lineal Clásica ofrece una visión reducida de
la realidad, puesto que para el planteamiento de los problemas el decisor solo tiene en
cuenta una única función objetivo. Esta condición es una importante limitación ya que
no se tienen en cuenta otros criterios que pueden influir en su decisión. Por otro lado las
restricciones que se plantean en este tipo de problemas son fijas e inquebrantables otra
razón que los hace alejarse de la realidad dado que a veces es considerable no tener en
cuenta todas las restricciones de la misma manera y no cumplir alguna de ellas si esta no
tiene la suficiente importancia frente a las demás.
Es por estas razones por las que aparece la PLMO ya que era necesario un nuevo
método más realista en el que se tuvieran en cuenta varios criterios de decisión y en el
que las restricciones pasasen a ser menos estrictas. Además de que en estos problemas
se tienen en cuenta varios criterios simultáneamente y las preferencias de los decisores.
Por último otro punto que diferencia ambas metodologías es que en el caso
uniobjetivo solo existe un valor óptimo, es decir una sola solución; en contraposición en
los procesos multiobjetivo ofrecen un conjunto de soluciones eficientes llamado óptimo
de Pareto concepto que se expondrá a continuación.
14
3. FUNDAMENTOS TEÓRICOS DE “PROGRAMACIÓN LINEAL
MULTIOBJETIVO”
3.1. PLANTEAMIENTO DEL PROBLEMA
Un problema de Programación Lineal Multiobjetivo es considerado como tal
cuando todas las funciones objetivo y restricciones que lo componen son de tipo lineal.
Dicho problema compuesto por n variables de decisión (𝑥 = (𝑥1, … , 𝑥𝑛)) y p
objetivos se puede plantear de la siguiente manera: (Insua, 2004)
𝑚á𝑥 𝑍 = (𝑐1𝑇𝑥…𝑐𝑝
𝑇𝑥)𝑠. 𝑎.𝐴𝑥 ≤ 𝑏𝑥 ≥ 0
Dónde:
- Z es la función objetivo que es un vector compuesto por p funciones
objetivo; ésta describe la meta o fin que el decisor quiere obtener o alcanzar.
- A es una matriz con m filas y n columnas y b un vector de una sola fila;
representan las restricciones, generadas cuando los recursos son limitados.
Dentro de los problemas de optimización multiobjetivo nos podemos encontrar
tres casos diferentes: en los que se maximicen o minimicen todas las funciones objetivo
y el caso mixto en el que algunas funciones sean de maximizar y otras de minimizar.
3.2. OPTIMALIDAD PARETIANA
En el punto anterior se hace un planteamiento general de un problema
multiobjetivo sin embargo antes de mostrar las diferentes técnicas que se pueden usar
para resolverlo hay que dar una definición previa del concepto de solución tan
importante para estos problemas.
Como ya hemos descrito anteriormente, en los problemas con un único objetivo
solo se obtiene una única solución óptima, esta es la que proporciona el mejor valor para
el objetivo, es decir es un único valor que maximiza o minimiza dicha función
dependiendo de los requisitos que esta posea.
Por tanto podemos decir que en los problemas con un único objetivo el concepto
de optimalidad juega un papel muy importante, en cambio, cuando se trata de un
problema donde existen varios objetivos, es imposible definir un óptimo sino que se
pretende establecer un conjunto de soluciones óptimas.
15
Cuando consideramos un problema de PLMO, lo ideal sería coger un elemento
que sea el óptimo del problema simultáneamente en cada una de las funciones objetivo;
sin embargo, este concepto de óptimo no nos sirve, dado que una solución que
maximice un objetivo en general no maximizará los restantes, es decir al mejorar unos
empeoraría otros debido a que estos en la mayor parte de los casos están en situación de
conflicto. Es por esta razón por la que es tan difícil definir el concepto de óptimo en este
tipo de problemas.
En consecuencia llegamos a un nuevo concepto originalmente propuesto por
Francis Y. Edgeworth en 1891 y generalizado por Vilfredo Pareto en 1986, llamado
“Conjunto de Pareto” o “solución eficiente”, que se define como “Una alternativa es
eficiente o Pareto Óptima si toda alternativa que proporcione una mejora en un
atributo produce un empeoramiento en al menos otro de los atributos”
La finalidad ahora es buscar un conjunto de soluciones, las cuales forman un
número indefinido, por tanto, hay que reducir esta cantidad, para ello en primer lugar se
procede a desechar aquellas que están dominadas. Se dice que una “Alternativa
dominada o no eficiente” es aquella para la que existe otra alternativa con todos los
atributos mejores.
Así se define el “Conjunto eficiente o de Pareto” también llamada “Frontera de
Pareto”.
Ilustración 3 Representación de la famosa "Frontera de Pareto" (Sayyad, 2013)
Por último, podemos decir que en la mayoría de las situaciones se nos pide una
única solución, no un conjunto de soluciones. A la solución escogida por el decisor del
conjunto eficiente se le llama “Solución de mejor compromiso”
16
3.3. MATRIZ DE PAGOS (PAY-OFF MATRIX)
Un concepto importante a tener en cuenta antes de explicar los métodos de
resolución de los problemas multiobjetivo es la “Matriz de Pagos”. El cálculo de esta es
el primer paso a seguir antes de proceder a la resolución del problema. Tiene una gran
utilidad dado que ayuda a cuantificar el grado de conflicto existente entre los objetivos
considerados en el problema.
Tabla 1 Matriz de Pagos
𝒛𝟏(𝒙) 𝒛𝟐(𝒙) … 𝒛𝒏(𝒙)
𝒙𝟏 𝑧1(𝑥1) 𝑧2(𝑥1) … 𝑧𝑛(𝑥1)
𝒙𝟐 𝑧1(𝑥2) 𝑧2(𝑥2) … 𝑧𝑛(𝑥2)
…
…
…
…
…
𝒙𝒎 𝑧1(𝑥𝑚) 𝑧2(𝑥𝑚) … 𝑧𝑛(𝑥𝑚)
La diagonal principal está conformada por los resultados obtenidos al optimizar
cada una de las funciones objetivo consideradas por separado, de acuerdo con el
conjunto de restricciones conocido. Este conjunto de soluciones constituye la solución
ideal y uno de los valores es el conocido como “Punto Ideal”.
La matriz también nos proporciona los valores anti-ideales, que es el peor
elemento de cada columna; este punto corresponderá al elemento mínimo de la columna
si el objetivo correspondiente se maximiza o al elemento máximo si se minimiza.
El punto anti-ideal representa una solución poco atractiva para el decisor, pero a
su vez es muy útil primero para normalizar los objetivos que estén medidos en
diferentes unidades. Segundo la diferencia entre estos y los ideales definen un intervalo
de valores para cada criterio que en algunas ocasiones es necesario conocerlo ya que
ayuda a buscar el conjunto eficiente y así obtener una buena solución.
17
3.4. TASA DE INTERCAMBIO
La tasa de intercambio o también conocida como “Trade-off” es otro de los
conceptos cruciales en el ámbito multicriterio. Las tasas de intercambios entre atributos
se definen como la cantidad que se está dispuesto a empeorar un objetivo para mejorar
en una unidad otro objetivo.
𝑇𝑖𝑗 =∆𝑍1∆𝑍2
Las tasas de intercambio o “Trade-off” tienen un gran interés dentro de la
metodología multicriterio. Estas constituyen un buen índice para medir el coste de
oportunidad de un criterio en términos de los otros criterios que estemos considerando.
Estas juegan un papel dentro de las técnicas interactivas multicriterio, dichas
técnicas no se consideran en este trabajo. (Romero, 1993)
18
4. MÉTODOS DE RESOLUCIÓN
4.1. PRINCIPALES TÉCNICAS DE RESOLUCIÓN
Las técnicas que se usan para la resolución de los problemas multiobjetivo se
clasifican dependiendo de cómo se trasmita la información entre el analista y el decisor.
Se pueden clasificar en los siguientes tipos:
Técnicas a Posteriori o generadoras: Estas tienen carácter mecánico,
en primer lugar actúa el analista resolviendo el problema y
posteriormente le muestra las soluciones al decisor, por tanto estas
técnicas solo cuentan con la información correspondiente a la estructura
matemática y no incluyen las preferencias del decisor.
Su fin es la obtención de un conjunto completo de soluciones eficientes,
es decir con estas técnicas obtenemos todas las posibles soluciones que el
problema planteado puede tener.
Técnicas a Priori o satisfacientes: En estas técnicas es el decisor el que
actúa primero, incorporando sus preferencias y prioridades al problema y
posteriormente el analista se encarga de su resolución teniendo en cuenta
la información proporcionada por el decisor.
Estas técnicas al contrario que las anteriores no proporcionan el total de
soluciones factibles, sino que solo proporciona un subconjunto de
soluciones que son las que concuerdan con las preferencias establecidas
por el decisor.
Técnicas interactivas: En estas técnicas el analista y el decisor trabajan
codo con codo, es decir se lleva a cabo un flujo continuo de información
entre ellos.
4.2. TÉCNICAS GENERADORAS
Como se indica en el apartado anterior estas técnicas no incorporan información
a priori en el proceso, por tanto es el analista el que plantea y resuelve el problema sin
obtener información por parte del decisor. Éste entra en juego cuando el analista ya ha
generado el conjunto eficiente y es aquí cuando el decisor incorpora sus necesidades al
problema y setoma la decisión final. Dentro de las técnicas generadoras tenemos tres
métodos de resolución, que son los siguientes:
19
Método de las Ponderaciones
Método de las -restricciones
Simplex Multiobjetivo
Los dos primeros métodos reducen el problema a un problema de programación
lineal con un único objetivo, en cambio el “Simplex Multiobjetivo” considera todos los
objetivos a la vez. A continuación detallaremos cada uno de ellos:
4.2.1. MÉTODO DE LAS PONDERACIONES
El Método de las ponderaciones deriva directamente de las condiciones
necesarias de Kuhn-Tucker (KuHN, 1951) para soluciones eficientes, este fue propuesto
por Zadeh en 1963, (Zadeh, 1963) por tanto podemos decir que posiblemente sea la
primera técnica multiobjetivo considerada.
Considerando el planteamiento de un problema multiobjetivo mostrado
anteriormente el método de las ponderaciones consiste en la construcción de un
problema uniobjetivo derivado de él, que nos ayude a encontrar soluciones eficientes.
Para conseguir esto debemos ponderar la función objetivo, para ello se asigna y
multiplica un peso 𝑘 positivo a cada uno de los objetivos 𝑧𝑘 y se considera como
función objetivo global la suma ponderada de los p objetivos.
Antes de eso, debemos transformar todas las funciones objetivos a términos de
maximizar, multiplicado estas por -1.
El planteamiento del problema ponderado es el siguiente:
𝑚á𝑥 𝑍 =∑𝑘𝑍𝑘(𝑋)
𝑠. 𝑎. 𝐴𝑋 ≤ 𝑏𝑋 ≥ 0
con 𝑘 peso asociado al objetivo 𝑍𝑘.
Dependiendo de cómo se realice la asignación de los pesos, las soluciones
obtenidas se caracterizaran de un modo u otro.
I. Si todos los pesos 𝑘 asignados son mayores que cero cualquier solución
óptima que obtengamos será eficiente.
II. Si algún peso es igual a cero, la solución que obtendremos será
débilmente eficiente, es decir, no existirá otra alternativa factible en el
problema que mejore estrictamente todos los objetivos establecidos.
III. Si con algún peso igual a cero la solución al problema es única, entonces
esta es eficiente.
20
4.2.2. MÉTODO DE LAS -RESTRICCIONES
Este método fue propuesto en 1967 por el economista Marglin (Marglin, 1967),
se considera uno de los métodos más antiguos dentro de la programación
multiobjetivo, pero a su vez es uno de los más pobres puesto que la obtención de las
soluciones es complicada y no se puede asegurar que estas sean eficientes.
En este procedimiento también se busca derivar a un problema uniobjetivo, para
ello una de las funciones objetivo se fija y las demás pasan a considerarse restricciones,
una vez determinada una cota que se asocia a cada una de ellas, el planteamiento del
problema es el que sigue:
𝑀á𝑥 𝑍𝑙(𝑥) 𝑠. 𝑎.
𝐴𝑥 ≤ 𝑏 𝑍𝑘 ≥ 𝜖𝑘 𝑘 ≠ 𝑙 𝑥 ≥ 0
Donde la cota que le imponemos a cada una de las funciones se tomará dentro de
su rango de variación 𝜀𝑘 ∈ [𝑍𝑘𝑚𝑖𝑛 , 𝑍𝑘
𝑚𝑎𝑥].
En esta técnica, no tenemos asegurada que la solución sea eficiente, salvo que la
solución obtenida sea única. En el caso de soluciones optimas alternativas no es posible
asegurar la eficiencia de las mimas.
La asignación de cotas, que es la clave del método, nos hace que se modifique el
conjunto de oportunidades, y esto implica un problema adicional, dado que si las
imponemos demasiado optimistas o grandes el conjunto no se modifica y nos resultaría
un problema consistente en maximizar uno de los objetivos, y, si por el contrario, las
imponemos demasiado pesimistas o pequeñas podemos plantear un problema con un
conjunto de oportunidades vacío. La terminología utilizada, en términos de grande y
pequeño es relativa a la naturaleza del problema que se esté estudiando.
4.2.3. SIMPLEX MULTIOBJETIVO
En los problemas de programación lineal clásica el método más usado para su
resolución, es el llamado “Simplex”. Este método es posible adaptarlo también a los
problemas de programación multicriterio.
A diferencia de los dos métodos explicados anteriormente, en los que el
problema multiobjetivo se transformaba a uno uniobjetivo, el “Simplex Multiobjetivo”
considera simultáneamente todos los objetivos.
21
Este método se apoya principalmente en tres etapas. En la primera, se determina
una solución básica factible inicial. Esta generalmente se lleva a cabo, como en el caso
uniobjetivo, introduciendo variables de holgura y /o artificiales, permitiendo así obtener
un punto extremo inicial. En la segunda, se determina un punto extremo eficiente cuya
existencia está garantizada, si la región factible del problema es no vacía y todas las
funciones objetivo están acotadas en ella. Finalmente, la tercera etapa, consiste en
determinar todos los puntos eficientes, lo que se lleva a cabo a partir de la solución
obtenida en la etapa anterior y generando a partir de ella los restantes puntos extremos
eficientes. (Insua, 2004)
Como ya sabemos, incluso para el caso con un solo objetivo, el algoritmo del
simplex puede requerir un número exponencial de pivotes, esta misma situación es
equiparable al caso y multiobjetivo. Además, a medida que aumenta la dimensionalidad,
también aumenta el número de puntos eficientes, esto hace que el algoritmo sea
complicado de resolver tanto manualmente como computacionalmente. (Ehrgott, 2006)
4.3. TÉCNICAS SATISFACIENTES
Como podemos ver en apartados anteriores en este tipo de técnicas el decisor
proporciona al analista sus deseos y prioridades para que este los tenga en cuenta a la
hora de plantear el problema.
El método por excelencia dentro de las técnicas satisfacientes es la denominada
“Programación por Metas” o “Goal Programming”
4.3.1. PROGRAMACIÓN POR METAS
4.3.1.1. INTRODUCCIÓN A LA PROGRAMACIÓN POR METAS
En la vida real, la mayoría de los problemas poseen multitud de objetivos, no
solamente uno. Por ejemplo, si una empresa decidiese concentrar sus esfuerzos
solamente en mantener los costes, podría dañar seriamente el medioambiente o afectar a
la sociedad que atiende seriamente. Si una empresa dedicada a la salud se dedicase a
fabricar tratamientos específicamente caros o únicamente para enfermedades raras,
obtendrían un escaso beneficio. Si una editorial pone demasiado énfasis en un libro que
esté libre de “fallos”, la cantidad de tiempo que invertiría en revisar una y otra vez un
texto hasta ser publicado, retrasaría una y otra vez su fecha de lanzamiento. En
definitiva, encontrar soluciones óptimas para un modelo formulado con un simple
22
objetivo puede afectar seriamente otras aspiraciones y metas que también son
importantes para una organización.
La programación por metas trata de tener en cuenta simultáneamente varios
objetivos o metas que son realmente importantes para el decisor. Mientras la PL
consiste en restricciones y una simple función objetivo, la cual debe ser minimizada o
maximizada, el modelo de Programación por Metas consiste en restricciones y un
conjunto de metas que son priorizadas con algún sentido.
En ambos métodos, si las restricciones son inconsistentes, no habrá soluciones
factibles para el modelo. Sin embargo, en la Programación por Metas, se puede esperar
aunque haya un conjunto de soluciones factibles que satisfaga las restricciones, ninguna
de ellas pueda satisfacer simultáneamente todas las metas de la organización en
conflicto. El objetivo de este método por tanto, reside en encontrar aquella solución que
satisfaga las verdaderas restricciones y se acerque lo más posible a las metas declaradas.
4.3.1.2. Origen de la Programación por Metas
La primera piedra para la construcción de la programación por metas se puso en
1955 de mano de los autores Charnes, Cooper & Ferguson, (Charnes A. a., 1955) con la
publicación de un artículo en la revista Management Science. Este trabajo pretende
desarrollar un método que permita determinar las compensaciones salariales de los
ejecutivos de la compañía General Electric.
Dada la insuficiencia de las técnicas estadísticas clásicas para abordar este tipo
de problema estos autores formularon un modelo de regresión con restricciones en el
que se minimiza la suma de las desviaciones absolutas. Dado que la desviación absoluta
es una forma no lineal que no puede optimizarse de una manera directa, estos autores
linealizaron el modelo introduciendo, por primera vez en la literatura, variables de
desviación positivas y negativas.
23
Ilustración 4 Charnes3 y Cooper
4 fueron los autores más destacados de esta técnica
Charnes y Cooper desarrollan la programación por metas y la presentan en su
famoso Management and Industrial Applications of Linear Programming (Charnes A.
a., 1957). Aunque estos paradójicamente no analizaron en este trabajo un problema de
decisión con metas múltiples, sino un caso de infactibilidad en programación lineal.
En el año 1963 Ignizio se enfrentó a un complejo problema en el campo del
diseño en ingeniería consistente en la organización del sistema de antenas del programa
Saturno/Apolo (Ignizio J. , 1963). Este problema implicaba metas múltiples, funciones
no lineales, así como variables enteras. Ignizio consiguió obtener soluciones razonables
(satisfacientes) mediante la adaptación del concepto de “Programación por metas”
introducido por Charnes y Cooper.
Ijiri desarrolló técnicas matemáticas como la matriz inversa generalizada para
computar modelos de PM basados en metas excluyentes (Ijiri Y. , 1965), En 1968 se
formularon modelos de PM en el campo de la planificación de medios publicitarios
(Charnes A. a., 1968). Finalmente, para acabar esta década, debe citarse los trabajos de
(Jääskeläinen, 1969) en los que propuso modelos de PM para la planificación logística,
así como los primeros algoritmos de resolución.
En los años setenta es cuando la Programación por Metas llega a pleno auge
debido a numerosos trabajos desarrollados a partir de la idea inicial de Charnes y
Cooper. Los principales autores de estos trabajos fueron (Lee, 1972) e (Ignizio J. P.,
1976).
A partir de esta época se marca un antes y después en la Programación por
Metas y comienzan a aparecer numerosos trabajos en los que se desarrolla tanto teórica
como operativamente la Programación por Metas, así como numerosas aplicaciones en
distintas áreas. Puede decirse que la Programación por Metas se ha convertido en el
3https://feliperangel13.files.wordpress.com/2015/10/charner.png 4http://digitalcollections.library.cmu.edu/portal/images/Cooper_4.jpg
24
enfoque multicriterio más aplicado y en el método más popular dentro de la
investigación operativa.
4.3.1.3. Aspectos Básicos de la Programación por Metas
La “Programación por Metas” es considerada como una de las técnicas de
optimización multiobjetivo más antiguas, esta busca reducir al mínimo la desviación de
los objetivos establecidos. El concepto básico de la “Programación por Metas” consiste
en que si un objetivo no se alcanza la solución obtenida debe ser los más cercana
posible al objetivo preestablecido.
Existen tres tipos posibles de metas (Taha, 2004):
Meta unilateral inferior: es un límite inferior por debajo del cual no se quiere
caer (pero se aceptan desvíos). Así, si estamos maximizando 𝑍𝑖(𝑥) al imponer
un nivel 𝑢𝑖, se deseará que 𝑍𝑖(𝑥) ≥ 𝑢𝑖
Meta unilateral superior: es un límite superior que no se quiere exceder (pero
está bien quedar por debajo del mismo). Así, si estamos maximizando se deseará
𝑍𝑖(𝑥) ≤ 𝑢𝑖
Meta bilateral: es un objetivo específico que no se quiere perder hacia ningún
lado, 𝑍𝑖(𝑥) = 𝑢𝑖
Existen dos tipos de restricciones funcionales:
Las restricciones ordinarias de Programación Lineal (restricciones “duras” o
estrictas), estas deben cumplirse de manera estricta.
Las ecuaciones objetivo (“blandas” o flexibles), estas pueden admitir
desviaciones de la meta establecida, pero estas desviaciones estarán asociadas a
una penalización que se reflejará en un parámetro en la Función Objetivo.
Variables de desviación: son desviaciones positivas y negativas que se
introducen en el modelo y que representan la diferencia entre el valor que se quiere
obtener y el que se ha obtenido. Estas son dependientes por definición por tanto no
pueden ser variables básicas simultáneamente. Esto quiere decir que como mucho una
de las dos variables de desviación puede asumir un valor positivo.
Las variables de desviación pueden ser de dos tipos:
𝑑𝑖+ Variable de decisión positiva, representa la parte de la decisión que no
alcanza el valor objetivo, estableciendo 𝑑𝑖+ ≥ 0.
𝑑𝑖− Variable de decisión negativa, representa la parte del valor de la toma de
decisiones que excede el valor objetivo, estableciendo 𝑑𝑖− ≥ 0.
25
En la práctica, cuando el objetivo se determina, hay tres posibilidades para la
toma de decisiones:
Minimizar Meta Si se logra la meta
𝑑𝑖+ Minimizar el bajo rendimiento 𝑑𝑖
+ = 0, 𝑑𝑖− ≥ 0
𝑑𝑖− Minimizar el logro excesivo 𝑑𝑖
− = 0, 𝑑𝑖+ ≥ 0
𝑑𝑖− + 𝑑𝑖
+
Minimizar ambos tanto el bajo
rendimiento como el logro
excesivo
𝑑𝑖− = 0, 𝑑𝑖
+ = 0
4.3.1.4. Planteamiento del problema
La primera formulación que aparece de un problema de Programación por Metas
es la siguiente:
𝑀í𝑛 𝑍 =∑|𝑧𝑖(𝑥) − �̂�𝑖|
𝑝
𝑖=1𝑠. 𝑎
𝑥 ∈ 𝐹
donde �̂�𝑖 es la meta establecida por el decisor para el i-ésimo objetivo 𝑧𝑖 y F la
región factible definida por las restricciones lineales. El criterio es por tanto hacer
mínima la suma de los valores absolutos de las desviaciones o diferencias entre los
valores de los objetivos y sus metas.
Si observamos el planteamiento anterior, vemos que la función objetivo no es
lineal por lo que el método simplex no se podrá aplicar. Sin embargo, es posible
transformar cada función objetivo 𝑧𝑖(𝑥), convirtiendo el problema en formato lineal,
con las ventajas que esto reporta. La transformación se define a partir de dos nuevas
variables 𝑑𝑖+ y 𝑑𝑖
−, de desviación por defecto y por exceso respectivamente del objetivo
𝑧𝑖 de su meta �̂�𝑖
𝑑𝑖+ =
1
2(|𝑧𝑖(𝑥) − �̂�𝑖| − (𝑧𝑖(𝑥) − �̂�𝑖))
𝑑𝑖− =
1
2(|𝑧𝑖(𝑥) − �̂�𝑖| + (𝑧𝑖(𝑥) − �̂�𝑖))
Por tanto, 𝑑𝑖+ y 𝑑𝑖
− se interpretan como defecto y exceso respectivamente del
nivel de aspiración o meta del objetivo i-ésimo. Como significado físico de la variable
de desviación, tenemos que 𝑑𝑖+ es igual a 𝑧𝑖 (𝑥) − �̂�𝑖 si 𝑧𝑖(𝑥) ≥ �̂�𝑖 y cero en otro caso, y
análogamente 𝑑𝑖−. Para cada i se tiene además.
26
𝑑𝑖+ − 𝑑𝑖
− = |𝑧𝑖(𝑥) − �̂�𝑖|
𝑑𝑖+ + 𝑑𝑖
− = 𝑧𝑖(𝑥) − �̂�𝑖𝑑𝑖+ ∙ 𝑑𝑖
− = 0
𝑑𝑖+, 𝑑𝑖
− ≥ 0
y a partir de aquí podemos transformar el planteamiento general en un problema
lineal equivalente.
𝑀í𝑛 𝐷 =∑(𝑑𝑖+ + 𝑑𝑖
−)
𝑃
𝑖=1𝑠. 𝑎.
𝑥 ∈ 𝐹𝑧𝑖(𝑥) + 𝑑𝑖
+ − 𝑑𝑖− = �̂�𝑖
𝑑𝑖+, 𝑑𝑖
− ≥ 0 (𝑖 = 1,… , 𝑝)
4.3.1.5. Métodos de resolución
A continuación se presentan los dos algoritmos más comunes para la resolución
de problemas de “Programación por Metas”. Ambos métodos unifican las múltiples
metas en una única función objetivo, estos son:
Programación por Metas Lexicográficas
Programación por Metas Ponderadas
4.3.1.5.1. Programación por Metas Lexicográficas
En numerosas situaciones, el decisor no es capaz de determinar con precisión la
importancia relativa de los objetivos. Entonces usamos la programación por metas
lexicográficas, el decisor debe ordenar las metas desde la más importante (meta 1) hasta
la menos importante (meta m). La programación por metas con prioridades empieza por
centrarse en cumplir la meta más importante lo antes posible, antes de seguir con la
siguiente meta más alta, y así hasta llegar a la meta más baja, es decir, las funciones
objetivo son priorizadas de tal manera que el logro de la primera meta es más
importante que el logro de la segunda meta y el logro de esta más importante que el de
la tercera y así sucesivamente hasta llegar a la última meta. De tal modo que los
objetivos de prioridad inferior solamente se logran siempre y cuando no se degrade la
solución conseguida por un objetivo de prioridad superior. (Orumie, 2013)
Cuando este es el caso, la Programación por metas con prioridades puede
resultar muy útil, esta fue introducida por Ijiri (Ijiri Y. , 1965)
La función objetivo utilizada en la Programación por Metas Lexicográficas se
define como:
27
𝑙𝑒𝑥 𝑀𝑖𝑛 𝑍 =∑𝑝𝑖(𝑑𝑖+ + 𝑑𝑖
−)
𝑘
𝑖
donde 𝑝𝑖 , 𝑖 = 1,… , 𝑛 son las prioridades de cada meta y el orden establecido
para ellas. El orden, se establece asignando a cada objetivo el nivel de prioridad que el
decisor crea conveniente según sus preferencias.
4.3.1.5.2. Programación por Metas Ponderadas
En la programación por metas ponderadas, los pesos están asociados a cada uno
de los objetivos para medir la importancia relativa de las desviaciones de cada uno de
ellos.
Este método está compuesto por una única función objetivo y esta se forma con
la suma ponderada de los valores asignados a las funciones que representan las metas
del problema.
Este método comienza determinando la prioridad de cada meta, para ello se
asigna un peso ponderado que muestre la importancia de cada meta.
Este método se le atribuye a Charnes and Cooper (Charnes A. a., 1977) y la
función objetivo del modelo es la siguiente:
min𝑍 =∑𝑤𝑖+𝑑𝑖
+ + 𝑤𝑖−𝑑𝑖
−
𝑚
𝑖=1
Donde 𝑤𝑖+ y 𝑤𝑖
− son constantes no negativas que representan los pesos relativos
asignados a las respectivas variables de desviación. Son pesos positivos, que reflejan la
importancia que se le asigna a cada objetivo, donde el mayor peso asignado, es el
objetivo con más importancia para el decisor.
28
5. EJEMPLOS
En esta sección de muestran los ejemplos donde se aplican las técnicas antes
expuestas. Estos ejemplos han sido resueltos mediante el software R, los script
respectivos al proceso de resolución de estos serán añadidos al final de este trabajo.
5.1. EJEMPLO 1: “MÉTODO DE LAS PONDERACIONES”
Una empresa realiza dos tipos de bombones, de calidad excelente y de
primera calidad. Para producirlos utiliza cacao y almendras, de los que dispone
semanalmente de 48 kilos y 4.5 kilos respectivamente. Para realizar una caja de
bombones de calidad excelente se necesita 600 gramos de cacao y 50 gramos de
almendras mientras que para una caja de primera calidad se necesita 400 gramos de
cacao y 50 gramos de almendras. Por cada caja de calidad excelente se obtiene un
beneficio de 70 € y por cada una de primera calidad de 40 €; para producirlas se tarda 7
horas y 4 horas respectivamente.
Buscar una solución de compromiso que maximice los beneficios y minimice las
horas de producción.
Se considera que minimizar las horas de producción es dos veces más
importante que la maximización de los beneficios, puesto que si no minimizamos las
horas de producción los trabajadores pueden convocar una huelga. Resolver el problema
mediante el método de las ponderaciones. (Castro Íñigo, 2011)
Definimos las variables de decisión siguientes:
𝑥1: Cajas de bombones de calidad excelente producidas semanalmente
𝑥2: Cajas de bombones de primera calidad producidas semanalmente
Modelización del problema:
𝑚á𝑥 𝑍 = (70𝑥1 + 40𝑥2 )
𝑚í𝑛 𝑍 = (7𝑥1 + 4𝑥2)
𝑠. 𝑎 {
600𝑥1 + 400𝑥2 ≤ 4800050𝑥1 + 50𝑥2 ≤ 4500
𝑥1, 𝑥2 ≥ 0
En primer lugar multiplicamos la segunda función objetivo por -1 para
convertirla en una función objetivo de maximizar. La modelización del problema
quedaría como se muestra a continuación:
𝑚á𝑥 𝑍 = (70𝑥1 + 40𝑥2 , −7𝑥1 − 4𝑥2)
𝑠. 𝑎 {
600𝑥1 + 400𝑥2 ≤ 48000 (1)50𝑥1 + 50𝑥2 ≤ 4500 (2)
𝑥1, 𝑥2 ≥ 0
29
Representamos la región factible del problema
Para ello representamos en el gráfico las dos restricciones a las que está
sometido este problema y calculamos los puntos de corte de ambas funciones, tanto
entre ellas como con los ejes.
Ilustración 5 Conjunto Factible (Elaboración Propia)
Obtenemos los vértices y Representamos el Espacio de funciones
A continuación, calculamos los vértices para representar el espacio de funciones,
para ello sustituimos los puntos obtenidos en el conjunto factible en las funciones
objetivo.
Tabla 2 Puntos extremos de las regiones F y Z
Vértices (𝑥1, 𝑥2) (𝑍1, 𝑍2)
A’ (0,0) (0,0)
B’ (0,90) (3600,-360)
C’ (60,30) (5400,-540)
D’ (80,0) (5600,-560)
30
Ilustración 6 Espacio de Funciones (Elaboración Propia)
Si supervisamos el conjunto Z podemos observar cuales son los puntos
eficientes. Como podemos ver el espacio de funciones es una recta por tanto la solución
más eficiente es la que se encuentra en el extremo, en este caso la que se corresponde
con el vértice D’; las demás soluciones están dominadas por esta.
Calculamos la matriz de pagos:
Maximizamos ambas funciones objetivo junto con las restricciones
𝑚á𝑥 𝑍 = 70𝑥1 + 40𝑥2
𝑠. 𝑎 {
600𝑥1 + 400𝑥2 ≤ 48000 50𝑥1 + 50𝑥2 ≤ 4500
𝑥1, 𝑥2 ≥ 0
𝑚á𝑥 𝑍 = −7𝑥1 − 4𝑥2
𝑠. 𝑎 {
600𝑥1 + 400𝑥2 ≤ 4800050𝑥1 + 50𝑥2 ≤ 4500
𝑥1, 𝑥2 ≥ 0
Al maximizar la primera función objetivo obtenemos que 𝑥1∗ = 80 y 𝑥2
∗ = 0 con
lo cual 𝑍1∗ = 5600 sustituimos estos valores también en la otra función objetivo
considerada, valor que representamos en la matriz de pagos.
Seguimos el mismo procedimiento anterior para la siguiente función objetivo,
donde, 𝑥1∗ = 0 , 𝑥2
∗ = 0 y por tanto 𝑍2∗ = 0.
31
Tabla 3 Matriz de Pagos Ejemplo 1
Beneficios Horas de Producción
Beneficios 5600 -560
Horas de Producción 0 0
Resolvemos el problema ponderado:
𝑚á𝑥 𝑍 = 1(70𝑥1 + 40𝑥2 ) + 2(−7𝑥1 − 4𝑥2) == 56𝑥1 + 32𝑥2
𝑠. 𝑎 {
600𝑥1 + 400𝑥2 ≤ 48000 50𝑥1 + 50𝑥2 ≤ 4500
𝑥1, 𝑥2 ≥ 0
Resolviendo el problema ponderado aplicando el método simplex sobre el
problema transformado, obtenemos la siguiente solución 𝑥1∗ = 80 y 𝑥2
∗ = 0, que es uno
de los puntos eficientes, véase el punto D’ de la ilustración 6. Además, 𝑧1∗ = 5600
(Beneficios) y 𝑧2𝑜∗ = −𝑧2
∗ = 560 (Horas de producción).
A continuación, comprobamos que se cumplen las restricciones a las que estaba
sometido el problema. Sustituyendo los valores en estas examinamos que se consume
todo el cacao disponible y que nos sobran 500 gramos de almendras.
5.2. EJEMPLO 2:”MÉTODO DE LAS -RESTRICCIONES”
Una empresa dispone de dos tipos de máquinas A y B. Por cada hora de
trabajo en la máquina A se obtienen 20 piezas y 30 piezas por cada hora en la
máquina B. Por motivos de capacidad de la empresa no se pueden fabricar al día más de
600 piezas ni menos de 250. Además debido a las características de las dos
máquinas el coste por unidad producida por la máquina A es de 4 € y 3 € por
unidad producida por B.
Se desea maximizar el número de piezas diarias producidas y minimizar el coste
de producción. Buscar una solución compromiso que cumpla estos requisitos.
El decisor considera que el objetivo de maximizar el número de piezas es más
importante que el objetivo de los costes, pero establece que estos no deben superar los
2000€. Resolver el problema mediante el método de las -restricciones. (Castro Íñigo,
2011)
Definimos las variables de decisión siguientes:
𝑥1: Número de horas diarias de trabajo de la máquina A
𝑥2: Número de horas diarias de trabajo de la máquina B
32
Modelización del problema:
𝑚á𝑥 𝑍 = 20𝑥1 + 30𝑥2 𝑚í𝑛 𝑍 = 80𝑥1 + 90𝑥2
𝑠. 𝑎 {
20𝑥1 + 30𝑥2 ≤ 60020𝑥1 + 30𝑥2 ≥ 250
𝑥1, 𝑥2 ≥ 0
En primer lugar multiplicamos la segunda función objetivo por -1 para
convertirla en una función objetivo de maximizar. La modelización del problema
quedaría como se muestra a continuación:
𝑚á𝑥 𝑍 = (20𝑥1 + 30𝑥2 , −80𝑥1 − 90𝑥2)
𝑠. 𝑎 {
20𝑥1 + 30𝑥2 ≤ 60020𝑥1 + 30𝑥2 ≥ 250
𝑥1, 𝑥2 ≥ 0
Representamos la región factible del problema
Seguimos el mismo procedimiento que para el ejemplo anterior, representamos
ambas restricciones y los puntos de corte, como podemos observar se trata de dos rectas
paralelas por lo que no se cortan entre ellas, aunque si lo hacen con los ejes.
Ilustración 7 Conjunto Factible Ejemplo 2 (Elaboración Propia)
33
Representamos el Espacio de Funciones:
Sustituimos los puntos obtenidos en el gráfico anterior en las respectivas
funciones objetivo y después los representamos con lo que obtenemos el conjunto de
vértices y el espacio de funciones.
Tabla 4 Conjunto de Vértices Ejemplo 2
Vértices (𝑥1, 𝑥2) (𝑍1, 𝑍2)
A’ (0,83) (249.9,-749.7)
B’ (12.5,0) (250,-1000)
C’ (30,0) (600,-2400)
D’ (0,20) (600,-1800)
Ilustración 8 Espacio de Funciones Ejemplo 2
Inspeccionado el conjunto Z, podemos ver cuáles son los puntos eficientes. Si
consideramos los dos vértices más extremos C’ y D’, vemos que el número de piezas
toma su valor más alto en el vértice D’ por lo que podemos sopesar que este es un punto
eficiente del problema, en cambio en el vértice C’ el número de piezas es igual que en el
D’ y que el valor para el coste es el más elevado, es por esto que la solución contenida
en el vértice D’ es preferible a la contenida en el vértice C’.
34
Podemos establecer la solución comprendida en el vértice D’ como solución
compromiso del problema.
Calculamos la matriz de pagos:
Maximizamos ambas funciones objetivo junto con las restricciones
𝑚á𝑥 𝑍 = 20𝑥1 + 30𝑥2
𝑠. 𝑎 {
20𝑥1 + 30𝑥2 ≤ 600 20𝑥1 + 30𝑥2 ≥ 250
𝑥1, 𝑥2 ≥ 0
𝑚á𝑥 𝑍 = −80𝑥1 − 90𝑥2
𝑠. 𝑎 {
20𝑥1 + 30𝑥2 ≤ 60020𝑥1 + 30𝑥2 ≥ 250
𝑥1, 𝑥2 ≥ 0
Los valores obtenidos al maximizar ambas funciones objetivo con sus
respectivas soluciones han sido, 𝑥1∗ = 30 , 𝑥2
∗ = 0 y 𝑍1∗ = 600 para la primera y
𝑥1∗ = 0 , 𝑥2
∗ = 8.333 y 𝑍1∗ = −749.7para la segunda. Con estos valores calculamos la
matriz de pagos.
Tabla 5 Matriz de Pagos Ejemplo 2
Nº Piezas Costes
Nº Piezas 600 -2400
Costes 249.99 -749,7
El punto (600,-749.7) es el punto ideal o solución óptima, ya que son los puntos
donde se maximizan el número de piezas y se minimizan los costes. El punto (249.99,-
2400) es el punto antideal ya que en este ocurre justo al contrario de la situación
anterior.
Resolvemos el problema con la -restricción:
𝑚á𝑥 𝑍 = 20𝑥1 + 30𝑥2
𝑠. 𝑎 {
20𝑥1 + 30𝑥2 ≤ 60020𝑥1 + 30𝑥2 ≥ 250−80𝑥1 − 90𝑥2 ≤ 2000
𝑥1, 𝑥2 ≥ 0
Resolviendo el problema por el método de las -restricciones aplicando el
método simplex sobre el problema transformado, obtenemos la siguiente solución
𝑥1∗ = 0 y 𝑥2
∗ = 20, que es uno de los puntos eficientes, véase el punto D’ de la
ilustración 6. Además, 𝑧1∗ = 600 piezas que se producen al día, vemos que esta se
encuentra dentro de los parámetros impuestos y 𝑧2𝑜∗ = −𝑧2
∗ = 1800 €, el coste no
supera el límite de 2000 € euros establecidos.
35
5.3. EJEMPLO 3: “METAS CON PRIORIDADES O LEXICOGRAFICAS”
Una fábrica de quesos produce tres tipos de quesos: queso curado, queso
semicurado y queso fresco. Para ello se utilizan dos tipos de leche, leche de oveja y
leche de cabra. La fábrica está dotada de dos tipos de máquinas. La máquina 1,
utiliza en cada hora 70 litros de leche de oveja y 200 litros de leche de cabra para
producir 9 kilogramos de queso curado, 2 kilogramos de queso semicurado y 5
kilogramos de queso fresco. Con la máquina 2, se obtienen cada hora 10, 5 y 4
kilogramos de cada queso respectivamente con un gasto de 100 litros de leche de oveja
y 80 litros de leche de cabra.
Teniendo en cuenta los estudios de demanda de los tres productos la
compañía estima que debe producir al día al menos 900 y 300 kilogramos de queso
curado y semicurado, respectivamente, y no más de 800 kilogramos de queso
fresco. Los beneficios por kilogramo producido de cada tipo de queso son de 4, 6, y 7
euros respectivamente.
La gerencia de la empresa se ha planteado las siguientes metas y objetivos con el
siguiente orden de prioridades:
Prioridad 1. La cantidad de leche utilizada para la producción de los
quesos no supere 14000 litros diarios para la leche de oveja y 20000
litros diarios para la leche de cabra.
Prioridad 2. La cantidad de leche de cabra no sea superior a la de oveja.
Prioridad 3. Maximizar beneficios.
Modelizar y resolver el problema para calcular el número de horas al día que
deben operar las máquinas. (Castro Íñigo, 2011)
Definimos las variables de decisión del problema:
𝑥1: Horas al día que debe operar la máquina 1
𝑥2: Horas al día que debe operar la máquina 2
Modelización del problema:
𝑚í𝑛 𝑍 = (𝑑1− + 𝑑2
−, 𝑑3+, −(4(9𝑥1 + 10𝑥2) + 6(2𝑥1 + 5𝑥2) + 7(5𝑥1 + 4𝑥2)))
𝑠. 𝑎.
{
9𝑥1 + 10𝑥2 ≥ 900 (1)
2𝑥1 + 5𝑥2 ≥ 300 (2)5𝑥1 + 4𝑥2 ≤ 800 (3)
70𝑥1 + 100𝑥2 + 𝑑1+ − 𝑑1
− = 14000 (4)
200𝑥1 + 80𝑥2 + 𝑑2+ − 𝑑2
− = 20000 (5)
70𝑥1 + 100𝑥2 − 200𝑥1 − 80𝑥2 + 𝑑3+ − 𝑑3
− = 0 (6)
𝑥1, 𝑥2, 𝑑1+, 𝑑1
−, 𝑑2+, 𝑑2
−, 𝑑3+, 𝑑3
− ≥ 0
36
Representamos el conjunto de soluciones factibles:
Ilustración 9 Conjunto Factible Ejemplo 3 (Elaboración Propia)
Prioridad 1:
𝑃1 ≡ 𝑚í𝑛(𝑑1− + 𝑑2
−)
𝑠. 𝑎.
{
9𝑥1 + 10𝑥2 ≥ 900 (1)2𝑥1 + 5𝑥2 ≥ 300 (2) 5𝑥1 + 4𝑥2 ≤ 800 (3)
70𝑥1 + 100𝑥2 + 𝑑1+ − 𝑑1
− = 14000 (4)
200𝑥1 + 80𝑥2 + 𝑑2+ − 𝑑2
− = 20000 (5)
𝑥1, 𝑥2, 𝑑1+, 𝑑1
−, 𝑑2+, 𝑑2
−, ≥ 0
37
Ilustración 10 Representación Primera Prioridad Ejemplo 3 (Elaboración Porpia)
Soluciones óptimas: �̅� ∈ 𝐴
Valor óptimo: 0
Prioridad 2:
𝑃2 ≡ 𝑚í𝑛(𝑑3+)
𝑠. 𝑎.
{
9𝑥1 + 10𝑥2 ≥ 900 (1)2𝑥1 + 5𝑥2 ≥ 300 (2) 5𝑥1 + 4𝑥2 ≤ 800 (3)
70𝑥1 + 100𝑥2 + 𝑑1+ − 𝑑1
− = 14000 (4)
200𝑥1 + 80𝑥2 + 𝑑2+ − 𝑑2
− = 20000 (5)
−130𝑥1 + 20𝑥2 + 𝑑3+ − 𝑑3
− = 0 (6)
𝑥1, 𝑥2, 𝑑1+, 𝑑1
−, 𝑑2+, 𝑑2
−, 𝑑3+, 𝑑3
− ≥ 0
38
Ilustración 11Representación Segunda Prioridad Ejemplo 3 (Elaboración Propia)
Soluciones óptimas: �̅� ∈ 𝐵
Valor óptimo: 0
Prioridad 3:
𝑃3 ≡ 𝑚í𝑛(−83𝑥1 − 98𝑥2)
𝑠. 𝑎.
{
9𝑥1 + 10𝑥2 ≥ 900 (1)
2𝑥1 + 5𝑥2 ≥ 300 (2) 5𝑥1 + 4𝑥2 ≤ 800 (3)
70𝑥1 + 100𝑥2 + 𝑑1+ − 𝑑1
− = 14000 (4)
200𝑥1 + 80𝑥2 + 𝑑2+ − 𝑑2
− = 20000 (5)
−130𝑥1 + 20𝑥2 + 𝑑3+ − 𝑑3
− = 0 (6)
𝑥1, 𝑥2, 𝑑1+, 𝑑1
−, 𝑑2+, 𝑑2
−, 𝑑3+, 𝑑3
− ≥ 0
39
Ilustración 12 Solución Gráfica Ejemplo 3 (Elaboración Propia)
La solución óptima consiste en operar 19.44 horas al día con la máquina 1 y
126.39 horas al día con la máquina 2. Se utilizan 14000 litros de leche de oveja y de
cabra, de ambos la misma cantidad. Y el beneficio obtenido es de 14000€.
40
5.4. EJEMPLO 4:”METAS SIN PRIORIDADES”
En una industria panadera se quiere introducir la elaboración de dos nuevos tipos
de pan: integral y de centeno, ya que se tiene asegurada la venta de su
producción.
Estos panes se elaboran principalmente a base de tres ingredientes: salvado
integral, harina de trigo y harina de centeno. Para elaborar 1 kg de pan integral se
necesitan 350 g de salvado integral y 150 g de harina de trigo y para la elaboración de 1
kg de pan de centeno se necesitan 250 g de harina de trigo y 250 g de harina de
centeno. La disponibilidad diaria de salvado integral es de 210 kg, 115 kg de
harina de trigo y 100 kg de harina de centeno. El beneficio que deja cada kg de pan
integral es de 0.40 € y 0.60 € cada kg de pan de centeno.
La industria panadera pretende conseguir las siguientes metas, aunque considera
que la meta del beneficio es dos veces más importante que las otras dos metas
establecidas.
Meta 1: Se desea obtener un beneficio de al menos 240 € diarios.
Meta 2: Se desea que la cantidad elaborada diariamente de pan integral
sea al menos el doble que la de centeno.
Meta 3: Se desea que la cantidad elaborada diariamente de pan de
centeno no sea inferior a 300 kg.
El dueño de la industria panadera opina que el logro para el objetivo de la meta
de beneficio es 2 veces más importante que las otras dos metas. (Castro Íñigo, 2011)
Definimos las variables de decisión del problema:
𝑥1: Kg de pan integral elaborado diariamente
𝑥2: Kg de pan de centeno elaborado diariamente
𝑚í𝑛 𝑍 = 2𝑑1+ + 𝑑2
+ + 𝑑3+
{
0,35𝑥1 ≤ 2100,25𝑥2 ≤ 100
0,15𝑥1 + 0,25𝑥2 ≤ 115
0,4𝑥1 + 0,6𝑥2 + 𝑑1+ − 𝑑1
− = 240
𝑥1 − 2𝑥2 + 𝑑2+ − 𝑑2
− = 0
𝑥2 + 𝑑3+ − 𝑑3
− = 300
𝑥1, 𝑥2, 𝑑1+, 𝑑1
−, 𝑑2+, 𝑑2
−, 𝑑3+, 𝑑3
− ≥ 0
La solución óptima consiste en elaborar diariamente 418,1818 kg de pan integral
y 209,0909 kg de pan de centeno. El beneficio diario es de 292.73€ (𝑑1+ = 0, 𝑑1
− =
52.73), por lo tanto podemos decir que la meta primera meta no se cumple, hay un
41
exceso, aunque en este caso es bueno puesto que lo que queremos es que los beneficios
sean los máximos.
La producción de pan integral es exactamente el doble que la producción de pan
de centeno (𝑑2+ = 0, 𝑑2
− = 0), como vemos la segunda meta también se cumple.
Por último, la cantidad elaborada diariamente de pan de centeno es menor de
300 kg (𝑑3+ = 90.91, 𝑑3
− = 0), por tanto, la última meta establecida no se cumple.
42
6. CONCLUSIONES GENERALES
En este trabajo de investigación se ha realizado un recorrido dentro del campo de
la “Programación Multiobjetivo”, se han visto los conceptos básicos de esta, así como
los principales métodos de resolución que la componen con su respectivo ejemplo
aclaratorio. Por tanto podemos extraer las siguientes conclusiones:
La “Programación Multiobjetivo”, es una rama de la Investigación Operativa
que se ajusta perfectamente a la realidad, puesto que tiene en cuenta varios objetivos
enfrentados, situación más que común en la realidad de cualquier persona o empresa.
Los resultados de los ejemplos expuestos han servido para mostrar la utilidad de
esta disciplina. Que es aplicable en el mundo empresarial, además de tener otros
muchos campos más de aplicación.
Aparte de estos métodos de resolución, a día de hoy existen muchas más
opciones, que se exponen en la siguiente sección, que introducen mejoras y hacen que la
“Programación Lineal Multiobjetivo” sea más eficaz y se adapte aún más a la realidad.
El software elegido para la resolución de los problemas y la generación de los
gráficos, ha sido R debido a sus características y potencialidad. Todos los scripts
utilizados han sido incluidos en los anexos al final de este proyecto.
Por último podemos concluir, que los objetivos tanto generales como específicos
establecidos al inicio de este proyecto, se han cumplido.
43
7. FUTURAS LÍNEAS DE INVESTIGACIÓN
Durante el desarrollo de este trabajo de investigación han surgido nuevos
interrogantes y líneas de investigación paralelas al tema en cuestión, sobre los que se
recomienda trabajar con el fin de complementar lo expuesto en este trabajo.
Una de las líneas paralelas que nos encontramos es los “Métodos Interactivos
Multiobjetivo”, una técnica más que añadir a las “Tecnicas a priorí o generadoras” o a
las “Técnicas a posteriorí” presentadas en este estudio.
Como ya se ha mencionado anteriormente, en el “Proceso Interactivo”, el
analista y el decisor trabajan codo a codo. En este tipo de procesos no se tienen las
preferencias absolutas del decisor sino las preferencias relativas a la solución
presentada, cuando se tienen estas se reformula el problema incluyéndolas y obteniendo
así una nueva solución. Este proceso iterativo e interactivo continúa moviéndose a
través de todas las soluciones eficientes siguiendo la dirección establecida por el
decisor, hasta que se alcanza la solución que este considera buena.
Los métodos más destacados dentro de este campo son, el “Método STEM”,
(Benayoun R. a., 1971), este es considerado como el método interactivo más antiguo y
el más usado de todos. Y el “Método de Zionts & Wallenius”, (Zionts S. a., 1976) este
puede ser considerado como uno de los métodos más importantes dentro de este campo,
aunque, debido a su gran complejidad no goza de una gran aceptación práctica.
Otro punto a tratar seria la “Programación Lineal Multiobjetivo Discreta”, en
todos los ejemplos tratados en este trabajo, subyace un conjunto de soluciones factibles
formado por infinitos puntos, este tipo de problemas suelen denominarse problemas
continuos.
En contraposición a estos, nos encontramos con los problemas contenidos dentro
de la “Programación Lineal Multionjetivo Discreta”, en los que el número de
alternativas es finito y normalmente este no es muy grande. Los métodos expuestos
antes son aplicables a este tipo de problemas, aunque, existen métodos desarrollados
explícitamente para este enfoque.
Uno de los métodos más conocidos y aplicados dentro de este paradigma, es el
método ELECTRE, (Benayoun R. a., 1966), este consiste en la partición del conjunto
eficiente para reducir su tamaño. Se divide en un subconjunto de alternativas favorables
y en otro con las menos favorables.
44
A finales de la década de los 70, se introdujo otro método el cual tuvo un gran
impacto tanto de forma teórica como de aplicación. Este es conocido por AHP (Analitic
Hierarchy Process), (Saaty, 1977).
Como se puede observar, estas líneas de actuación son complementarias a las ya
expuestas en este trabajo y se pueden considerar como líneas de investigación futuras
para completar este estudio.
45
8. ÍNDICE DE FIGURAS
o Ilustración 1 Esquema de la Toma de decisiones Multicriterio .............. 9
o Ilustración 2 Francis Edgeworth y Vilfredo Pareto, los “padres” de la
Programación Multiobjetivo ................................................................... 9
o Ilustración 3 Representación de la famosa "Frontera de Pareto" (Sayyad,
2013) ................................................................................................... 15
o Ilustración 4 Charnes y Cooper fueron los autores más destacados de
esta técnica........................................................................................... 23
o Ilustración 5 Conjunto Factible (Elaboración Propia) .......................... 29
o Ilustración 6 Espacio de Funciones (Elaboración Propia) .................... 30
o Ilustración 7 Conjunto Factible Ejemplo 2 (Elaboración Propia) ......... 32
o Ilustración 8 Espacio de Funciones Ejemplo 2 .................................... 33
o Ilustración 9 Conjunto Factible Ejemplo 3 (Elaboración Propia) ......... 36
o Ilustración 10 Representación Primera Prioridad Ejemplo 3
(Elaboración Porpia) ............................................................................ 37
o Ilustración 11Representación Segunda Prioridad Ejemplo 3
(Elaboración Propia) ............................................................................ 38
o Ilustración 12 Solución Gráfica Ejemplo 3 (Elaboración Propia) ........ 39
9. ÍNDICE DE TABLAS
Tabla 1 Matriz de Pagos................................................................................. 16
Tabla 2 Puntos extremos de las regiones F y Z ................................................ 29
Tabla 3 Matriz de Pagos Ejemplo 1 ................................................................. 31
Tabla 4 Conjunto de Vértices Ejemplo 2 ......................................................... 33
Tabla 5 Matriz de Pagos Ejemplo 2 ................................................................. 34
46
10. BIBLIOGRAFÍA
Benayoun, R. a. (1966). ELECTRE: Une Methode Pour Guider le Choix en Presence de
Points de Vue Multiples. Sema, Direction Scientifique. Note de Travail No. 49.
Benayoun, R. a. (1971). Linear programming with multiple objective functions: Step
method (STEM). Mathematical programming, 1(1), 366-375.
Castro Íñigo, B. a. (2011). Ejercicios resueltos de investigación operativa: exámenes
propuestos en la Facultad de Ciencias Económicas y Empresariales. Servicio
Editorial de la Universidad del País Vasco/Euskal Herriko Unibertsitatearen
Argitalpen Zerbitzua.
Charnes, A. a. (1955). Optimal estimation of executive compensation by linear
programming. Management science, 1(2), 138-151.
Charnes, A. a. (1957). Management models and industrial applications of linear
programming. Management Science, 4(1), 38--91.
Charnes, A. a. (1968). A goal programming model for media planning. Management
Science, 14(8), B-423.
Charnes, A. a. (1977). Goal programming and multiple objective optimizations: Part 1.
European Journal of Operational Research, 1(1), 39-54.
Cohon, J. L. (1978). Multiobjective programming and planning.
Edgeworth, F. Y. (1881). Mathematical psychics: An essay on the application of
mathematics to the moral sciences (Vol. 10). London: Kegan Paul.
Ehrgott, M. (2006). Multicriteria optimization. Springer Science & Business Media.
Ignizio, J. (1963). Adaptive antenna array study. Boeing Company, RWA-5557.
Ignizio, J. P. (1976). Goal programming and extensions. Lexington Books.
Ijiri, Y. (1965). Management Goals and Accounting for Control. Chicago: Rand-
McNally.
Ijiri, Y. (1965). The effects of accounting alternatives on management decisions.
Graduate School of Business, Standford University.
Insua, S. R. (2004). Investigación operativa: modelos determinísticos y estocásticos.
Madrid: Centro de estudios Ramón Areces S.A.
Jääskeläinen, V. (1969). A goal programming model of aggregate production planning.
The Swedish Journal of Economics, 14-29.
Kirkwood, C. W. (1985). Ranking with partial information: A method and an
application. Operations Research, 33(1), 38-48.
47
Köksalan, M. a. (2013). An early history of multiple criteria decision making. Journal
of Multi-Criteria Decision Analysis, 20(1-2), 87-94.
Koopmans, T. (1951). Analysis of Production as an Efficient Combination of Economic
Activities. Activity Analysis, Cowles Commission Monograph.
KuHN, H. a. (1951). Nonlinear programming, Proecedings of the Berkeley Symposium
of Mathematical Statistics and Probability. University of California Press.
Lee, S. M. (1972). Goal programming for decision analysis. Auerbach Philadelphia.
Mao, J. C. (1969). Quantitative analysis of financial decisions. Prentice Hall.
Marglin, J. (1967). Public investment criteria. Cambridge, Massachusetts: MIT Press.
Orumie, U. a. (2013). An efficient method of solving lexicographic linear goal
programming problem. International Journal of Scientific and Research
Publications, 3, 1-8.
Romero, C. (1993). Teoría de la decisión multicriterio: conceptos, técnicas y
aplicaciones.
Saaty, T. L. (1977). A scaling method for priorities in hierarchical structures. Journal of
mathematical psychology, 15(3), 234-281.
Sayyad, A. S. (2013). Pareto-optimal search-based software engineering (POSBSE): A
literature survey. En Realizing Artificial Intelligence Synergies in Software
Engineering (RAISE). IEEE.
Taha, H. A. (2004). Investigación de operaciones. Pearson Educación.
Vilfredo, P. (1896). Cours d’economie politique. Rouge: Lausanne: Librairie de
l'Universit'e.
Zadeh, L. (1963). Optimality and Non-scalar Valued Performance Criteria. Automatic
Control, IEEE Transactions, 8, 59-63.
Zionts, S. (1981). A multiple criteria method for choosing among discrete alternatives.
European Journal of Operational Research, 7(2), 143-147.
Zionts, S. a. (1976). An interactive programming method for solving the multiple
criteria problem. Management science, 22(6), 652-663.
Zupko, J. a. (2003). John Buridan: portrait of a fourteenth-century arts master.
Cambridge Univ Press.
ANEXO: SCRIPTS UTILIZADOSPROBLEMA 1
### EJEMPLO 1 ###
### REPRESENTAMOS EL CONJUNTO FACTIBLE ###
### Calculamos los puntos de corte con los ejes y entre ambas funciones ###
### Puntos de corte de dos funciones ###
myCoeffMatrix<-matrix(c(600,400,50,50),nrow=2,ncol=2,byrow=T)
myRhsMatrix<-matrix(c(48000,4500),nrow = 2,ncol = 1,byrow = T)
myInverse<-solve(myCoeffMatrix)
myResult<-myInverse %*% myRhsMatrix
print(myResult)
### Puntos de corte con los ejes ###
x2=0
(48000-400*x2)/600
x1=0
(4500-50*x1)/50
### Representación de las funciones ###
curve((48000-600*x)/400,-10,100,ylim=c(-10,120),col="red",lwd=3,xlab="x1",ylab="x2",
main="Conjunto Factible")
curve((4500-50*x)/50,col="blue",lwd=3,add=T)
abline(h=0)
abline(v=0)
### Sombreado ###
x<-c(0.2,79.2,59.7,0.2)
y<-c(0.2,0.2,29.7,89.2)
polygon(x, y,col = "#B1F8F8", lty = 0.1, lwd = 0.1, border = NULL)
### Marcado de puntos ###
text(-5,85,"(0,90)")
points(0,90,type="p",pch=19,col="black",bg=NA,cex=1)
text(-5,5,"(0,0)")
points(0,0,type="p",pch=19,col="black",bg=NA,cex=1)
I
text(73,3,"(80,0)")
points(80,0,type="p",pch=19,col="black",bg=NA,cex=1)
text(65,35,"(60,30)")
points(60,30,type="p",pch=19,col="black",bg=NA,cex=1)
text(5,120,"(1)")
text(90,5,"(2)")
text(30,30,"F",cex=2)
### REPRESENTAMOS EL ESPACIO DE FUNCIONES ###
### Representación de los vertices###
x<-c(0,5600,5400,3600)
y<-c(0,-560,-540,-360)
plot(x,y,type="b",xlim=c(-50,6000),ylim=c(-700,50),xlab = "z1",ylab = "z2",main
= "Espacio de Funciones")
lines(x,y,lwd=4,col="#0000FF")
abline(h=0)
abline(v=0)
abline(h=-560,lty=2,col="red",lwd=3)
x1<-c(0,5600,0)
y1<-c(0,-560,-560)
polygon(x=x1, y=y1, col = "#D4D4D4", lty = 1, lwd = 1, border = NULL)
text(150,30,"A'")
points(0,0,type="p",pch=19,col="black",bg=NA,cex=1.5)
text(5750,-575,"D'")
points(5600,-560,type="p",pch=19,col="black",bg=NA,cex=1.5)
text(5570,-525,"C'")
points(5400,-540,type="p",pch=19,col="black",bg=NA,cex=1.5)
text(3750,-335,"B'")
points(3600,-360,type="p",pch=19,col="black",bg=NA,cex=1.5)
text(2000,-400,"Z",cex=2)
### CALCULAMOS LA MATRIZ DE PAGOS ###
### Maximizamos la primera función con sus restricciones ###
require(lpSolve)
f.obj <- c(70,40)
f.con <- matrix (c(600,400,50,50), nrow=2, byrow=TRUE)
f.dir <- c("<=", "<=")
II
f.rhs <- c(48000,4500)
Funcion1<-lp (direction = "max", objective.in=f.obj, const.mat=f.con,
const.dir=f.dir, const.rhs=f.rhs, compute.sens=1)
Funcion1$objval
Funcion1$solution
### Maximizamos la segunda función con sus restricciones ###
f.obj <- c(-7,-4)
f.con <- matrix (c(600,400,50,50), nrow=2, byrow=TRUE)
f.dir <- c("<=", "<=")
f.rhs <- c(48000,4500)
Funcion2<-lp (direction = "max", objective.in=f.obj, const.mat=f.con,
const.dir=f.dir, const.rhs=f.rhs, compute.sens=1)
Funcion2$objval
Funcion2$solution
### RESOLVEMOS EL PROBLEMA PONDERADO ###
f.obj <- c(56,32)
f.con <- matrix (c(600,400,50,50), nrow=2, byrow=TRUE)
f.dir <- c("<=", "<=")
f.rhs <- c(48000,4500)
Ejemplo1<-lp (direction = "max", objective.in=f.obj, const.mat=f.con,
const.dir=f.dir, const.rhs=f.rhs, compute.sens=1)
Ejemplo1$objval
Ejemplo1$solution
III
PROBLEMA 2
### EJEMPLO 2 ###
### REPRESENTAMOS EL CONJUNTO FACTIBLE ###
### Calculamos los puntos de corte con los ejes ###
### No se cortan entre ellas, ya que son rectas paralelas.
### Puntos de corte con los ejes función 1 ###
x1=0
x2<-(600-20*x1)/30
x2
x2=0
x1<-(600-30*x2)/20
x1
### Puntos de corte con los ejes función 2 ###
x1=0
x2<-(250-20*x1)/30
x2
x2=0
x1<-(250-30*x2)/20
x1
### Representación de las funciones ###
curve((600-20*x)/30,-10,50,ylim=c(-10,30),col="red",lwd=3,xlab="x1",ylab="x2",
main="Conjunto Factible")
curve((250-20*x)/30,col="blue",lwd=3,add=T)
abline(h=0)
abline(v=0)
### Sombreado ###
x<-c(0.2,0.2,12.7,29.7)
y<-c(19.8,8.5,0,0)
polygon(x, y,col = "#B1F8F8", lty = 0.1, lwd = 0.1, border = NULL)
### Marcado de puntos ###
text(-3,19,"(0,20)")
points(0,20,type="p",pch=19,col="black",bg=NA,cex=1)
IV
text(-4,7,"(0,8.33)")
points(0,8.33,type="p",pch=19,col="black",bg=NA,cex=1)
text(9,-2,"(12.5,0)")
points(12.5,0,type="p",pch=19,col="black",bg=NA,cex=1)
text(28,-2,"(30,0)")
points(30,0,type="p",pch=19,col="black",bg=NA,cex=1)
text(5,3,"(1)")
text(25,5,"(2)")
text(15,5,"F",cex=2)
### REPRESENTAMOS EL ESPACIO DE FUNCIONES ###
### Representación de los vertices###
x<-c(600,249.9,250,600,600)
y<-c(-1800,-749.7,-1000,-2400,-1800)
plot(x,y,type="b",xlim=c(0,700),ylim=c(-2400,0),xlab = "z1",ylab = "z2",main =
"Espacio de Funciones")
lines(x,y,lwd=4,col="#0000FF")
abline(h=0)
abline(v=0)
abline(h=-740,lty=2,col="red",lwd=2)
abline(v=249.9,lty=2,col="red",lwd=2)
polygon(x, y, col = "#D4D4D4", lty = 1, lwd = 1, border = NULL)
text(630,-1800,"D'")
points(600,-1800,type="p",pch=19,col="black",bg=NA,cex=1.5)
text(265,-695,"A'")
points(249.9,-749.7,type="p",pch=19,col="black",bg=NA,cex=1.5)
text(230,-1000,"B'")
points(250,-1000,type="p",pch=19,col="black",bg=NA,cex=1.5)
text(630,-2400,"C'")
points(600,-2400,type="p",pch=19,col="black",bg=NA,cex=1.5)
text(400,-1350,"Z",cex=2)
### CALCULAMOS LA MATRIZ DE PAGOS ###
### Maximizamos la primera función con sus restricciones ###
require(lpSolve)
f.obj <- c(20,30)
f.con <- matrix (c(20,30,20,30), nrow=2, byrow=TRUE)
V
f.dir <- c("<=", ">=")
f.rhs <- c(600,250)
Funcion1<-lp (direction = "max", objective.in=f.obj, const.mat=f.con,
const.dir=f.dir, const.rhs=f.rhs, compute.sens=1)
Funcion1$objval
Funcion1$solution
### Maximizamos la segunda función con sus restricciones ###
f.obj <- c(-80,-90)
f.con <- matrix (c(20,30,20,30), nrow=2, byrow=TRUE)
f.dir <- c("<=", ">=")
f.rhs <- c(600,250)
Funcion2<-lp (direction = "max", objective.in=f.obj, const.mat=f.con,
const.dir=f.dir, const.rhs=f.rhs, compute.sens=1)
Funcion2$objval
Funcion2$solution
### RESOLVEMOS EL PROBLEMA PONDERADO ###
f.obj <- c(20,30)
f.con <- matrix (c(20,30,20,30,-80,-90), nrow=3, byrow=TRUE)
f.dir <- c("<=", ">=","<=")
f.rhs <- c(600,250,2000)
Ejemplo1<-lp (direction = "max", objective.in=f.obj, const.mat=f.con,
const.dir=f.dir, const.rhs=f.rhs, compute.sens=1)
Ejemplo1$objval
Ejemplo1$solution
VI
PROBLEMA 3
### EJEMPLO 3 ###
### REPRESENTAMOS EL CONJUNTO FACTIBLE ###
### Calculamos los puntos de corte entre ambas funciones ###
### Puntos de corte entre las funciones 1 y 2 ###
myCoeffMatrix<-matrix(c(9,10,2,5),nrow=2,ncol=2,byrow=T)
myRhsMatrix<-matrix(c(900,300),nrow = 2,ncol = 1,byrow = T)
myInverse<-solve(myCoeffMatrix)
myResult<-myInverse %*% myRhsMatrix
print(myResult)
### Puntos de corte con los ejes función 1 ###
x1=0
x2<-(900-9*x1)/10
x2
### Puntos de corte con los ejes función 2 ###
x2=0
x1<-(300-5*x2)/2
x1
### Puntos de corte con los ejes función 3 ###
x1=0
x2<-(800-5*x1)/4
x2
x2=0
x1<-(800-4*x2)/5
x1
### Representación de las funciones ###
curve((900-9*x)/10,-15,180,ylim=c(-15,220),col="red",lwd=3,xlab="x1",ylab="x2",
main="Conjunto Factible")
curve((300-2*x)/5,col="blue",lwd=3,add=T)
curve((800-5*x)/4,col="green",lwd=3,add=T)
abline(h=0)
abline(v=0)
VII
### Sombreado###
x<-c(0.5,0.5,60,150,158)
y<-c(198,91,37,0.5,0.5)
polygon(x, y,col = "#B1F8F8", lty = 0.1, lwd = 0.1, border = NULL)
### Marcado de puntos###
text(10,205,"(0,200)")
points(0,200,type="p",pch=19,col="black",bg=NA,cex=1)
text(-8,85,"(0,90)")
points(0,90,type="p",pch=19,col="black",bg=NA,cex=1)
text(50,30,"(60,36)")
points(60,36,type="p",pch=19,col="black",bg=NA,cex=1)
text(140,-5,"(150,0)")
points(150,0,type="p",pch=19,col="black",bg=NA,cex=1) text(170,5,"(160,0)")
points(160,0,type="p",pch=19,col="black",bg=NA,cex=1)
text(83,7,"(1)")
text(120,5,"(2)")
text(150,25,"(3)")
text(50,100,"X",cex=2)
### RESOLVEMOS EL PROBLEMA MEDIANTE EL MÉTODO GRÁFICO ###
### PRIORIDAD 1 ###
### REPRESENTAMOS EL CONJUNTO FACTIBLE ###
### Calculamos los puntos de corte entre las funciones ###
### Puntos de corte entre las funciones 5 y 2 ###
myCoeffMatrix<-matrix(c(200,80,2,5),nrow=2,ncol=2,byrow=T)
myRhsMatrix<-matrix(c(20000,300),nrow = 2,ncol = 1,byrow = T)
myInverse<-solve(myCoeffMatrix)
myResult<-myInverse %*% myRhsMatrix
print(myResult)
### Puntos de corte entre las funciones 5 y 3 ###
myCoeffMatrix<-matrix(c(200,80,5,4),nrow=2,ncol=2,byrow=T)
myRhsMatrix<-matrix(c(20000,800),nrow = 2,ncol = 1,byrow = T)
myInverse<-solve(myCoeffMatrix)
myResult<-myInverse %*% myRhsMatrix
VIII
print(myResult)
### Puntos de corte entre las funciones 5 y 4 ###
myCoeffMatrix<-matrix(c(200,80,70,100),nrow=2,ncol=2,byrow=T)
myRhsMatrix<-matrix(c(20000,14000),nrow = 2,ncol = 1,byrow = T)
myInverse<-solve(myCoeffMatrix)
myResult<-myInverse %*% myRhsMatrix
print(myResult)
### Puntos de corte entre las funciones 4 y 3 ###
myCoeffMatrix<-matrix(c(70,100,5,4),nrow=2,ncol=2,byrow=T)
myRhsMatrix<-matrix(c(14000,800),nrow = 2,ncol = 1,byrow = T)
myInverse<-solve(myCoeffMatrix)
myResult<-myInverse %*% myRhsMatrix
print(myResult)
### Puntos de corte con los ejes función 4 ###
x1=0
x2<-((14000-7*x1)/100)
x2
### Representación de las funciones ###
curve((900-9*x)/10,-15,180,ylim=c(-15,220),col="red",lwd=3,xlab="x1",ylab="x2",
main="Conjunto Factible")
curve((300-2*x)/5,col="blue",lwd=3,add=T)
curve((800-5*x)/4,col="green",lwd=3,add=T)
curve((14000-70*x)/100,col="pink",lwd=3,add = T)
curve((20000-200*x)/80,col="orange",lwd=3,add = T)
abline(h=0)
abline(v=0)
### Sombreado ###
x<-c(0.5,0.5,60,90,61)
y<-c(139,91,37,24,96.5)
polygon(x, y,col = "#B1F8F8", lty = 0.1, lwd = 0.1, border = NULL)
### Numeración de funciones ###
text(83,7,"(1)")
text(120,5,"(2)")
text(150,25,"(3)")
text(20,135,"(4)")
IX
text(30,200,"(5)")
text(45,80,"A",cex=2)
arrows(30,100,50,140,length = 0.2,code=3)
arrows(65,45,95,55,length = 0.2,code=3)
### PRIORIDAD 2 ###
### REPRESENTAMOS EL CONJUNTO FACTIBLE ###
### Calculamos los puntos de corte entre las funciones ###
### Puntos de corte entre las funciones 6 y 4 ###
myCoeffMatrix<-matrix(c(-130,20,70,100),nrow=2,ncol=2,byrow=T)
myRhsMatrix<-matrix(c(0,14000),nrow = 2,ncol = 1,byrow = T)
myInverse<-solve(myCoeffMatrix)
myResult<-myInverse %*% myRhsMatrix
print(myResult)
### Puntos de corte entre las funciones 6 y 1 ###
myCoeffMatrix<-matrix(c(-130,20,9,10),nrow=2,ncol=2,byrow=T)
myRhsMatrix<-matrix(c(0,900),nrow = 2,ncol = 1,byrow = T)
myInverse<-solve(myCoeffMatrix)
myResult<-myInverse %*% myRhsMatrix
print(myResult)
### Representación de las funciones ###
curve((900-9*x)/10,-15,180,ylim=c(-15,220),col="red",lwd=3,xlab="x1",ylab="x2",
main="Conjunto Factible")
curve((300-2*x)/5,col="blue",lwd=3,add=T)
curve((800-5*x)/4,col="green",lwd=3,add=T)
curve((14000-70*x)/100,col="pink",lwd=3,add = T)
curve((20000-200*x)/80,col="orange",lwd=3,add = T)
curve((130*x)/20,col="purple",lwd=3,add = T)
abline(h=0)
abline(v=0)
### Sombreado ###
x<-c(0.5,0.5,12,19)
y<-c(139,91,80,126)
polygon(x, y,col = "#B1F8F8", lty = 0.1, lwd = 0.1, border = NULL)
X
### Numeración de funciones ###
text(83,7,"(1)")
text(120,5,"(2)")
text(150,25,"(3)")
text(15,140,"(4)")
text(25,200,"(5)")
text(-5,-5,"(6)")
text(10,115,"B",cex=2)
arrows(15,160,35,150,length = 0.2,code=3)
### Solución eficiente ###
points(19.44,126.39,type="p",pch=19,col="red",bg=NA,cex=1.5)
text(45,132,"(19.44,126.39)",col="red",cex=1)
### RESOLVEMOS EL PROBLEMA ###
library(lpSolve)
### Prioridad 1 ###
f.objective1<-c(0,0,0,1,0,1,0,0)
f.restricciones1<-matrix(c(70,100,1,-1,0,0,0,0,
200,80,0,0,1,-1,0,0,
-130,20,0,0,0,0,1,-1,
9,10,0,0,0,0,0,0,
2,5,0,0,0,0,0,0,
5,4,0,0,0,0,0,0),nrow=6,byrow=T)
f.hrsb1<-c(14000,20000,0,900,300,800)
f.dir1<-c("=","=","=",">=",">=","<=")
Lecheb1<-lp(direction="min",objective.in=f.objective1,const.mat=f.restricciones1,
const.dir=f.dir1,const.rhs=f.hrsb1,compute.sens=0)
Lecheb1$solution
### Prioridad 2 ###
f.objective2<-c(0,0,0,0,0,0,0,1)
f.restricciones2<-matrix(c(70,100,1,-1,0,0,0,0,
200,80,0,0,1,-1,0,0,
-130,20,0,0,0,0,1,-1,
9,10,0,0,0,0,0,0,
2,5,0,0,0,0,0,0,
5,4,0,0,0,0,0,0,
0,0,0,1,0,1,0,0),nrow=7,byrow=T)
XI
f.hrsb2<-c(14000,20000,0,900,300,800,0)
f.dir2<-c("=","=","=",">=",">=","<=","=")
Lecheb2<-lp(direction="min",objective.in=f.objective2,const.mat=f.restricciones2,
const.dir=f.dir2,const.rhs=f.hrsb2,compute.sens=0)
Lecheb2$solution
### Prioridad 3 ###
f.objective3<-c(83,98,0,0,0,0,0,0)
f.restricciones3<-matrix(c(70,100,1,-1,0,0,0,0,
200,80,0,0,1,-1,0,0,
-130,20,0,0,0,0,1,-1,
9,10,0,0,0,0,0,0,
2,5,0,0,0,0,0,0,
5,4,0,0,0,0,0,0,
0,0,0,1,0,1,0,0,
0,0,0,0,0,0,0,1),nrow=8,byrow=T)
f.hrsb3<-c(14000,20000,0,900,300,800,0,0)
f.dir3<-c("=","=","=",">=",">=","<=","=","=")
Lecheb3<-lp(direction="max",objective.in=f.objective3,const.mat=f.restricciones3,
const.dir=f.dir3,const.rhs=f.hrsb3,compute.sens=0)
Lecheb3$solution
XII
PROBLEMA 4
### EJEMPLO 4 ###
### RESOLVEMOS EL PROBLEMA DE METAS PONDERADAS ###
library(lpSolve)
f.objective1<-c(0,0,2,0,1,0,1,0)
f.restricciones1<-matrix(c(0.4,0.6,1,-1,0,0,0,0,
1,-2,0,0,1,-1,0,0,
0,1,0,0,0,0,1,-1,
0.35,0,0,0,0,0,0,0,
0,0.25,0,0,0,0,0,0,
0.15,0.25,0,0,0,0,0,0),nrow=6,byrow=T)
f.hrsb1<-c(240,0,300,210,100,115)
f.dir1<-c("=","=","=","<=","<=","<=")
Pan1<-lp(direction="min",objective.in=f.objective1,const.mat=f.restricciones1,
const.dir=f.dir1,const.rhs=f.hrsb1,compute.sens=0)
Pan1$solution Pan1$objval
XIII