读书笔记 (二) ———Fundamentals of Multiagent Systems with NetLogo Examples by Prof. Jose M Vidal

时间:2022-12-11 19:13:24

chapter 2 分布式约束
1 分布式约束满足
1.1 过滤算法
1.2 基于归结的调和算法 consistency
1.3 异步回溯
1.4 异步弱承诺?
1.5 分布式突破?
2 分布式受限优化
2.1 Adopt
2.2 OptAPO

多智能体系统(MAS)为一组自主智能体具有局部认知,通过彼此协调完成全局目标。MAS目标在于每个个体根据局部信息调整局部状态保证系统的整体状态效能最大。
每个agent只能局部通信,并且各自的行为取决于其他agent的行为,如分布式传感器,儿童排队等。众多多智能体问题可以被归结为分布式受限问题。

这一章研究分布式搜索。

1 分布式约束
约束满足问题(CSP):给定一组变量x1,x2,...,xn,分别属于定义域D1,D2,...Dn。一组布尔限制P满足pk(xk1,xk2,...,xkj)->{0,1},找到一组变量的分配保证满足所有布尔限制条件为真。
一个全局的算法:深搜

分布式约束满足问题(DCSP): 假定每个agent负责CSP中的一个变量,每个agent负责寻找其他agent的值,通过通信获得其他人的值
一般DCSP中,
a) agent只能和邻居(共享同一约束的agent)通信,个别算法要求完全通信
b) agent知道所有与其相关的约束。

1.1 过滤算法
每个agent与邻居交换信息,如果成功消除其取值范围中的一个或多个值,通知邻居他的新值域。
过滤算法一定可以停止,因为只有有限个值,每消除一个就会发布一个信息。但是FA不一定会给出结果,可能会进入一个谁也无法消除的尴尬境地,也就无法得到结果。
(个人理解就是可以做初级数独,做不了高级数独或错误的数独)

1.2 基于超归结的调和算法
k-调和: 给定任意k-1个满足所有约束的变量实例,可以找到任意第k个变量实例保证所有k个变量满足约束。(k-1个确定好后,剩余的任选一个都可以找到值满足约束)
强k-调和: 若其是j-调和,j<=k。

超归结规则
union(A1,A2,A3,...Am)
~(intersection(A1,A11,A12,...))
.
.
.
~(intersection(Am,Am1,Am2,...))
_______________________________________
~(intersection(A11,...,A21,...Am1,...))

A1,A2等可以代表agent可取的状态 A11,A12代表约束 归结后的约束成为nogood

将过滤算法中两两比较算法的方式转换为交换规则,通过推理得到新的nogood

该算法的缺点在于慢慢慢,缺少nogood分析顺序的指导,同时该问题的停止条件十分缓慢,需要等待所有智能体都无法再生成新的nogood

1.3 异步回溯 ABT
回溯算法: 深度优先,遇到冲突后退回一步,更正后继续执行。 (不断递归)
ABT是集中深搜算法的分布式异步版本(yokoo 2000)。ABT对深搜本身进行了一定修正,保证搜索顺序是经过适当调整的,有利于减少回溯的次数。具体来说,通常希望对树顶元素的变量取值为包含在多个约束条件内的值。

每个agent被分配一个全局优先序列,分别负责一个局部变量xi,同时不断监控邻居的变量(local-view)。算法初始邻居定义为共享相同约束条件的agents,但会随着算法进行不断增加。agent通过交互的方式获得邻居的消息。
ABT中各agent只进行三类消息的交互:
a) HANDLE-OK?(J,xi) 询问agent J选择值xj是否冲突
b) HANDLE-NOGOOD (j,nogood) j报告无法找到满足约束的值,受到nogood限制
c) HANDLE-ADD-NEIGHBOR (j) 要求增加j为邻居

算法:。。。。。。。

ABT算法完整:ABT或者给出存在的解,或者无解时给出适当的信息。

缺点:
a) 优先级固定后,下等agent干活多,上等干活少。
b) 上层的取错值后导致下层穷举才可以。

两个变种:
a) 生成nogood的时候,只生成可能得到结果的nogood
b) kernel ABT,无法改变邻居的情况

1.4 异步弱承诺?

AWC算法即ABT的一个变种,通过不断修改优先级顺序,实现计算任务的平均分配。

1.5 分布式突破?

采用登山算法 hill-climbing 初始随机分配给各agent值,随后不断降低约束的违反。
分布式的hill-climbing要求各agent并行更改值,同时向邻居发送新值。但会出现局部极小值的情况,类似nash均衡,无法通过修改单个agent的值进行进一步优化。当出现极小值的情况时,需要各agent广播这一情况,同时还要判断所有agent都处于这种情况,解决这一问题需要更复杂的算法与大量的通信。

分布式突破(distributed breakout)绕过这一方法,通过辨识半-局部极小值(quasi-local minimum)的情况。
定义:agent xi处于quasi-local minimum情况意味着他当前违反了某些限制条件,同时他与他的邻居无法通过修正使得系统总体代价函数更低。
意思就是某个个体发现当前的状态不满足要求,同时自己与邻居都无能为力。

quasi-local minimum ~=> local minimum
local minimum => quasi-local minimum for1 agent at least

分布式突破不是完整算法,可能会卡在某个极小点无法进一步执行,无法找到解

2 分布式受限优化 COP NP-complete

与约束满足问题类似,但是限制条件返回值不是“满足”或“不满足”,而是一个实数。目标在于降低约束函数的返回值,使得违反约束的值最低。

定义: (受限优化问题 COP) 给定一组属于定义域D1,D2,...Dn的变量x1,x2,...,xn以及一组约束P,pk(xk1,xk2,...,xkj) -> R, 寻找所有变量的分配使得约束函数值之和最小

最主要的方法是分枝定界的方法(branch and bound)

定义:(DCOP) agent各负责一个变量,通过局部通信找到使得值最小的方法。

2.1 Adopt

将智能体根据受约束的关系形成自上而下类似树的图结构,但并不是树,只是要求每个节点都只有一个parent节点多个son节点。初始给定各节点初值,以及对代价函数上下限的估计,估计包括该节点在内的所有子节点的代价之和。
然后主要循环如下三步
a) 每个节点向子节点发布自身状态。子节点根据收到parent的状态决定自己的局部最优值(使得局部代价最小)。
b) 各子节点向父节点回馈自己估计的代价上下界限,下届好估计,但上届不好判断。
c) 所有节点根据收到的回馈进行判断,如果有的上界不等于下届,需要进行调整回溯

真正的Adopt算法还有Threshold来约束回溯,比文中所述要麻烦许多。

2.2 OptAPO

就是当agent之间出现冲突的时候,将冲突的agent放到一起,并推举一个协调官(mediator)。协调官负责根据所有冲突的人进行计算,找到一个你好我好大家好的办法。
最坏的情况就是全局集中搜索。

读书笔记 (二) ———Fundamentals of Multiagent Systems with NetLogo Examples by Prof. Jose M Vidal的更多相关文章

  1. 读书笔记 (一) ———Fundamentals of Multiagent Systems with NetLogo Examples by Prof&period; Jose M Vidal

    在网上发现Prof. Jose M Vidal用NetLogo仿真Multi-agent system的视频,随后下载他的著作Fundamentals of Multiagent Systems wi ...

  2. 《你必须知道的&period;NET》读书笔记二:小OO有大原则

    此篇已收录至<你必须知道的.Net>读书笔记目录贴,点击访问该目录可以获取更多内容. 一.单一职责原则 (1)核心思想:一个类最好只做一件事,只有一个引起它变化的原因 (2)常用模式:Fa ...

  3. spring揭秘 读书笔记 二 BeanFactory的对象注册与依赖绑定

    本文是王福强所著<<spring揭秘>>一书的读书笔记 我们前面就说过,Spring的IoC容器时一个IoC Service Provider,而且IoC Service Pr ...

  4. ES6读书笔记&lpar;二&rpar;

    前言 前段时间整理了ES6的读书笔记:<ES6读书笔记(一)>,现在为第二篇,本篇内容包括: 一.数组扩展 二.对象扩展 三.函数扩展 四.Set和Map数据结构 五.Reflect 本文 ...

  5. spring揭秘 读书笔记 二 BeanFactory的对象注冊与依赖绑定

    本文是王福强所著<<spring揭秘>>一书的读书笔记 我们前面就说过,Spring的IoC容器时一个IoC Service Provider,并且IoC Service Pr ...

  6. 【记】《&period;net之美》之读书笔记&lpar;二&rpar; C&num;中的泛型

    前言 上一篇读书笔记,很多小伙伴说这本书很不错,所以趁着国庆假期,继续我的读书之旅,来跟随书中作者一起温习并掌握第二章的内容吧. 一.理解泛型 1.为什么要使用泛型?-----通过使用泛型,可以极大地 ...

  7. Mastering Web Application Development with AngularJS 读书笔记&lpar;二&rpar;

    第一章笔记 (二) 一.scopes的层级和事件系统(the eventing system) 在层级中管理的scopes可以被用做事件总线.AngularJS 允许我们去传播已经命名的事件用一种有效 ...

  8. how tomcat works 读书笔记&lpar;二&rpar;----------一个简单的servlet容器

    app1 (建议读者在看本章之前,先看how tomcat works 读书笔记(一)----------一个简单的web服务器 http://blog.csdn.net/dlf123321/arti ...

  9. java读书笔记二

    这是我的一些读书笔记: 我研究了一下面向对象: 面向对象符合人类看待事物的一般规律,对象的方法的实现细节是包装的,只有对象方法的实现者了解细节 我觉得面向过程是由过程.步骤.函数组成,过程是核心,面向 ...

随机推荐

  1. ES5和ES6中对于继承的实现方法

    在ES5继承的实现非常有趣的,由于没有传统面向对象类的概念,Javascript利用原型链的特性来实现继承,这其中有很多的属性指向和需要注意的地方. 原型链的特点和实现已经在之前的一篇整理说过了,就是 ...

  2. Python之re模块 —— 正则表达式操作

    这个模块提供了与 Perl 相似l的正则表达式匹配操作.Unicode字符串也同样适用. 正则表达式使用反斜杠" \ "来代表特殊形式或用作转义字符,这里跟Python的语法冲突, ...

  3. HDOJ&sol;HDU 1015 Safecracker&lpar;深搜&rpar;

    Problem Description === Op tech briefing, 2002/11/02 06:42 CST === "The item is locked in a Kle ...

  4. 如果nginx 中worker&lowbar;connections 值设置是1024,worker&lowbar;processes 值设置是4,按反向代理模式下最大连接数的理论计算公式: 最大连接数 &equals; worker&lowbar;processes &ast; worker&lowbar;connections&sol;4

    如果nginx 中worker_connections 值设置是1024,worker_processes 值设置是4,按反向代理模式下最大连接数的理论计算公式: 最大连接数 = worker_pro ...

  5. 基于FPGA的均值滤波算法的实现

    前面实现了基于FPGA的彩色图像转灰度处理,减小了图像的体积,但是其中还是存在许多噪声,会影响图像的边缘检测,所以这一篇就要消除这些噪声,基于灰度图像进行图像的滤波处理,为图像的边缘检测做好夯实基础. ...

  6. TargetType Mismatch

    TargetType Mismatch 环境:windowsphone 8,silerlight toolkit, 页面报TargeType Mismatch错误或者 length 0,是因为Syst ...

  7. 说说PC站和移动站的移动适配关系优化

    曾经写过关于手机网站的SEO优化方向,但是多数是注重在移动网站代码方面,而把移动和PC的重点关系优化给忽略了,这方面也是很多做SEO优化站长给忽略的一些事情. 2015年11月6日,在百度站长平台可以 ...

  8. 解决tomcat报错javax&period;imageio&period;IIOException&colon; Can&&num;39&semi;t create output stream&excl;

    启动tomcat catalina.out报错如下,登陆的时候无法显示验证码 2017-06-09 11:23:06,628 DEBUG org.springframework.web.servlet ...

  9. js常用事件

    为了便于使读者更好地运用js事件,就把常用事件大致分为以下几种: a. 表单元素事件,在表单元素中生效 onfocus  ------获取焦点 onblur -------失去焦点 onsubmit ...

  10. cmd命令记录

    一.查看端口号的使用情况 参考经验:https://jingyan.baidu.com/article/3c48dd34491d47e10be358b8.html 1.netstat -ano,列出所 ...