Articulo de referencia

Optimización de restricciones distribuidas

La optimización de restricciones distribuidas ( DCOP o DisCOP ) es el análogo distribuido de la optimización de restricciones . Un problema DCOP consiste en que un grupo de agen...

La optimización de restricciones distribuidas ( DCOP o DisCOP ) es el análogo distribuido de la optimización de restricciones . Un problema DCOP consiste en que un grupo de agentes debe elegir de forma distribuida valores para un conjunto de variables de manera que se minimice el coste de un conjunto de restricciones sobre dichas variables.

La satisfacción de restricciones distribuidas es un marco para describir un problema en términos de restricciones conocidas y aplicadas por distintos participantes (agentes). Las restricciones se describen sobre variables con dominios predefinidos y deben asignarse a los mismos valores por los diferentes agentes.

Los problemas definidos con este marco de trabajo pueden resolverse mediante cualquiera de los algoritmos diseñados para él.

El marco de trabajo se utilizó con diferentes nombres en la década de 1980. El primer uso conocido con el nombre actual data de 1990.

Definiciones

DCOP

Los ingredientes principales de un problema DCOP son los agentes y las variables . Es importante destacar que cada variable pertenece a un agente; esto es lo que hace que el problema sea distribuido. Formalmente, un DCOP es una tupla.A,V,D,F,α,η{\displaystyle \langle A,V,{\mathfrak {D}},f,\alpha ,\eta \rangle }, dónde:

  • A{\displaystyle A}es el conjunto de agentes ,{a1,,a|A|}{\displaystyle \{a_{1},\dots ,a_{|A|}\}}.
  • V{\displaystyle V}es el conjunto de variables ,{v1,v2,,v|V|}{\displaystyle \{v_{1},v_{2},\dots ,v_{|V|}\}}.
  • D{\displaystyle {\mathfrak {D}}}es el conjunto de dominios variables ,{D1,D2,,D|V|}{\displaystyle \{D_{1},D_{2},\dots ,D_{|V|}\}}, donde cadaDjD{\displaystyle D_{j}\in {\mathfrak {D}}}es un conjunto finito que contiene los posibles valores de la variablevj{\displaystyle v_{j}}.
    • SiDjD{\displaystyle D_{j}\in {\mathfrak {D}}}contiene solo dos valores (por ejemplo, 0 o 1), entoncesvj{\displaystyle v_{j}}se denomina variable binaria .
  • F{\displaystyle f}es la función de costo . Es una función [ 1 ]F:SV×vjSDjR{\displaystyle f:\bigcup _{S\subseteq V}\times _{v_{j}\in S}D_{j}\to \mathbb {R} }que asigna a cada posible asignación parcial un costo. Por lo general, solo unos pocos valores deF{\displaystyle f}son distintos de cero, y se representa como una lista de las tuplas a las que se les asigna un valor distinto de cero. Cada una de estas tuplas se denomina restricción . Cada restriccióndo{\displaystyle C}en este conjunto hay una funciónFdo:D1××DkR{\displaystyle f_{C}:D_{1}\times \cdots \times D_{k}\to \mathbb {R} }asignar un valor real a cada posible asignación de las variables. Algunos tipos especiales de restricciones son:
    • Restricciones unarias : restricciones sobre una sola variable, es decir,Fdo:DjR{\displaystyle f_{C}:D_{j}\to \mathbb {R} }para algunosvjV{\displaystyle v_{j}\in V}.
    • Restricciones binarias : restricciones sobre dos variables, es decir,Fdo:Dj1×Dj2R{\displaystyle f_{C}:D_{j_{1}}\times D_{j_{2}}\to \mathbb {R} }para algunosvj1,vj2V{\displaystyle v_{j_{1}},v_{j_{2}}\in V}.
  • α{\displaystyle \alpha }es la función de propiedad . Es una funciónα:VA{\displaystyle \alpha :V\to A}Asignar cada variable a su agente asociado.α(vj)ai{\displaystyle \alpha (v_{j})\mapsto a_{i}}significa que variablevj{\displaystyle v_{j}}"pertenece" al agenteai{\displaystyle a_{i}}Esto implica que es un agenteai{\displaystyle a_{i}}responsabilidad de asignar el valor de la variablevj{\displaystyle v_{j}}. Tenga en cuenta queα{\displaystyle \alpha }No necesariamente se trata de una inyección , es decir, un agente puede poseer más de una variable. Tampoco se trata necesariamente de una sobreyección , es decir, algunos agentes pueden no poseer ninguna variable.
  • η{\displaystyle \eta }es la función objetivo . Es un operador que agrega todos los individualesF{\displaystyle f}costos para todas las posibles asignaciones variables. Esto generalmente se logra mediante la suma:η(F)sSV×vjSDjF(s).{\displaystyle \eta (f)\mapsto \sum _{s\in \bigcup _{S\subseteq V}\times _{v_{j}\in S}D_{j}}f(s).}

El objetivo de un DCOP es que cada agente asigne valores a sus variables asociadas para minimizar o maximizarη(F){\displaystyle \eta (f)}para una asignación dada de las variables.

Tareas

Una asignación de valor es un par(vj,dj){\displaystyle (v_{j},d_{j})}dóndedj{\displaystyle d_{j}}es un elemento del dominioDj{\displaystyle D_{j}}.

Una asignación parcial es un conjunto de asignaciones de valor donde cadavj{\displaystyle v_{j}}Aparece como máximo una vez. También se le llama contexto. Esto puede entenderse como una función que asigna variables en el DCOP a sus valores actuales:t:V(DD){}.{\displaystyle t:V\to (D\in {\mathfrak {D}})\cup \{\emptyset \}.} Tenga en cuenta que un contexto es esencialmente una solución parcial y no necesita contener valores para cada variable del problema; por lo tanto,t(vi){\displaystyle t(v_{i})\mapsto \emptyset }implica que el agenteα(vi){\displaystyle \alpha (v_{i})}aún no se ha asignado un valor a la variablevi{\displaystyle v_{i}}. Dada esta representación, el " dominio " (es decir, el conjunto de valores de entrada) de la función fpuede pensarse como el conjunto de todos los contextos posibles para el DCOP. Por lo tanto, en el resto de este artículo podemos usar la noción de un contexto (es decir, elt{\displaystyle t}función) como entrada para laF{\displaystyle f}función.

Una tarea completa es una tarea en la que cadavj{\displaystyle v_{j}}Aparece exactamente una vez, es decir, todas las variables están asignadas. También se le denomina solución al DCOP.

Una solución óptima es una asignación completa en la que la función objetivoη(F){\displaystyle \eta (f)}se optimiza (es decir, se maximiza o se minimiza, dependiendo del tipo de problema).

Problemas de ejemplo

Diversos problemas de diferentes dominios pueden presentarse como DCOP (Problemas de Operación de Dominio).

Coloreado de grafos distribuidos

El problema de coloración de grafos es el siguiente: dado un grafoGRAMO=norte,mi{\displaystyle G=\langle N,E\rangle }y un conjunto de coloresdo{\displaystyle C}, asignar cada vértice ,nortenorte{\displaystyle n\subset N}, un color,dodo{\displaystyle c\leq C}, de manera que se minimice el número de vértices adyacentes del mismo color.

Como DCOP, hay un agente por vértice que se asigna para decidir el color asociado. Cada agente tiene una sola variable cuyo dominio asociado es de cardinalidad|do|{\displaystyle |C|}(hay un valor de dominio para cada color posible). Para cada vérticenorteinorte{\displaystyle n_{i}\leq N}, hay una variableviV{\displaystyle v_{i}\in V}con dominioDi=do{\displaystyle D_{i}=C}. Para cada par de vértices adyacentesnortei,nortejmi{\displaystyle \langle n_{i},n_{j}\rangle \in E}Existe una restricción de costo 1 si a ambas variables asociadas se les asigna el mismo color:(dodo:F(vi,do,vj,do)1).{\displaystyle (\forall c\subseteq C:f(\langle v_{i},c\rangle ,\langle v_{j},c\rangle )\mapsto 1).}El objetivo, entonces, es minimizarη(F){\displaystyle \eta (f)}.

Problema de la mochila múltiple distribuida

La variante múltiple distribuida del problema de la mochila es la siguiente: dado un conjunto de artículos de volumen variable y un conjunto de mochilas de capacidad variable, asignar cada artículo a una mochila de tal manera que se minimice la cantidad de desbordamiento.I{\displaystyle I}ser el conjunto de elementos,K{\displaystyle K}ser el conjunto de mochilas,s:Inorte{\displaystyle s:I\to \mathbb {N} }ser una función que asigna elementos a su volumen, ydo:Knorte{\displaystyle c:K\to \mathbb {N} }ser una función que relaciona las mochilas con sus capacidades.

Para codificar este problema como un DCOP, para cadaiI{\displaystyle i\in I}crear una variableviV{\displaystyle v_{i}\in V}con dominio asociadoDi=K{\displaystyle D_{i}=K}. Entonces, para todos los contextos posiblest{\displaystyle t}:F(t)kK{0r(t,k)do(k),r(t,k)do(k)de lo contrario,{\displaystyle f(t)\mapsto \sum _{k\in K}{\begin{cases}0&r(t,k)\leq c(k),\\r(t,k)-c(k)&{\text{otherwise}},\end{cases}}}dónder(t,k){\displaystyle r(t,k)}representa el peso total asignado por contextot{\displaystyle t}mochilak{\displaystyle k}:r(t,k)=vit1(k)s(i).{\displaystyle r(t,k)=\sum _{v_{i}\in t^{-1}(k)}s(i).}

Problema de asignación de elementos distribuidos

El problema de asignación de artículos es el siguiente: Hay varios artículos que deben dividirse entre varios agentes. Cada agente tiene una valoración diferente para los artículos. El objetivo es optimizar algún objetivo global, como maximizar la suma de utilidades o minimizar la envidia. El problema de asignación de artículos puede formularse como un DCOP de la siguiente manera. [ 2 ]

  • Agregue una variable binaria v ij para cada agente i y elemento j . El valor de la variable es "1" si el agente obtiene el elemento y "0" en caso contrario. La variable pertenece al agente i .
  • Para expresar la restricción de que cada artículo se entrega a un máximo de un agente, agregue restricciones binarias para cada par de variables diferentes relacionadas con el mismo artículo, con un costo infinito si las dos variables son simultáneamente "1", y un costo cero en caso contrario.
  • Para expresar la restricción de que todos los artículos deben ser asignados, agregue una restricción n -aria para cada artículo (donde n es el número de agentes), con un costo infinito si ninguna variable relacionada con este artículo es "1".

Otras aplicaciones

DCOP se aplicó a otros problemas, como por ejemplo:

  • Coordinación de sensores móviles;
  • Planificación de reuniones y tareas.

Algoritmos

Los algoritmos DCOP se pueden clasificar de varias maneras: [ 3 ]

  • Completitud : algoritmos de búsqueda completa que encuentran la solución óptima, frente a algoritmos de búsqueda local que encuentran un óptimo local .
  • Estrategia de búsqueda : búsqueda primero el mejor o búsqueda en profundidad con ramificación y acotación;
  • Sincronización entre agentes: síncrona o asíncrona;
  • Comunicación entre agentes: punto a punto con los vecinos en el grafo de restricciones, o difusión;
  • Topología de comunicación : cadena o árbol.

ADOPT, por ejemplo, utiliza la búsqueda primero en amplitud, la sincronización asíncrona, la comunicación punto a punto entre agentes vecinos en el grafo de restricciones y un árbol de restricciones como topología de comunicación principal.

También existen híbridos de estos algoritmos DCOP. BnB-Adopt, [ 3 ] por ejemplo, cambia la estrategia de búsqueda de Adopt de búsqueda primero en amplitud a búsqueda de ramificación y acotación en profundidad.

DCOP asimétrico

Un DCOP asimétrico es una extensión del DCOP en la que el costo de cada restricción puede ser diferente para diferentes agentes. Algunos ejemplos de aplicaciones son: [ 13 ]

  • Programación de eventos : los agentes que asisten al mismo evento pueden obtener valores diferentes del mismo.
  • Red inteligente : el aumento del precio de la electricidad en horas punta puede deberse a diferentes factores.

Una forma de representar un ADCOP es representar las restricciones como funciones: Fdo:D1××DkRk{\displaystyle f_{C}:D_{1}\times \dots \times D_{k}\to \mathbb {R} ^{k}}

Aquí, para cada restricción no hay un único costo, sino un vector de costos, uno por cada agente involucrado en la restricción. El vector de costos tiene una longitud k si cada variable pertenece a un agente diferente; si dos o más variables pertenecen al mismo agente, el vector de costos es más corto: hay un único costo para cada agente involucrado , no para cada variable.

Enfoques para resolver un problema ADCOP

Una forma sencilla de resolver un ADCOP es reemplazar cada restricción.Fdo:D1××DkRk{\displaystyle f_{C}:D_{1}\times \cdots \times D_{k}\to \mathbb {R} ^{k}}con una restricciónFdo:D1××DkR{\displaystyle f_{C}':D_{1}\times \cdots \times D_{k}\to \mathbb {R} }, que es igual a la suma de las funcionesFdo1++Fdok{\displaystyle f_{C}^{1}+\cdots +f_{C}^{k}}Sin embargo, esta solución requiere que los agentes revelen sus funciones de costo. A menudo, esto no es deseable debido a consideraciones de privacidad. [ 14 ] [ 15 ] [ 16 ]

Otro enfoque se denomina Eventos Privados como Variables (PEAV). [ 17 ] En este enfoque, cada variable posee, además de sus propias variables, también "variables espejo" de todas las variables que poseen sus vecinos en la red de restricciones. Existen restricciones adicionales (con un coste infinito) que garantizan que las variables espejo sean iguales a las variables originales. La desventaja de este método es que el número de variables y restricciones es mucho mayor que el original, lo que conlleva un mayor tiempo de ejecución.

Un tercer enfoque consiste en adaptar los algoritmos existentes, desarrollados para DCOP, al marco ADCOP. Esto se ha hecho tanto para algoritmos de búsqueda completa como para algoritmos de búsqueda local. [ 13 ]

Comparación con juegos de estrategia

La estructura de un problema ADCOP es similar al concepto de juego simultáneo de la teoría de juegos . En ambos casos, hay agentes que controlan variables (en la teoría de juegos, las variables son las posibles acciones o estrategias de los agentes). En ambos casos, cada elección de variables por parte de los diferentes agentes resulta en una recompensa diferente para cada agente. Sin embargo, existe una diferencia fundamental: [ 13 ]

  • En un juego simultáneo, los agentes son egoístas: cada uno busca maximizar su propia utilidad (o minimizar su propio coste). Por lo tanto, el mejor resultado posible en este contexto es un equilibrio , una situación en la que ningún agente puede aumentar unilateralmente su propio beneficio.
  • En un problema ADCOP, los agentes se consideran cooperativos: actúan según el protocolo incluso si esto disminuye su propia utilidad. Por lo tanto, el objetivo es más complejo: maximizar la suma de utilidades (o minimizar la suma de costos). Un equilibrio de Nash corresponde aproximadamente a un óptimo local de este problema, mientras que nosotros buscamos un óptimo global.

Cooperación parcial

Existen algunos modelos intermedios en los que los agentes son parcialmente cooperativos : están dispuestos a disminuir su utilidad para contribuir al objetivo global, pero solo si su propio costo no es demasiado elevado. Un ejemplo de agentes parcialmente cooperativos son los empleados de una empresa. Por un lado, cada empleado busca maximizar su propia utilidad; por otro lado, también desean contribuir al éxito de la empresa. Por lo tanto, están dispuestos a ayudar a otros o realizar otras tareas que consumen tiempo y que benefician a la empresa, siempre que no les suponga una carga excesiva. Algunos modelos para agentes parcialmente cooperativos son: [ 18 ]

  • Beneficio personal garantizado : los agentes aceptan actuar por el bien común si su propia utilidad es al menos tan alta como en el escenario no cooperativo (es decir, el resultado final debe ser una mejora de Pareto del estado original).
  • Cooperación Lambda : hay un parámetroλ[0,1]{\displaystyle \lambda \in [0,1]}Los agentes aceptan actuar por el bien común si su propia utilidad es al menos tan alta como(1λ){\displaystyle (1-\lambda )}veces su utilidad no cooperativa.

La resolución de este tipo de ADCOP de cooperación parcial requiere adaptaciones de los algoritmos ADCOP. [ 18 ]

Véase también

Notas y referencias

  1. "×{\displaystyle \times }" o "×" denota el producto cartesiano .
  2. Netzer, Arnon; Meisels, Amnon; Zivan, Roie (1 de marzo de 2016). "Minimización de la envidia distribuida para la asignación de recursos" . Autonomous Agents and Multi-Agent Systems . 30 (2): 364– 402. doi : 10.1007/s10458-015-9291-7 . ISSN 1387-2532 . S2CID 13834856 .  
  3. 1 2 Yeoh, William; Felner, Ariel; Koenig, Sven (2008), "BnB-ADOPT: Un algoritmo DCOP asíncrono de ramificación y acotación" , Actas de la Séptima Conferencia Internacional Conjunta sobre Agentes Autónomos y Sistemas Multiagente , vol. 2, Ifaamas, pp. 591–8 , ISBN   9780981738116
  4. Hirayama, Katsutoshi; Yokoo, Makoto (1997). "Problema de satisfacción de restricciones parciales distribuidas" . En Smolka, Gert (ed.). Principios y práctica de la programación con restricciones-CP97 . Lecture Notes in Computer Science. Vol. 1330. Berlín, Heidelberg: Springer. pp. 222–236 . doi : 10.1007/BFb0017442 . ISBN   978-3-540-69642-1.
  5. La versión original publicada de Adopt no estaba informada, véase Modi, Pragnesh Jay; Shen, Wei-Min; Tambe, Milind; Yokoo, Makoto (2003), "Un método completo asíncrono para la optimización de restricciones distribuidas" (PDF) , Actas de la segunda conferencia conjunta internacional sobre agentes autónomos y sistemas multiagente , ACM Press, págs. 161–168 , archivado del original (PDF) el 4 de noviembre de 2019 , recuperado el 7 de septiembre de 2009. La versión original de Adopt se amplió posteriormente para incorporar información, es decir, para utilizar estimaciones de los costos de la solución para enfocar su búsqueda y ejecutarse más rápido. Véase Ali, Syed; Koenig, Sven; Tambe, Milind (2005), "Técnicas de preprocesamiento para acelerar el algoritmo DCOP ADOPT" (PDF) , Actas de la cuarta conferencia internacional conjunta sobre agentes autónomos y sistemas multiagente , ACM Press, pp. 1041–8 , doi : 10.1145/1082473.1082631 , ISBN  1595930930, S2CID 10882572 , archivado del original (PDF) el 07-07-2010 , recuperado el 07-09-2009 Esta extensión de Adopt se utiliza normalmente como implementación de referencia de Adopt.
  6. Matsui, Toshihiro; Matsuo, Hiroshi; Iwata, Akira (febrero de 2005), "Método eficiente para algoritmo de optimización de restricciones distribuidas asíncronas" (PDF) , Actas de Inteligencia Artificial y Aplicaciones , págs. 727–732 , CiteSeerX 10.1.1.408.7230  
  7. Mailler, Roger; Lesser, Victor (2004). «Resolución de problemas de optimización con restricciones distribuidas mediante mediación cooperativa» . Actas de la Tercera Conferencia Internacional Conjunta sobre Agentes Autónomos y Sistemas Multiagente . IEEE Computer Society . págs. 438–445 . ISBN  1581138644.
  8. Grinshpoun, Tal; Zazon, Moshe; Binshtok, Maxim; Meisels, Amnon (2007), " Problema de terminación del algoritmo APO" (PDF) , Actas del Octavo Taller Internacional sobre Razonamiento de Restricciones Distribuidas , págs. 117–124 
  9. Petcu, Adrian; Faltings, Boi (agosto de 2005), "DPOP: un método escalable para la optimización de restricciones multiagente" , Actas de la 19.ª Conferencia Internacional Conjunta sobre Inteligencia Artificial, IJCAI 2005, Edimburgo, Escocia, págs. 266-271
  10. Chechetka, Anton; Sycara, Katia (mayo de 2006), "Búsqueda de ramificación y acotación sin compromiso para la optimización de restricciones distribuidas" (PDF) , Actas de la Quinta Conferencia Internacional Conjunta sobre Agentes Autónomos y Sistemas Multiagente , págs. 1427–9 , doi : 10.1145/1160633.1160900 , ISBN  1595933034, S2CID 43918609 
  11. Chechetka, Anton; Sycara, Katia (marzo de 2006), "Un algoritmo para cualquier espacio para la optimización de restricciones distribuidas" (PDF) , Actas del Simposio de Primavera de la AAAI sobre Gestión Distribuida de Planes y Programaciones
  12. Duffy, KR; Leith, DJ (agosto de 2013), "Satisfacción de restricciones descentralizada", IEEE/ACM Transactions on Networking , 21 (4): 1298– 1308, arXiv : 1103.3240 , Bibcode : 2013ITNet..21.1298D , doi : 10.1109/TNET.2012.2222923 , S2CID 11504393 
  13. 1 2 3 Grinshpoun, T.; Grubshtein, A.; Zivan, R.; Netzer, A.; Meisels, A. (2013-07-30). "Problemas de optimización de restricciones distribuidas asimétricas" . Journal of Artificial Intelligence Research . 47 : 613–647 . arXiv : 1402.0587 . doi : 10.1613/jair.3945 . ISSN 1076-9757 . 
  14. Greenstadt, Rachel; Pearce, Jonathan P.; Tambe, Milind (16 de julio de 2006). «Análisis de la pérdida de privacidad en la optimización de restricciones distribuidas» . Actas de la 21.ª Conferencia Nacional sobre Inteligencia Artificial - Volumen 1. AAAI'06. Boston: AAAI Press: 647–653 . ISBN 978-1-57735-281-5.
  15. Maheswaran, Rajiv T.; Pearce, Jonathan P.; Bowring, Emma; Varakantham, Pradeep; Tambe, Milind (2006-07-01). "Pérdida de privacidad en el razonamiento de restricciones distribuidas: un marco cuantitativo para el análisis y sus aplicaciones" . Autonomous Agents and Multi-Agent Systems . 13 (1): 27– 60. doi : 10.1007/s10458-006-5951-y . ISSN 1573-7454 . S2CID 16962945 .  
  16. Yokoo, Makoto; Suzuki, Koutarou; Hirayama, Katsutoshi (2002). "Satisfacción segura de restricciones distribuidas: alcanzar un acuerdo sin revelar información privada" . En Van Hentenryck, Pascal (ed.). Principios y práctica de la programación con restricciones – CP 2002. Lecture Notes in Computer Science. Vol. 2470. Berlín, Heidelberg: Springer. pp. 387–401 . doi : 10.1007/3-540-46135-3_26 . ISBN   978-3-540-46135-7.
  17. Rajiv T. Maheswaran; Milind Tambe; Emma Bowring; Jonathan P. Pearce; Pradeep Varakantham (2004). "Llevando DCOP al mundo real: soluciones completas y eficientes para la planificación distribuida de múltiples eventos" . computer.org . Consultado el 12 de abril de 2021 .
  18. 1 2 Zivan, Roie; Grubshtein, Alon; Friedman, Michal; Meisels, Amnon (2012-06-04). "Cooperación parcial en la búsqueda multiagente" . Actas de la 11.ª Conferencia Internacional sobre Agentes Autónomos y Sistemas Multiagente - Volumen 3. AAMAS '12. 3. Valencia, España: Fundación Internacional para Agentes Autónomos y Sistemas Multiagente: 1267–1268 . ISBN 978-0-9817381-3-0.

Libros y encuestas

  • Fioretto, Ferdinando; Pontelli, Enrico; Yeoh, William (2018), "Problemas y aplicaciones de optimización con restricciones distribuidas: una revisión" , Journal of Artificial Intelligence Research , 61 : 623–698 , arXiv : 1602.06347 , doi : 10.1613/jair.5565 , S2CID 4503761 
  • Faltings, Boi (2006), "Programación con restricciones distribuidas" , en Walsh, Toby (ed.), Manual de programación con restricciones , Elsevier , ISBN 978-0-444-52726-4Un capítulo de un libro editado.
  • Meisels, Amnon (2008), Búsqueda distribuida mediante agentes restringidos , Springer , ISBN 978-1-84800-040-7
  • Shoham, Yoav; Leyton-Brown, Kevin (2009), Sistemas multiagente: Fundamentos algorítmicos, de teoría de juegos y lógicos , Nueva York: Cambridge University Press , ISBN 978-0-521-89943-7Consulte los capítulos 1 y 2; disponibles para descargar gratuitamente en línea .
  • Yokoo, Makoto (2001), Satisfacción de restricciones distribuidas: Fundamentos de la cooperación en sistemas multiagente , Springer , ISBN 978-3-540-67596-9
  • Yokoo, M. Hirayama K. (2000), "Algoritmos para la satisfacción de restricciones distribuidas: una revisión", Autonomous Agents and Multi-Agent Systems , 3 (2): 185– 207, doi : 10.1023/A:1010078712316 , S2CID 2139298