基本遗传算法及其在函数优化中的作用

基本遗传算法及其在函数优化中的作用
基本遗传算法及其在函数优化中的作用

《人工智能及其应用大作业(一)》

题目:基本遗传算法及其在函数优化中的作用

学号:

姓名:

基本遗传算法及其在函数优化中的应用

摘要:

从遗传算法的编码、遗传算子等方面剖析了遗传算法求解无约束函数优化问题的一般步骤,并以一个实例说明遗传算法能有效地解决函数优化问题。本文利用基本遗传算法求解函数优化问题,选用f(x)=xsin(10πx)+2.0,取值范围在]2,1

[ 中,利用基本遗传算法求解两个函数的最优值,遗传算法每次100代,一共执行10次,根据运算结果分析得到最优解。

关键字:遗传算法选择交叉变异函数优化

1.前言

1.1基本概念

遗传算法(Genetic Algorithm)是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机化搜索方法。遗传算法是一种群体型操作,该操作以群体中的所有个体为对象。选择(Selection)、交叉(Crossover)和变异(Mutation)是遗传算法的3个主要操作算子,它们构成了所谓的遗传操作(genetic operation),使遗传算法具有了其它传统方法所没有的特性。

1.2 遗传算法的特点

其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则。

1.3遗传算法的应用

函数优化,组合优化,机器人智能控制,及组合图像处理和模式识别等。

2.基本遗传算法

2.1简单遗传算法的求解步骤

Step1:参数设置及种群初始化;

Step2:适应度评价;

Step3:选择操作;

Step4:交叉操作;

Step5:变异操作;

Step6:终止条件判断,若未达到终止条件,则转到Step3;

Step7:输出结果。

2.2停机准则

(1)完成了预先给定的进化代数则停止;

(2)群体中的最优个体在连续若干代没有改进或平均适应度在连续若干代基本没有改进时停止。

2.3基本遗传算法框图

3.实验与结果

本小节采用以下函数: f(x)=xsin(10πx)+2.0,x [-1,2] 3.1编码 表现型:x

基因型:二进制编码(串长取决于求解精度)

按编码原理:假设要求求解精度到6位小数,区间长度为2-(-1)=3,即需将区间分为

开始 Gen=0 编码

随机产生M 个初始个体 满足终止条件?

计算群体中各个体适应度 从左至右依次执行遗传算子

j = 0

j = 0

j = 0

根据适应度选择复制个体

选择两个交叉个体

选择个体变异点

执行变异

执行交叉

执行复制

将复制的个体添入新群体中

将交叉后的两个新个体添入新群体中

将变异后的个体添入新群体中

j = j+1

j = j+2 j = j+1 j = M? j = pc·M?

j = pm·L·M?

Gen=Gen+1

输出结果

终止

Y

N

Y Y

Y

N

N

N pc

pm

3/0.000001=3×106等份。

所以编码的二进制串长应为22位。

3.2产生初始种群

产生的方式:随机

产生的结果:长度为22的二进制串

产生的数量:种群的大小(规模),如30,50,…

1111010011100001011000

1100110011101010101110

1010100011110010000100

1011110010011100111001

0001100101001100000011

0000011010010000000000

...

3.3计算适应度

直接用目标函数作为适应度函数

①解码:将个体s转化为[-1,2]区间的实数:

s=<1000101110110101000111> →x=0.637197

②计算x的函数值(适应度):

f(x)=xsin(10πx)+2.0=2.586345

3.4遗传操作

选择:比例选择法;

交叉:单点交叉;

变异:小概率变异

3.5模拟结果

设置的参数:

种群大小80;交叉概率0.75;变异概率0.05;最大代数100。

运行结果如下表:

1 2 3 4 5 6 7 8 9 10

best_fit16.8503 16.8503 16.8454 16.8503 16.8461 16.8491 16.7952 16.8500 16.8120 16.8500 best_f 3.8503 3.8503 3.8454 3.8503 3.8461 3.8491 3.7952 3.8500 3.8120 3.8501 best_x 1.8006 1.8009 1.8038 1.8012 1.7979 1.7992 1.7903 1.8015 1.8000 1.810 由上表可以分析得出的最优解为x=1.8,最大值为3.85。

4.结论

遗传算法在适应度函数选择不当的情况下有可能收敛于局部最优,而不能达到全局最优。

选择的过程很重要,决定着最终结果和收敛速度等。

对于任何一个具体的优化问题,调节遗传算法的参数可能会有利于更好的更快的收敛,这些参数包括个体数目、交叉律和变异律。

遗传算法并不一定总是最好的优化策略,优化问题要具体情况具体分析。

参考文献:

(1)蔡自兴,徐光祐《人工智能及其应用》

(2)马永,贾俊芳.遗传算法研究综述.第23卷.第三期.2007年12月;

附录:

1.代码

主函数:

clear

clc

my_scale=50; %种群规模

gen_len=22; %基因长度

M=100; %迭代次数

pc=0.75; %交叉概率

pm=0.05; %变异概率

new_scale=produscale(my_scale,gen_len); %产生初始种群

fitfit=[];

fittimer=[];

best_f1=[];

best_x1=[];

for i=1:M

my_f=cal_my_f(new_scale); %计算函数值

my_fit=cal_my_fit(my_f); %计算适应度值

next_scale=my_sellect(new_scale,my_fit); %采用赌轮盘法选择 cross_scale=my_cross(next_scale,pc); %按概率交叉

mut_scale=my_mutat(cross_scale,pm); %按概率变异

%寻找每一代中的最优适应度值所对应的个体

best_fit=my_fit(1);

[sx,sy]=size(new_scale);

for j=2:length(my_fit)

if best_fit

best_fit=my_fit(j);

best_f=my_f(j);

best_x=my2to10(new_scale(j,:));

best_x=-2+best_x.*4./(2^sy-1);

end

end

new_scale=mut_scale;

fitfit=[fitfit,best_fit];

best_f1=[best_f1,best_f];

best_x1=[best_x1,best_x];

fittimer=[fittimer,i];

end

[best_fit,loca]=max(fitfit);

best_f=best_f1(loca);

best_x=best_x1(loca);

disp('[best_fit,best_f,best_x]=')

disp([best_fit,best_f,best_x])

subplot(2,2,1)

plot(fittimer,fitfit)

xlabel('迭代次数(1)-wxb');

ylabel('适应度函数')

grid on

%子函数:产生初始种群

function initscale=produscale(my_scale,gen_len) initscale=round(rand(my_scale,gen_len));

end

%子函数:计算函数值

function my_f=cal_my_f(new_scale)

mychange=my2to10(new_scale);

[sx,sy]=size(new_scale);

change_x=-1+mychange.*3./(2^sy-1);

my_f=change_x*sin(10π*change_x)+2;

end

%子函数:计算适应度值

function my_fit=cal_my_fit(my_f)

f_min=5;

for i=1:length(my_f)

if my_f(i)+f_min<=0

my_fit(i)=0;

else

my_fit(i)=my_f(i)+f_min;

end

end

my_fit=my_fit';

end

%子函数:采用赌轮盘法选择

function next_scale=my_sellect(new_scale,my_fit)

sum_of_f=sum(my_fit);

accum=my_fit/sum_of_f;

accum=cumsum(accum);

[sx,sy]=size(new_scale);

j=1;

while j<=sx

a=rand;

for i=1:sx-1

if accum(1)>=a

next_scale(j,:)=new_scale(1,:);

else if accum(i)=a

next_scale(j,:)=new_scale(i+1,:);

j=j+1;

end

end

end

end

end

%子函数:按概率交叉

function cross_scale=my_cross(new_scale,pc)

[sx,sy]=size(new_scale);

cross_scale=new_scale;

for i=1:2:sx-1

if rand

a=round(rand*sy);

cross_scale(i,:)=[new_scale(i,1:a),new_scale(i+1,a+1:end)];

cross_scale(i+1,:)=[new_scale(i+1,1:a),new_scale(i,a+1:end)];

end

end

%子函数:按概率变异

function mut_scale=my_mutat(new_scale,pm)

[sx,sy]=size(new_scale);

mut_scale=new_scale;

for i=1:sx

if rand

a=round(rand*sy);

if a<=0

a=1;

end

if mut_scale(i,a)==0

mut_scale(i,a)=1;

else

mut_scale(i,a)=0;

end

end

end

%子函数:2进制转10进制

function mychange=my2to10(new_scale)

[sx,sy]=size(new_scale);

new_scale1=new_scale;

for i=1:sy

new_scale1(:,i)=2.^(sy-i).*new_scale(:,i);

end

mychange=sum(new_scale1,2);

end

2.实验结果截图

4遗传算法与函数优化

第四章遗传算法与函数优化 4.1 研究函数优化的必要性: 首先,对很多实际问题进行数学建模后,可将其抽象为一个数值函数的优化问题。由于问题种类的繁多,影响因素的复杂,这些数学函数会呈现出不同的数学特征。除了在函数是连续、可求导、低阶的简单情况下可解析地求出其最优解外,大部分情况下需要通过数值计算的方法来进行近似优化计算。 其次,如何评价一个遗传算法的性能优劣程度一直是一个比较难的问题。这主要是因为现实问题种类繁多,影响因素复杂,若对各种情况都加以考虑进行试算,其计算工作量势必太大。由于纯数值函数优化问题不包含有某一具体应用领域中的专门知识,它们便于不同应用领域中的研究人员能够进行相互理解和相互交流,并且能够较好地反映算法本身所具有的本质特征和实际应用能力。所以人们专门设计了一些具有复杂数学特征的纯数学函数,通过遗传算法对这些函数的优化计算情况来测试各种遗传算法的性能。 4.2 评价遗传算法性能的常用测试函数 在设计用于评价遗传算法性能的测试函数时,必须考虑实际应用问题的数学模型中所可能呈现出的各种数学特性,以及可能遇到的各种情况和影响因素。这里所说的数学特性主要包括: ●连续函数或离散函数; ●凹函数或凸函数; ●二次函数或非二次函数; ●低维函数或高维函数; ●确定性函数或随机性函数; ●单峰值函数或多峰值函数,等等。 下面是一些在评价遗传算法性能时经常用到的测试函数: (1)De Jong函数F1: 这是一个简单的平方和函数,只有一个极小点f1(0, 0, 0)=0。

(2)De Jong 函数F2: 这是一个二维函数,它具有一个全局极小点f 2(1,1) = 0。该函数虽然是单峰值的函数,但它却是病态的,难以进行全局极小化。 (3)De Jong 函数F3: 这是一个不连续函数,对于]0.5,12.5[--∈i x 区域内的每一个点,它都取全局极小值 30),,,,(543213-=x x x x x f 。

使用遗传算法求解函数最大值

使用遗传算法求解函数最大值 题目 使用遗传算法求解函数 在及y的最大值。 解答 算法 使用遗传算法进行求解,篇末所附源代码中带有算法的详细注释。算法中涉及不同的参数,参数的取值需要根据实际情况进行设定,下面运行时将给出不同参数的结果对比。 定义整体算法的结束条件为,当种群进化次数达到maxGeneration时停止,此时种群中的最优解即作为算法的最终输出。 设种群规模为N,首先是随机产生N个个体,实验中定义了类型Chromosome表示一个个体,并且在默认构造函数中即进行了随机的操作。 然后程序进行若干次的迭代,在每次迭代过程中,进行选择、交叉及变异三个操作。 一选择操作 首先计算当前每个个体的适应度函数值,这里的适应度函数即为所要求的优化函数,然后归一化求得每个个体选中的概率,然后用轮盘赌的方法以允许重复的方式选择选择N个个体,即为选择之后的群体。

但实验时发现结果不好,经过仔细研究之后发现,这里在x、y取某些值的时候,目标函数计算出来的适应值可能会出现负值,这时如果按照把每个个体的适应值除以适应值的总和的进行归一化的话会出现问题,因为个体可能出现负值,总和也可能出现负值,如果归一化的时候除以了一个负值,选择时就会选择一些不良的个体,对实验结果造成影响。对于这个问题,我把适应度函数定为目标函数的函数值加一个正数,保证得到的适应值为正数,然后再进行一般的归一化和选择的操作。实验结果表明,之前的实验结果很不稳定,修正后的结果比较稳定,趋于最大值。 二交叉操作 首先是根据交叉概率probCross选择要交叉的个体进行交叉。

这里根据交叉参数crossnum进行多点交叉,首先随机生成交叉点位置,允许交叉点重合,两个重合的交叉点效果互相抵消,相当于没有交叉点,然后根据交叉点进行交叉操作,得到新的个体。 三变异操作 首先是根据变异概率probMutation选择要变异的个体。 变异时先随机生成变异的位置,然后把改位的01值翻转。

MATLAB实验遗传算法和优化设计

实验六 遗传算法与优化设计 一、实验目的 1. 了解遗传算法的基本原理和基本操作(选择、交叉、变异); 2. 学习使用Matlab 中的遗传算法工具箱(gatool)来解决优化设计问题; 二、实验原理及遗传算法工具箱介绍 1. 一个优化设计例子 图1所示是用于传输微波信号的微带线(电极)的横截面结构示意图,上下两根黑条分别代表上电极和下电极,一般下电极接地,上电极接输入信号,电极之间是介质(如空气,陶瓷等)。微带电极的结构参数如图所示,W 、t 分别是上电极的宽度和厚度,D 是上下电极间距。当微波信号在微带线中传输时,由于趋肤效应,微带线中的电流集中在电极的表面,会产生较大的欧姆损耗。根据微带传输线理论,高频工作状态下(假定信号频率1GHz ),电极的欧姆损耗可以写成(简单起见,不考虑电极厚度造成电极宽度的增加): 图1 微带线横截面结构以及场分布示意图 {} 28.6821ln 5020.942ln 20.942S W R W D D D t D W D D W W t D W W D e D D παπππ=+++-+++?????? ? ??? ??????????? ??????? (1) 其中πρμ0=S R 为金属的表面电阻率, ρ为电阻率。可见电极的结构参数影响着电极损耗,通过合理设计这些参数可以使电极的欧姆损耗做到最小,这就是所谓的最优化问题或者称为规划设计问题。此处设计变量有3个:W 、D 、t ,它们组成决策向量[W, D ,t ] T ,待优化函数(,,)W D t α称为目标函数。 上述优化设计问题可以抽象为数学描述: ()()min .. 0,1,2,...,j f X s t g X j p ????≤=? (2)

遗传算法优化相关MATLAB算法实现

遗传算法 1、案例背景 遗传算法(Genetic Algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。遗传算法的做法是把问题参数编码为染色体,再利用迭代的方式进行选择、交叉以及变异等运算来交换种群中染色体的信息,最终生成符合优化目标的染色体。 在遗传算法中,染色体对应的是数据或数组,通常是由一维的串结构数据来表示,串上各个位置对应基因的取值。基因组成的串就是染色体,或者叫基因型个体( Individuals) 。一定数量的个体组成了群体(Population)。群体中个体的数目称为群体大小(Population Size),也叫群体规模。而各个个体对环境的适应程度叫做适应度( Fitness) 。 2、遗传算法中常用函数 1)创建种群函数—crtbp 2)适应度计算函数—ranking 3)选择函数—select 4)交叉算子函数—recombin 5)变异算子函数—mut 6)选择函数—reins 7)实用函数—bs2rv 8)实用函数—rep 3、主程序: 1. 简单一元函数优化: clc clear all close all %% 画出函数图 figure(1); hold on; lb=1;ub=2; %函数自变量范围【1,2】 ezplot('sin(10*pi*X)/X',[lb,ub]); %画出函数曲线 xlabel('自变量/X') ylabel('函数值/Y') %% 定义遗传算法参数 NIND=40; %个体数目 MAXGEN=20; %最大遗传代数 PRECI=20; %变量的二进制位数 GGAP=0.95; %代沟 px=0.7; %交叉概率 pm=0.01; %变异概率

各种优化算法求解函数优化问题

各种优化算法求解函数优化问题 1.遗传算法的简单介绍及流程 1.1遗传算法的基本原理 遗传算法 ( Genetic Algorithm ,简称 GA) 是近年来迅速发展起来的一种全新的随机搜索优化算法。与传统搜索算法不同 ,遗传算法从一组随机产生的初始解 (称为群体 )开始搜索。群体中的每个个体是问题的一个解 ,称为染色体。这些染色体在后续迭代中不断进化 , 称为遗传。遗传算法主要通过交叉、变异、选择运算实现。交叉或变异运算生成下一代染色体,称为后 代。染色体的好坏用适应度来衡量。根据适应度的大小从上一代和后代中选择一定数量的个 体 ,作为下一代群体 ,再继续进化 ,这样经过若干代之后 ,算法收敛于最好的染色体 ,它很可能就是问题的最优解或次优解。遗传算法中使用适应度这个概念来度量群体中的各个个体在优化计算中有可能达到最优解的优良程度。度量个体适应度的函数称为适应度函数。适应度函数的定义一般与具体求解问题有关。 1.2遗传算法的流程 第一步:确定决策变量及各种约束条件,即确定出个体的表现型X和问题的解空间; 第二步:确定出目标函数的类型,即求目标函数的最大值还是最小值,以及其数学描述形式或量化方法,建立其优化模型; 第三步:确定表示可行解的染色体编码方法,即确定出个体的基因型X和遗传算法的搜 索空间。 第四步:确定解码方法,即确定出个体的基因型 X和个体的表现型 X的对应关系或转换方法; 第五步:确定个体时候适应度的量化评价方法,即确定出由目标函数 f(X) 值到个体适应度F(X) 的转换规则; 第六步:设计遗传算子,即确定出选择运算、交叉运算、变异运算等遗传算子的具体操作方法; 第七步:确定出遗传算法的运行参数,即确定出遗传算法的M、 T、 Pc、 Pm等参数。1.3 遗传算法求解函数优化问题中的参数分析 目前,函数优化是遗传算法的经典应用领域,也是对遗传算法进行性能评价的常用范 例。对于函数优化中求解实数型变量的问题,一般采用动态编码和实数编码的方法来提高其搜

遗传算法与优化问题(重要,有代码)

实验十遗传算法与优化问题 一、问题背景与实验目的 遗传算法(Genetic Algorithm—GA),是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,它是由美国Michigan大学的J.Holland教授于1975年首先提出的.遗传算法作为一种新的全局优化搜索算法,以其简单通用、鲁棒性强、适于并行处理及应用范围广等显著特点,奠定了它作为21世纪关键智能计算之一的地位. 本实验将首先介绍一下遗传算法的基本理论,然后用其解决几个简单的函数最值问题,使读者能够学会利用遗传算法进行初步的优化计算.1.遗传算法的基本原理 遗传算法的基本思想正是基于模仿生物界遗传学的遗传过程.它把问题的参数用基因代表,把问题的解用染色体代表(在计算机里用二进制码表示),从而得到一个由具有不同染色体的个体组成的群体.这个群体在问题特定的环境里生存竞争,适者有最好的机会生存和产生后代.后代随机化地继承了父代的最好特征,并也在生存环境的控制支配下继续这一过程.群体的染色体都将逐渐适应环境,不断进化,最后收敛到一族最适应环境的类似个体,即得到问题最优的解.值得注意的一点是,现在的遗传算法是受生物进化论学说的启发提出的,这种学说对我们用计算机解决复杂问题很有用,而它本身是否完全正确并不重要(目前生物界对此学说尚有争议). (1)遗传算法中的生物遗传学概念 由于遗传算法是由进化论和遗传学机理而产生的直接搜索优化方法;故而在这个算法中要用到各种进化和遗传学的概念. 首先给出遗传学概念、遗传算法概念和相应的数学概念三者之间的对应关系.这些概念如下: 序号遗传学概念遗传算法概念数学概念 1 个体要处理的基本对象、结构也就是可行解 2 群体个体的集合被选定的一组可行解 3 染色体个体的表现形式可行解的编码 4 基因染色体中的元素编码中的元素 5 基因位某一基因在染色体中的位置元素在编码中的位置 6 适应值个体对于环境的适应程度, 或在环境压力下的生存能力可行解所对应的适应函数值 7 种群被选定的一组染色体或个体根据入选概率定出的一组 可行解 8 选择从群体中选择优胜的个体, 淘汰劣质个体的操作保留或复制适应值大的可行解,去掉小的可行解 9 交叉一组染色体上对应基因段的 交换根据交叉原则产生的一组新解 10 交叉概率染色体对应基因段交换的概 率(可能性大小)闭区间[0,1]上的一个值,一般为0.65~0.90 11 变异染色体水平上基因变化编码的某些元素被改变

遗传算法多目标函数优化

多目标遗传算法优化 铣削正交试验结果 说明: 1.建立切削力和表面粗糙度模型 如: 3.190.08360.8250.5640.45410c e p z F v f a a -=(1) a R =此模型你们来拟合(上面有实验数据,剩下的两个方程已经是我帮你们拟合好的了)(2) R a =10?0.92146v c 0.14365f z 0.16065a e 0.047691a p 0.38457 10002/c z p e Q v f a a D π=-????(3) 变量约束范围:401000.020.080.25 1.0210c z e p v f a a ≤≤??≤≤??≤≤? ?≤≤? 公式(1)和(2)值越小越好,公式(3)值越大越好。π=3.14 D=8 2.请将多目标优化操作过程录像(同时考虑三个方程,优化出最优的自变量数值),方便我后续进行修改;将能保存的所有图片及源文件发给我;将最优解多组发给我,类似于下图(黄色部分为达到的要求)

遗传算法的结果:

程序如下: clear; clc; % 遗传算法直接求解多目标优化 D=8; % Function handle to the fitness function F=@(X)[10^(3.19)*(X(1).^(-0.0836)).*(X(2).^0.825).*(X(3).^0.564).*(X(4).^0. 454)]; Ra=@(X)[10^(-0.92146)*(X(1).^0.14365).*(X(2).^0.16065).*(X(3).^0.047691).*( X(4).^0.38457)]; Q=@(X)[-1000*2*X(1).*X(2).*X(3).*X(4)/(pi*D)];

基于遗传算法的库位优化问题

Logistics Sci-Tech 2010.5 收稿日期:2010-02-07 作者简介:周兴建(1979-),男,湖北黄冈人,武汉科技学院经济管理学院,讲师,武汉理工大学交通学院博士研究生,研究方向:物流价值链、物流系统规划;刘元奇(1988-),男,甘肃天水人,武汉科技学院经济管理学院;李泉(1989-),男,湖北 武汉人,武汉科技学院经济管理学院。 文章编号:1002-3100(2010)05-0038-03 物流科技2010年第5期Logistics Sci-Tech No.5,2010 摘 要:应用遗传算法对邯运集团仓库库位进行优化。在充分考虑邯运集团仓库所存放的货物种类、货物数量、出入库频 率等因素的基础上进行库位预分区规划,建立了二次指派问题的数学模型。利用遗传算法对其求解,结合MATLAB 进行编程计算并得出最优划分方案。 关键词:遗传算法;预分区规划;库位优化中图分类号:F253.4 文献标识码:A Abstract:The paper optimize the storage position in warehouse of Hanyun Group based on genetic algorithm.With thinking of the factors such as goods categories,quantities and frequencies of I/O,etc,firstly,the storage district is planned.Then the model of quadratic assignment problems is build,and genetic algorithm is utilized to resolve the problem.The software MATLAB is used to program and figure out the best alternatives. Key words:genetic algorithm;district planning;storage position optimization 1 库位优化的提出 邯郸交通运输集团有限公司(简称“邯运集团”)是一家集多种业务为一体的大型综合性物流企业。邯运集团的主要业务板块有原料采购(天信运业及天昊、天诚、天恒等)、快递服务(飞马快运)、汽贸业务(天诚汽贸)及仓储配送(河北快运)等。其中,邯运集团的仓储配送业务由河北快运经营,现有仓库面积总共40000㎡,主要的业务范围为医药、日用百货、卷烟、陶瓷、化工产品的配送,其中以医药为主。邯运集团库存货物主要涉及两个方面:一个是大宗的供应商货物,如医药,化工产品等;另一方面主要是大规模的小件快递货物,如日用百货等[1]。经分析,邯运集团在仓储运作方面存在如下问题: (1)存储货物繁多而分拣速度低下。仓库每天到货近400箱,有近200多种规格,缺乏一套行之有效的仓储管理系统。(2)货架高度不当而货位分配混乱。现在采用的货架高度在2米以上,而且将整箱货物直接码垛在货架上,不严格按货位摆放。当需要往货架最上层码放货物需要借助梯子,增加操作难度且操作效率较低。货物在拣货区货架摆放是以件为单位的,分拣和搬运速度较慢。 (3)拣货货架设计不当而仓储效率低下。发货前装箱工作主要由人工协同完成,出库效率低,出错率难以控制。 (4)存储能力和分拣能力不能满足需求。根据邯运集团的业务发展现状及趋势,现有的仓库储存和分拣能力远远达不到集团公司对配送业务量的需求。 当前邯运集团的货位分配主要采用物理地址编码的方式,很少考虑货位分配对仓储管理员工作效率的影响。对其进行库位优化设计不仅直接影响到其库存量的大小、出入库的效率,还间接影响到邯运集团的整体经营效益。本文对邯运集团的仓库货位进行优化时,结合考虑仓库所存放的货物种类、货物数量、出入库频率等因素,对仓库货位进行规划,以提高仓储效率。 2库位预分区规划 在进行仓库货位规划时,作如下假设: (1)货物的存放种类已知; (2)货物每种类的单位时间内存放的数量己知; (3) 每一种货物的存取频率已知。 在仓库货位优化中一个重要的环节即预分区。所谓预分区,是指没有存放货物时的分区,分区时只考虑仓储作业人员的速基于遗传算法的库位优化问题 Optimization of Storage Position in Warehouse Based on Genetic Algorithm 周兴建1,2,刘元奇1,李泉1 ZHOU Xing-jian 1,2,LIU Yuan-qi 1,LI Quan 1 (1.武汉科技学院经济管理学院,湖北武汉430073;2.武汉理工大学交通学院,湖北武汉430063) (1.College of Economics &Management,Wuhan University of Science &Engineering,Wuhan 430073,China; 2.School of Transportation,Wuhan University of Technology,Wuhan 430063,China) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 38

基本遗传算法及其在函数优化中的作用

《人工智能及其应用大作业(一)》 题目:基本遗传算法及其在函数优化中的作用 学号: 姓名:

基本遗传算法及其在函数优化中的应用 摘要: 从遗传算法的编码、遗传算子等方面剖析了遗传算法求解无约束函数优化问题的一般步骤,并以一个实例说明遗传算法能有效地解决函数优化问题。本文利用基本遗传算法求解函数优化问题,选用f(x)=xsin(10πx)+2.0,取值范围在]2,1 [ 中,利用基本遗传算法求解两个函数的最优值,遗传算法每次100代,一共执行10次,根据运算结果分析得到最优解。 关键字:遗传算法选择交叉变异函数优化 1.前言 1.1基本概念 遗传算法(Genetic Algorithm)是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机化搜索方法。遗传算法是一种群体型操作,该操作以群体中的所有个体为对象。选择(Selection)、交叉(Crossover)和变异(Mutation)是遗传算法的3个主要操作算子,它们构成了所谓的遗传操作(genetic operation),使遗传算法具有了其它传统方法所没有的特性。 1.2 遗传算法的特点 其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则。 1.3遗传算法的应用 函数优化,组合优化,机器人智能控制,及组合图像处理和模式识别等。 2.基本遗传算法 2.1简单遗传算法的求解步骤 Step1:参数设置及种群初始化; Step2:适应度评价; Step3:选择操作; Step4:交叉操作; Step5:变异操作; Step6:终止条件判断,若未达到终止条件,则转到Step3; Step7:输出结果。 2.2停机准则

TSP问题的遗传算法求解 优化设计小论文

TSP问题的遗传算法求解 摘要:遗传算法是模拟生物进化过程的一种新的全局优化搜索算法,本文简单介绍了遗传算法,并应用标准遗传算法对旅行包问题进行求解。 关键词:遗传算法、旅行包问题 一、旅行包问题描述: 旅行商问题,即TSP问题(Traveling Saleman Problem)是数学领域的一个著名问题,也称作货郎担问题,简单描述为:一个旅行商需要拜访n个城市(1,2,…,n),他必须选择所走的路径,每个城市只能拜访一次,最后回到原来出发的城市,使得所走的路径最短。其最早的描述是1759年欧拉研究的骑士周游问题,对于国际象棋棋盘中的64个方格,走访64个方格一次且最终返回起始点。 用图论解释为有一个图G=(V,E),其中V是顶点集,E是边集,设D=(d ij)是有顶点i和顶点j之间的距离所组成的距离矩阵,旅行商问题就是求出一条通过所有顶点且每个顶点只能通过一次的具有最短距离的回路。若对于城市V={v1,v2,v3,...,vn}的一个访问顺序为T=(t1,t2,t3,…,ti,…,tn),其中ti∈V(i=1,2,3,…,n),且记tn+1= t1,则旅行商问题的数学模型为:min L=Σd(t(i),t(i+1)) (i=1,…,n) 旅行商问题是一个典型组合优化的问题,是一个NP难问题,其可能的路径数为(n-1)!,随着城市数目的增加,路径数急剧增加,对与小规模的旅行商问题,可以采取穷举法得到最优路径,但对于大型旅行商问题,则很难采用穷举法进行计算。 在生活中TSP有着广泛的应用,在交通方面,如何规划合理高效的道路交通,以减少拥堵;在物流方面,更好的规划物流,减少运营成本;在互联网中,如何设置节点,更好的让信息流动。许多实际工程问题属于大规模TSP,Korte于1988年提出的VLSI芯片加工问题可以对应于1.2e6的城市TSP,Bland于1989年提出X-ray衍射问题对应于14000城市TSP,Litke于1984年提出电路板设计中钻孔问题对应于17000城市TSP,以及Grotschel1991年提出的对应于442城市TSP的PCB442问题。

遗传算法的优化计算

function Val=de_code(x) % 全局变量声明 global S P_train T_train P_test T_test mint maxt global p t r s s1 s2 % 数据提取 x=x(:,1:S); [m,n]=find(x==1); p_train=zeros(size(n,2),size(T_train,2)); p_test=zeros(size(n,2),size(T_test,2)); for i=1:length(n) p_train(i,:)=P_train(n(i),:); p_test(i,:)=P_test(n(i),:); end t_train=T_train; p=p_train; t=t_train; % 遗传算法优化BP网络权值和阈值 r=size(p,1); s2=size(t,1); s=r*s1+s1*s2+s1+s2; aa=ones(s,1)*[-1,1]; popu=20; % 种群规模 initPpp=initializega(popu,aa,'gabpEval'); % 初始化种群 gen=100; % 遗传代数 % 调用GAOT工具箱,其中目标函数定义为gabpEval x=ga(aa,'gabpEval',[],initPpp,[1e-6 1 0],'maxGenTerm',gen,... 'normGeomSelect',0.09,'arithXover',2,'nonUnifMutation',[2 gen 3]); % 创建BP网络 net=newff(minmax(p_train),[s1,1],{'tansig','purelin'},'trainlm'); % 将优化得到的权值和阈值赋值给BP网络 [W1,B1,W2,B2]=gadecod(x); net.IW{1,1}=W1; net.LW{2,1}=W2; net.b{1}=B1; net.b{2}=B2; % 设置训练参数 net.trainParam.epochs=1000; net.trainParam.show=10; net.trainParam.goal=0.1; net.trainParam.lr=0.1; net.trainParam.showwindow=0;

用于函数优化的遗传算法

一、遗传算法介绍 1.综述 遗传算法(Genetic Algorithm)是由美国Michigan 大学Holland 教授和他的学生发展建立起来的,其思想是起源于生物遗传学适者生存的自然规律,是一种新兴的自适应随机搜索方法,它对优化对象既不要求连续,也不要求可微,并具有极强的鲁棒性和内在的并行计算的机制,特别适合于非凸空间中复杂的多极值优化和组合优化问题。 2.基本原理 传统的优化理论都是通过调整模型的参数来得到期望的结果,而遗传优化算法是根据生物界的遗传和自然选择的原理来实现的,它的学习过程是通过保持和修改群体解中的个体特性,并且保证这种修改能够使下一代的群体中的有利于与期望特性相近的个体在整个群体份额中占有的比例越来越多。与基于代数学的优化方法一样,遗传算法是通过连续不断地队群体进行改进来搜索函数的最大值。遗传算法的搜索结果会有很大的差异。遗传学习的基本机理是使那些优于群体中其他个体的个体具有生存、繁殖以及保持更多基因给下一代的机会。遗传算法实质上是在群体空间中寻求较优解。 3.主要构成 遗传算法主要由编码、适应度、遗传算子(选择算子、交叉算子、变异算子)构成,包含的主要进化参数有编码长度、种群规模、交叉概率、变异概率、终止进化代数。 4.基本步骤 (1)初始化:确定种群规模,交叉概率 P,变异概率m P和终止进化准则,随 c 机生成初始种群() X t;置0 t ; (2)个体评价:计算或估计() X t中各个个体的适应度。 (3)选择:从() X t运用选择算子选择出一些母体。 (4)交叉:对所选个体依概率 P执行交叉,形成新的种群。 c (5)变异:随所选个体依概率 P执行变异,形成新的种群。 m 反复执行步骤(2)-(4),直到满足终止进化准则为止。

遗传算法解决函数优化问题

实验一 遗传算法解决函数优化问题 XXX XXX XXXX 一、实验目的 1. 掌握遗传算法的基本原理和步骤。 2. 复习VB 、VC 的基本概念、基本语法和编程方法,并熟练使用VB 或VC 编写遗 传算法程序。 二、实验设备 微机 三、实验原理 遗传算法是一类随机优化算法,但它不是简单的随机比较搜索,而是通过对染色体的评价和对染色体中基因的作用,有效地利用已有信息来指导搜索有希望改善优化质量的状态。 标准遗传算法流程图如图1.1所示,主要步骤可描述如下: ① 随机产生一组初始个体构成初始种群。 ② 计算每一个体的适配值(fitness value ,也称为适应度)。适应度值是对染色体(个体) 进行评价的一种指标,是GA 进行优化所用的主要信息,它与个体的目标值存在一种对应关系。 ③ 判断算法收敛准则是否满足,若满足,则输出搜索结果;否则执行以下步骤。 ④ 根据适应度值大小以一定方式执行复制操作(也称为选择操作)。 ⑤ 按交叉概率p c 执行交叉操作。 ⑥ 按变异概率p m 执行变异操作。 ⑦ 返回步骤②。 四、实验内容及步骤 1. 上机编写程序,解决以下函数优化问题:()221min 10i i i f x x =??=≤ ??? ∑X 2. 调试程序。 3. 根据实验结果,撰写实验报告。

图1.1 标准遗传算法流程图 五、实验程序 % % 清工作空间workspace,清屏幕显示 % clear all; clc; % % tic; % 启动计时器%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 参数赋值 PopSize =30; % 种群规模 Pc =0.65; % 交叉概率 Pm =0.01; % 变异概率 precision =22; % 根据精度要求,二进制字符串长度为22 iterative_thre =20; % 若连续iterative_thre次解无改进,则退出遗传算法 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 初始化变量 fitness = zeros(PopSize,1); % 存放所有染色体的适应度值SelectRate = zeros(PopSize,1); % 存放染色体的选择概率AccumulateRate = zeros(PopSize,1); % 存放染色体的累积概率 num =0; % 结束遗传算法控制量 bestfitness = 0; % 存放进化过程中最优的适应度值 bestX =0; % 存放进化过程中最优解 population = dec2bin(rand(PopSize,1)*(2^precision));

遗传算法解决函数优化问题

实验一 遗传算法解决函数优化问题 一、实验目的 1.掌握遗传算法的基本原理和步骤。 2. 复习VB 、VC 的基本概念、基本语法和编程方法,并熟练使用VB 或VC 编写遗传算法程序。 二、实验内容 1. 上机编写程序,解决以下函数优化问题: ()1021min 100i i i f x x =?? =≤ ? ?? ∑X 2. 调试程序。 3. 根据实验结果,撰写实验报告。 三、实验原理 遗传算法是一类随机优化算法,但它不是简单的随机比较搜索,而是通过对染色体的评价和对染色体中基因的作用,有效地利用已有信息来指导搜索有希望改善优化质量的状态。 标准遗传算法流程图如下图所示,主要步骤可描述如下: ① 随机产生一组初始个体构成初始种群。 ② 计算每一个体的适配值(fitness value ,也称为适应度)。适应度值是对染色体(个体) 进行评价的一种指标,是GA 进行优化所用的主要信息,它与个体的目标值存在一种对应关系。 ③ 判断算法收敛准则是否满足,若满足,则输出搜索结果;否则执行以下步骤。 ④ 根据适应度值大小以一定方式执行复制操作(也称为选择操作)。 ⑤ 按交叉概率p c 执行交叉操作。 ⑥ 按变异概率p m 执行变异操作。 ⑦ 返回步骤②。

图1.1 标准遗传算法流程图四、程序代码 #include #include #include #include #define byte unsigned char #define step 200 //步长 #define MAX 50 #define N 10 //随机数个数 #define Pc 0.74 //被选择到下一代的概率,个数=Pc*N,小于N 下一代数=上一代,不用处理 #define Pt 0.25 //交叉的概率,个数 =Pt*N 舍,小于N 0~(n2+1)随机数,之后部分开始交叉 #define Pm 0.01 //变异的概率,个数 =Pm*N*n2 入,小于N 0~(N*(n2+1))随机数/(n2+1)=个体,0~(N*(n2+1))随机 数%(n2+1)=该个体基因位置 #define n2 15//2的15次方,共16位 #define next_t (int)(Pt*N)//交叉个数#define next_m (int)(Pm*N+1)//变异个数向后约等于 #define e 0.001//次数限制阈值 /* int N=10; //随机数个数 float Pc=0.74; //被选择到下一代的概率,个数=Pc*N,小于N 下一代数=上一代,不用处理 float Pt=0.25; //交叉的概率,个数=Pt*N 舍,小于N 0~(n2+1)随机数,之后部分开始交叉 float Pm=0.01; //变异的概率,个数 =Pm*N*n2 入,小于N 0~(N*(n2+1))随机数/(n2+1)=个体,0~(N*(n2+1))随机 数%(n2+1)=该个体基因位置 */ byte bitary[N][n2+1],bitary0[N][n2+1];//二进制 int src1[N];

遗传算法与优化问题

遗传算法与优化问题 (摘自:华东师范大学数学系;https://www.360docs.net/doc/687715546.html,/) 一、问题背景与实验目的 二、相关函数(命令)及简介 三、实验内容 四、自己动手 一、问题背景与实验目的 遗传算法(Genetic Algorithm—GA),是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,它是由美国Michigan大学的J.Holland教授于1975年首先提出的.遗传算法作为一种新的全局优化搜索算法,以其简单通用、鲁棒性强、适于并行处理及应用范围广等显著特点,奠定了它作为21世纪关键智能计算之一的地位. 本实验将首先介绍一下遗传算法的基本理论,然后用其解决几个简单的函数最值问题,使读者能够学会利用遗传算法进行初步的优化计算. 1.遗传算法的基本原理 遗传算法的基本思想正是基于模仿生物界遗传学的遗传过程.它把问题的参数用基因代表,把问题的解用染色体代表(在计算机里用二进制码表示),从而得到一个由具有不同染色体的个体组成的群体.这个群体在问题特定的环境里生存竞争,适者有最好的机会生存和产生后代.后代随机化地继承了父代的最好特征,并也在生存环境的控制支配下继续这一过程.群体的染色体都将逐渐适应环境,不断进化,最后收敛到一族最适应环境的类似个体,即得到问题最优的解.值得注意的一点是,现在的遗传算法是受生物进化论学说的启发提出的,这种学说对我们用计算机解决复杂问题很有用,而它本身是否完全正确并不重要(目前生物界对此学说尚有争议).

(1)遗传算法中的生物遗传学概念 由于遗传算法是由进化论和遗传学机理而产生的直接搜索优化方法;故而在这个算法中要用到各种进化和遗传学的概念. 首先给出遗传学概念、遗传算法概念和相应的数学概念三者之间的对应关系.这些概念如下: (2)遗传算法的步骤 遗传算法计算优化的操作过程就如同生物学上生物遗传进化的过程,主要有三个基本操作(或称为算子):选择(Selection)、交叉(Crossover)、变异(Mutation). 遗传算法基本步骤主要是:先把问题的解表示成“染色体”,在算法中也就是以二进制编码的串,在执行遗传算法之前,给出一群“染色体”,也就是假设的可行解.然后,把这些假设的可行解置于问题的“环境”中,并按适者生存的原则,从中选择出较适应环境的“染色体”进行复制,再通过交叉、变异过

遗传算法的优化计算-建模自变量降维

%% 清空环境变量 clear all clc warning off %% 声明全局变量 global P_train T_train P_test T_test mint maxt S s1 S=30; s1=50; %% 导入数据 load data.mat a=randperm(569); Train=data(a(1:500),:); Test=data(a(501:end),:); % 训练数据 P_train=Train(:,3:end)'; T_train=Train(:,2)'; % 测试数据 P_test=Test(:,3:end)'; T_test=Test(:,2)'; % 显示实验条件 total_B=length(find(data(:,2)==1)); total_M=length(find(data(:,2)==2)); count_B=length(find(T_train==1)); count_M=length(find(T_train==2)); number_B=length(find(T_test==1)); number_M=length(find(T_test==2)); disp('实验条件为:'); disp(['病例总数:' num2str(569)... ' 良性:' num2str(total_B)... ' 恶性:' num2str(total_M)]); disp(['训练集病例总数:' num2str(500)... ' 良性:' num2str(count_B)... ' 恶性:' num2str(count_M)]); disp(['测试集病例总数:' num2str(69)... ' 良性:' num2str(number_B)... ' 恶性:' num2str(number_M)]); %% 数据归一化 [P_train,minp,maxp,T_train,mint,maxt]=premnmx(P_train,T_train); P_test=tramnmx(P_test,minp,maxp); %% 创建单BP网络 t=cputime; net_bp=newff(minmax(P_train),[s1,1],{'tansig','purelin'},'trainlm'); % 设置训练参数 net_bp.trainParam.epochs=1000;

用于函数优化的遗传算法

用于函数优化的遗传算法

一、遗传算法介绍 1.综述 遗传算法(Genetic Algorithm )是由美国Michigan 大学Holland 教授和他 的学生发展建立起来的,其思想是起源于生物遗传学适者生存的自然规律,是一种新兴的自适应随机搜索方法,它对优化对象既不要求连续,也不要求可微,并具有极强的鲁棒性和内在的并行计算的机制,特别适合于非凸空间中复杂的多极值优化和组合优化问题。 2.基本原理 传统的优化理论都是通过调整模型的参数来得到期望的结果,而遗传优化算法是根据生物界的遗传和自然选择的原理来实现的,它的学习过程是通过保持和修改群体解中的个体特性,并且保证这种修改能够使下一代的群体中的有利于与期望特性相近的个体在整个群体份额中占有的比例越来越多。与基于代数学的优化方法一样,遗传算法是通过连续不断地队群体进行改进来搜索函数的最大值。遗传算法的搜索结果会有很大的差异。遗传学习的基本机理是使那些优于群体中其他个体的个体具有生存、繁殖以及保持更多基因给下一代的机会。遗传算法实质上是在群体空间中寻求较优解。 3.主要构成 遗传算法主要由编码、适应度、遗传算子(选择算子、交叉算子、变异算子)构成,包含的主要进化参数有编码长度、种群规模、交叉概率、变异概率、终止进化代数。 4.基本步骤 (1)初始化:确定种群规模,交叉概率c P ,变异概率m P 和终止进化准则, 随机生成初始种群() X t ;置0t ; (2)个体评价:计算或估计() X t 中各个个体的适应度。 (3)选择:从()X t 运用选择算子选择出一些母体。 (4)交叉:对所选个体依概率c P 执行交叉,形成新的种群。 (5)变异:随所选个体依概率m P 执行变异,形成新的种群。 反复执行步骤(2)-(4),直到满足终止进化准则为止。

实验 利用遗传算法进行函数优化

实验利用遗传算法进行函数优化 一、实验目的 1 了解及掌握遗传算法的基本操作 2 利用遗传算法解决实际问题 3 熟悉MATLAB编程语言 二、实验内容 编写一个基于遗传算法的函数寻优程序,完成如下任务: 1、在区间[-1,2]上搜索函数f1=x*sin(10πx)+2的最大值。 2、搜索函数f2=x12+x22的最小值 (其中,-5.12

第一题: figure(1); fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]); %画出函数曲线 %定义遗传算法参数 NIND=40; %个体数目 MAXGEN=25; %最大遗传代数 PRECI=20; %变量的二进制位数 GGAP=0.9; %代沟 trace=zeros(2, MAXGEN); %寻优结果的初始值 FieldD=[20;-1;2;1;0;1;1]; %区域描述器 Chrom=crtbp(NIND, PRECI); %初始种群 gen=0; %代计数器 variable=bs2rv(Chrom, FieldD); %计算初始种群的十进制转换 ObjV=variable.*sin(10*pi*variable)+2.0; %计算目标函数值 while gen

相关文档
最新文档