SCO算法是一种基于人类社会认知中的观察学习行为的简单优化算法模型, 它可被纳入多主体优化系统 (Multiagent Optimization System, MAOS). 也可视为群集智能 (Swarm intelligence, SI) 的一种.
在SCO中, 由多个主体(agent)进行求解,而它们通过环境(Environment)进行交互。其中每个主体有私有记忆(memory), 而环境中也有一个和主体们独立的社会共享库(Library)。在每个周期中,每个主体使用他的私有记忆以及参考社会共享库,通过搜索得到的新知识将会被主体用来更新它的私有记忆,并提交已有知识给环境用来最后更新社会共享库。所以主体间的交互实际上是隐式的通过对社会共享库的使用和影响其更新而实现。
以下可以比较一下SCO和几种主要的基于群体的优化算法的异同点。这些算法包括遗传算法(Genetic Algorithm, GA), 蚁群算法 (Ant Colony Optimization, ACO), 粒子群优化 (Particle Swarm Optimization, PSO)。
和GA所不同的是,每个主体长期存在于所有周期中,而不会被新个体替换。也就是,SCO模拟多个体的学习周期,而GA模拟群体的演化周期。
和ACO所不同的是,每个主体拥有私有记忆,这个记忆长期存在于所有周期中。在这点上,SCO和PSO类似。私有记忆保证了个体学习(individual learning) 能力,有助于群体中涌现新知识并维护群体知识的差异性。
和PSO所不同的是,社会共享库中的知识和主体中的知识相互独立。首先,拿走某个主体,不会影响社会共享库。在这点上,SCO和ACO类似。减少个体数目不会严重影响算法性能,SCO甚至能在只有一个个体时得到比较稳定的搜索结果。其次,拿走库里面的部分信息,不会影响到主体本身。因此也可以通过调整社会共享库来调节算法性能。
| 相关论文 |
|---|
| 相关软件 |
|---|
| name | type* | description |
|---|---|---|
| SCO_NOP | SRC | (JAVA) 社会认知优化算法 (SCO), 用于求解(带约束)数值优化问题 |