23 votos

¿Cómo calcular la frontera de Pareto, intuitivamente hablando?

Estoy trabajando en un problema de optimización multiobjetivo y tenemos "alternativas" que se cuantifican en dos dimensiones: valor y coste.

Ahora la pregunta es "¿cómo se calcula una frontera de pareto? Quiero decir que sé que se puede aplicar algoritmos que lo hará por ti, pero quiero saber el algoritmo básico subyacente/pasos matemáticos que se emplearían para llegar a una frontera de pareto - quiero ser capaz de hacerlo con lápiz y papel - incluso si el algoritmo NO es eficiente.

He buscado por todas partes y parece que sólo encuentro varios algoritmos que se pueden emplear, pero no la intuición real de cómo se calcula una frontera de Pareto en primer lugar.

28voto

lowglider Puntos 562

La definición básica de la frontera de Pareto es que consiste exactamente en aquellas alternativas que son no dominado por cualquier otra alternativa. Decimos que una alternativa $A$ domina $B$ si $A$ supera a $B$ independientemente de la compensación entre el valor y el coste, es decir, si $A$ es ambos mejor y más barato que $B$ .

Evidentemente, tanto la mejor alternativa como la más barata pertenecen siempre a la frontera de Pareto y, de hecho, son sus puntos finales. Un algoritmo sencillo para encontrar las demás alternativas (si las hay) en la frontera de Pareto consiste en ordenar primero las alternativas según uno de los objetivos, por ejemplo, el coste. A continuación, se comienza con la alternativa más barata (que, como se ha señalado, siempre pertenece a la frontera de Pareto) y se saltan las alternativas sucesivas en orden de coste creciente hasta encontrar una con un valor más alto. Esta alternativa se añade entonces a la frontera y se reinicia la búsqueda a partir de ella.

Una descripción paso a paso del algoritmo, suponiendo que $A_1, \dotsc, A_n$ son las alternativas en orden creciente de coste, es así:

Algoritmo A :

  1. Dejemos que $i := 1$ .
  2. Añadir $A_i$ a la frontera de Pareto.
  3. Encontrar el más pequeño $j>i$ tal que $\operatorname{value}(A_j) > \operatorname{value}(A_i)$ .
  4. Si no hay tal $j$ existe, se detiene. De lo contrario, deje que $i := j$ y repetir desde el paso 2.

Anexo

En los comentarios de abajo, Nupul preguntó sobre el cálculo de la frontera de Pareto para combinaciones de alternativas.

Hay dos casos naturales e interesantes: uno en el que las combinaciones son conjuntos de alternativas (es decir, cada alternativa puede aparecer como máximo una vez en una combinación), y otro en el que son multisets (que puede incluir la misma alternativa más de una vez). A continuación, trataré ambos casos, pero permítanme primero dar un algoritmo alternativo para calcular la frontera de Pareto para solo alternativas:

Algoritmo B :

  1. Dejemos que $A_1, \dotsc, A_n$ sean las alternativas ordenadas según su relación coste/valor. Sea $i := 1$ .
  2. Añadir $A_i$ a la frontera de Pareto $P$ .
  3. Encontrar el más pequeño $j>i$ tal que $A_j$ no está dominada por ninguna alternativa ya en $P$ .
  4. Si no hay tal $j$ existe, se detiene. De lo contrario, deje que $i := j$ y repetir desde el paso 2.

En el paso 3, para comprobar si $A_j$ está dominada por cualquier alternativa en $P$ bastará con encontrar la alternativa más cara $B \in P$ que sigue siendo más barato que $A_j$ . (Por supuesto, por simetría, también podríamos elegir $B$ como la alternativa menos valiosa en $P$ que tiene mayor valor que $A_j$ .) Si $B$ no domina $A_j$ tampoco puede hacerlo ninguna otra alternativa en $P$ .

El algoritmo B es algo más complicado que el algoritmo A anterior (en particular, el algoritmo A se ejecuta en $O(n)$ tiempo si las alternativas ya están ordenadas, mientras que el algoritmo B necesita $O(n \log n)$ tiempo en cualquier caso), pero resulta que se generaliza mejor.


Ahora, consideremos conjuntos de cero o más alternativas. Obviamente, podríamos enumerar todos estos conjuntos y aplicar el algoritmo A o B, pero esto sería muy ineficiente: para $n$ alternativas, el número de conjuntos es $2^n$ . En cambio, podemos adaptar el algoritmo $B$ para construir las combinaciones sobre la marcha:

Algoritmo C :

  1. Dejemos que $A_1, \dotsc, A_n$ sean las alternativas ordenadas según su relación coste/valor. Sea $i := 1$ . Dejemos que $P := \lbrace\emptyset\rbrace$ , donde $\emptyset$ denota la combinación que no contiene alternativas.
  2. Para cada combinación $C \in P$ , dejemos que $C^* := C \cup \lbrace A_i \rbrace$ . Si $C^*$ no está dominada por ninguna combinación ya existente en $P$ , añada $C^*$ a $P$ .
  3. Si $i = n$ , stop. En caso contrario, incremente $i$ de uno en uno y repetir desde el paso 2.

De nuevo, como en el algoritmo B, no necesitamos comparar $C^*$ a cada combinación en $P$ ; es suficiente con comprobar si $C^*$ está dominada por la combinación más cara en $P$ que es más barato que $C^*$ .


¿Qué ocurre con las combinaciones de conjuntos múltiples? En este caso, obviamente, la frontera de Pareto $P$ contiene infinitas combinaciones: en particular, para cualquier combinación $C \in P$ la combinación $C + A_1$ , donde $A_1$ es la alternativa con la menor relación coste/valor, también pertenece en $P$ .

Sin embargo, el número de veces que cualquier otros alternativa puede aparecer en una combinación no dominada debe ser acotada. (La prueba es un poco tediosa, pero se deduce de simples consideraciones geométricas). Por lo tanto, sólo tenemos que considerar el conjunto finito $P_0$ de aquellas combinaciones en la frontera de Pareto que sí no incluir la alternativa $A_1$ las combinaciones restantes en la frontera se obtienen sumando un cierto número de $A_1$ s a esas combinaciones.

Para las combinaciones de conjuntos múltiples, también tenemos el siguiente lema útil:

Lema: Cualquier combinación que contenga una subcombinación dominada debe ser a su vez dominada.

En particular, esto significa que las combinaciones en $P$ sólo puede incluir alternativas que pertenezcan a su vez a $P$ . Así, como primer paso, podemos utilizar el algoritmo A (o B) para calcular la frontera de Pareto para las alternativas individuales y descartar cualquier alternativa que no forme parte de ella.

Para un algoritmo completo para calcular $P_0$ La siguiente definición resulta útil:

Dfn: Una combinación $B$ se dice que $A$ -dominar $C$ si la combinación $B + nA$ domina $C$ para algún número entero no negativo $n \in \mathbb N$ . Equivalentemente, $B$ $A$ -dominan $C$ si $\operatorname{cost}(C) > \operatorname{cost}(B) + n\,\operatorname{cost}(A)$ , donde $n = \max \left(0, \left\lfloor \frac{\operatorname{value}(C)-\operatorname{value}(B)}{\operatorname{value}(A)} \right\rfloor \right)$ .

Utilizando esta definición, podemos aplicar el siguiente algoritmo:

Algoritmo D :

  1. Dejemos que $A_1, \dotsc, A_n$ son las alternativas (no dominantes) ordenadas según su relación coste/valor. Sea $i := 2$ . Dejemos que $P_0 := \lbrace\emptyset\rbrace$ .
  2. Para cada combinación $C \in P_0$ , dejemos que $C^* := C + A_i$ . Si $C^*$ no es $A_1$ -dominado por cualquier combinación ya en $P_0$ , añada $C^*$ a $P_0$ .
  3. Repita desde el paso 2 hasta que no se añadan más combinaciones a $P_0$ .
  4. Si $i = n$ , stop. En caso contrario, incremente $i$ de uno en uno y repetir desde el paso 2.

I piense en este algoritmo debería ser correcto, pero para ser honesto, no estoy 100% seguro de que no haya errores o lagunas en mi esquema de prueba. Así que, por favor, pruébalo a fondo antes de usarlo para cualquier cosa importante. :-)

También creo que debería ser posible implementar el paso 2 de manera eficiente de forma similar a los algoritmos B y C, pero la situación se complica por el hecho de que la condición de rechazo es $A_1$ -dominio en lugar de la simple dominación. Por supuesto, si $B$ domina $C$ , entonces es trivial $A$ -dominan $C$ para cualquier $A$ Así que al menos se puede hacer una comprobación rápida de la dominancia simple.

Otra forma de optimizar el paso 2 es observar que si $C + A_i$ es $A_1$ -dominado por cualquier combinación en $P_0$ entonces también lo será $D + A_i$ para cualquier combinación $D$ que incluye $C$ como una subcombinación. En particular, podemos saltar al paso 4 en cuanto encontremos que $\emptyset + A_i = A_i$ mismo es $A_1$ -dominado por alguna combinación ya en $P_0$ .

0 votos

Qué bonito, corto, dulce y sencillo. +1 por eso. ¿Qué tal si se calcula la frontera de Pareto con la combinación de alternativas? Lo que sugieres sólo sería para una única alternativa. ¿Y si se pudieran combinar varias alternativas (valores de valor y costo siendo aditivo)? ¿Cómo lo calcularía en ese caso?

0 votos

No importa, creo que lo he resuelto: tendrás que crear una lista exhaustiva de todas las combinaciones posibles de las alternativas y entonces ejecutar el algoritmo anterior. Supongo que ahora entiendo lo que deben hacer los otros algoritmos de lujo, ya que su complejidad es exponencial. ¡Tan sencillo y a la vez tan desconcertante! Muchas gracias.

0 votos

Si te entiendo bien, deberías poder simplificar un poco las cosas. Ten en cuenta que cualquier combinación que incluya una alternativa dominada debe ser a su vez dominada; por lo tanto, puedes calcular primero la frontera de Pareto para las alternativas individuales, y luego sólo considerar las combinaciones de esas alternativas. (De hecho, sospecho que se puede simplificar aún más, pero tendré que pensarlo un poco más).

-1voto

Pascal Puntos 1655

Su problema dado tiene variables independientes que son los componentes principales para encontrar el mejor resultado. Tienes que decidir si están ponderadas y normalizarlas, luego sumarlas y encontrar el mínimo.

Un ejemplo sugerido en un documento de correspondencia parcial de formas de Donoser et al. para aplicar la frontera de Paretto es la distancia de Salukvazde.

Al implementar su algoritmo, utilicé la suma de los acordes como un parámetro y la longitud de las coincidencias como el como el otro. La suma de los acordes se normaliza por el valor máximo del parámetro y lo mismo se hace para la longitud. La raíz cuadrada de las sumas al cuadrado forman la función objetivo. Entonces se encuentra el mínimo entre esos resultados.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X