3.1 遗传算法的基本原理
遗传算法是一类借鉴生物界自然选择和自然遗传机制的随机搜索算法,它由美国Holland教授首先在《自然结合人工智能系统的适应性》一书中提出,是利用生物进化的特性所发展的方法,由一群群体(Population)以随机配对产生下一代,利用交叉(Crossover)及变异(Mutation)等操作进行基因的进化,并经由选择(Selection)机能决定下一代相对的个数,使适应度越大的解存活的机会越大;也就是“适者生存”的原则来选择随机的值域,最后留下的就是最优解。
3.1.1 遗传算法的特点
同传统的寻优算法相比,遗传算法具有以下特点:
1、算法对问题参数的代码集起作用,而不是对参数本身起作用。遗传算法处理的对象是染色体,因而要求把所要优化问题的基本参数转化成一定长度的有限符号的染色体。
2、遗传算法是从初始群体开始搜索的,而不是从单点开始搜索的。许多传统优化方法都是从搜索空间的单点出发,通过某些转换规则确定下一点。这种点到点的搜索方法在多峰值优化问题中,容易误入局部最优解。遗传算法是以点集开始的寻优过程,初始群体是随机地在搜索空间中选取的,覆盖面大,利于全局寻优。
3、遗传算法在求解时只使用适应度函数的信息,而不使用导数及其他辅助信息。对于不同类型的优化问题,传统方法需要使用不同形式的辅助信息,没有一种优化方法能适应各类问题的要求。遗传算法在优化过程中,放弃使用这些辅助信息,具有广泛适应性。
4、算法具有极强的容错能力。遗传算法的初始种群本身就带有大量与最优解甚远的信息,通过选择、交叉、变异操作能迅速排除与最优解相差极大的染色体。
5、算法具有隐含的并行性。Goldeberg对GA的处理并行性进行了合理的分析,指出了GA对模式的处理效率是,Holland称之为GA的“隐式并行性”[5]。
6、遗传算法中的选择、交叉、和变异都是随机操作,而不是确定的精确规则。复制体现了向最优解的逼近,交叉体现了最优解的产生,变异体现了全局最优解的覆盖。
与传统方法相比,遗传算法的优越性主要表现在:首先,在遗传算子的作用下,遗传算法具有很强的搜索能力,能以很大的概率找到问题的全局最优解:其次,由于它固有的并行性,能有效地处理大规模的优化问题。
3.1.2 遗传算法的基本步骤和处理流程
遗传算法的主要处理步骤是:首先构造满足约束条件的染色体。编码的目的主要是使优化问题解的表现形式适合于遗传算法中的遗传运算。实际问题的染色体有多种编码方式,染色体编码方式的选取应尽可能的符合问题约束,否则将影响计算效率。第二是随机产生初始群体。初始群体群体的染色体数量应适当选择。第三是是适应度函数的构造和应用,计算每个染色体适应度。适应度函数基本上依据问题的目标函数而定,是反映染色体优劣的唯一指标,遗传算法就是要寻得适应度最大的染色体。当适应度函数确定以后,复制是以适应度函数值的大小决定的概率分布来确定哪些染色体适应生存,哪些被淘汰。第四是染色体的交叉。父代的遗传基因的结合是通过父代染色体之间的交叉并到达下一代个体的。子代的产生是一个生殖过程,它产生了一个新解;最后是变异,新解产生过程中可能产生基因变异,变异使某些解的编码发生变化,使解具有更大的遍历性。
试验用的数据如下:
表4-1 需求点的需求信息
任务i |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
需求量g |
2 |
1.5 |
4.5 |
3 |
1.5 |
4 |
2.5 |
3 |
装卸时间T |
1 |
2 |
1 |
3 |
2 |
2.5 |
3 |
0.8 |
[ET, LT] |
[1,4] |
[4,6] |
[1,2] |
[4,7] |
[3,5.5] |
[2,5] |
[5,8] |
[1.5,4] |
表 4-2需求点和物流配送中心任意两点间的位置距离(单位km)
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
0 |
0 |
40 |
60 |
75 |
90 |
200 |
100 |
160 |
80 |
1 |
40 |
0 |
65 |
40 |
100 |
50 |
75 |
110 |
100 |
2 |
60 |
65 |
0 |
75 |
100 |
100 |
75 |
75 |
75 |
3 |
75 |
40 |
75 |
0 |
100 |
50 |
90 |
90 |
150 |
4 |
90 |
100 |
100 |
100 |
0 |
100 |
75 |
75 |
100 |
5 |
200 |
50 |
100 |
50 |
100 |
0 |
70 |
90 |
75 |
6 |
100 |
75 |
75 |
90 |
75 |
70 |
0 |
70 |
100 |
7 |
160 |
110 |
75 |
90 |
75 |
90 |
70 |
0 |
100 |
8 |
80 |
100 |
75 |
150 |
100 |
75 |
100 |
100 |
0 |
货物的装载系数 (VehicleRate)= 0.95;
车辆的载重量 (VehicleLoad)= 8(吨);
车辆的行使速度 (speed) =50(km/h);
种群执行遗传操作的代数(maxgen) =500;
车辆早到的惩罚系数(earlity)=3;
车辆晚到的惩罚系数(late)=6;
遗传算法中的主要参数:染色体长度、种群规模n、交叉率变异率,等,对GA性能影响很大。为了选择合适的种群规模n、交叉率、变异率,实验时采用第3章3.4节介绍的参数选择方法对控制参数:种群规模n、交叉率、变异率。种群规模n、交叉率和变异率对适应度的影响