摘要: package aco.ant; import java.util.ArrayList; import sys.Settings; import util.PseudoRandom; import aco.ACO; public class Ant4ACS extends Ant4AS { /** 进行Exploitation的概率 */ protected d... 阅读全文
posted @ 2016-07-26 18:39 victorchew 阅读(282) 评论(0) 推荐(0) 编辑
摘要: package aco.ant; import java.util.ArrayList; import util.RouletteWheel;//引入轮盘类 import aco.ACO;//引入蚁群类 /** * The AS Ant Class * * @author Thiago Nascimento * @since 2014-07-27 * @version 1.0 ... 阅读全文
posted @ 2016-07-26 17:36 victorchew 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 1 public abstract class Ant extends Observable implements Runnable { 2 3 public static int ANT_ID = 1; // ANT_ID是蚂蚁的身份标识起始位,设置为1 4 5 /** Importance of trail */ 6 public st... 阅读全文
posted @ 2016-07-26 16:26 victorchew 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 信息素的局部更新策略 每只蚂蚁在构造出一条从起点到终点的路径后,蚁群算法还要求根据路径的总长度来更新这条路径所包含的每条边上信息素的浓度(在旅行商问题中每座城市是图中的一个节点,城市两两间有一条边相连)。下面给出了蚁群算法更新信息素的公式: . 上面的第一个公式体现了信息素的更新值的计算,其中,Ck 阅读全文
posted @ 2016-07-26 14:35 victorchew 阅读(15762) 评论(0) 推荐(0) 编辑
摘要: 群算法是Marco Dorigo在1992年提出的一种优化算法,该算法受到蚂蚁搜索食物时对路径的选择策略的启示。蚁群算法作为群体智能算法的一种利用分布式的种群搜索策略来寻找目标函数的最优解。蚁群算法与其他优化算法相比较的一个明显优势是蚁群算法能够适应动态变化的环境,这个特点使它特别适合解决像网络路由 阅读全文
posted @ 2016-07-26 06:52 victorchew 阅读(1231) 评论(0) 推荐(0) 编辑
摘要: 蚁群算法主要可以分为以下几个步骤:首先,蚁群中的每只蚂蚁都根据地面上信息素浓度的大小找出一条从原点通向终点的遍历所有城市一次的路径(构造路径);然后每只蚂蚁沿着自己刚刚找到的路径回溯,在路径经过的各个component(在旅行商问题中component指的是连接两座城市的那条边)上根据找到路径的整体 阅读全文
posted @ 2016-07-25 20:45 victorchew 阅读(1731) 评论(0) 推荐(0) 编辑
摘要: """ pop是种群,种群中的每个个体的形式是,(makespan, 染色体)""" pop = [(ComputeStartTimes(g, I)[-1], g) for g in InitPopulation(ps, I)] 2 for it in xrange(1, mit+1):""" mit是迭代次数""" 3 # Random ordering of t... 阅读全文
posted @ 2016-07-24 19:35 victorchew 阅读(746) 评论(0) 推荐(0) 编辑
摘要: S中存放的是每道工序开始加工的时间,它的形式为:[[a,b,c],[d,e,f],[g,h,i]],每个子list代表一个工件的信息,子list中的字母代表这个工件下面每道工序开始加工的时间。 假设我们知道每道工序开始加工的时间,同时又知道每道工序所需要的机器号,我们就可以得到每台机器上工序的加工顺 阅读全文
posted @ 2016-07-24 19:01 victorchew 阅读(790) 评论(0) 推荐(0) 编辑
摘要: 解码操作是整个遗传算法最重要的一步,在这步里面我们利用配置文件中的信息将染色体解码成一个有向无环图。 在介绍解码操作之前我们先来看一下配置文件,在part1绪论中我们已经介绍了一个车间调度问题的基本信息可以用一个表格来表示: 表5.1 在编程时我们要把这个表格用一个配置文件来存储,这个配置文件可以是 阅读全文
posted @ 2016-07-23 10:04 victorchew 阅读(1089) 评论(0) 推荐(0) 编辑
摘要: 下面,我们以车间调度为例来谈谈遗传算法中的另一个重要操作变异。变异操作通常发生在交叉操作之后,它的操作对象是交叉得到的新染色体。在本文中我们通过随机交换染色体的两个位置上的值来得到变异后的染色体,变异操作的代码如下: 变异操作的图示如下: 变异前的染色体: ABCABCABC 随机选取两个位置:AB 阅读全文
posted @ 2016-07-17 13:33 victorchew 阅读(1031) 评论(0) 推荐(0) 编辑