disp(['总距离:',num2str(Rlength)]);
disp('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') %% 优化 gen=0; figure;
hold on;box on xlim([0,MAXGEN]) title('优化过程') xlabel('代数') ylabel('最优值')
ObjV=PathLength(D,Chrom); %计算路线长度 preObjV=min(ObjV); while gen %% 计算适应度 ObjV=PathLength(D,Chrom); %计算路线长度 % fprintf('%d %1.10f\\n',gen,min(ObjV)) line([gen-1,gen],[preObjV,min(ObjV)]);pause(0.0001) preObjV=min(ObjV); FitnV=Fitness(ObjV); %% 选择 SelCh=Select(Chrom,FitnV,GGAP); %% 交叉操作 SelCh=Recombin(SelCh,Pc); %% 变异 SelCh=Mutate(SelCh,Pm); %% 逆转操作 SelCh=Reverse(SelCh,D); %% 重插入子代的新种群 Chrom=Reins(Chrom,SelCh,ObjV); %% 更新迭代次数 gen=gen+1 ; end %% 画出最优解的路线图 ObjV=PathLength(D,Chrom); %计算路线长度 [minObjV,minInd]=min(ObjV); DrawPath(Chrom(minInd(1),:),X) %% 输出最优解的路线和总距离 disp('最优解:') p=OutputPath(Chrom(minInd(1),:)); disp(['总距离:',num2str(ObjV(minInd(1)))]); disp('-------------------------------------------------------------') 第 5章 基于遗传算法的LQR控制器优化设计 1、案例背景 LQR控制在工程中得到了广泛的应用,对于LQR最优控制,其最优性完全取决于加权矩阵的选择,然而该加权矩阵如何选择并没有解析方法,只能定性地去选择矩阵参数,所以这样的“最优”控制事实上完全是认为的。如果选择不当,虽然可以求出最优解,但这样的“最优解”没有任何意义。另一方面,加权矩阵的选择依赖于设计者的经验,需要设计者根据系统输出逐步调整加权矩阵,直到获得满意的输出响应量为止,这样不仅费时,而且无法保证获得最优的权重矩阵,因此获得的最优控制反馈系数不能保证使系统达到最优。遗传算法(Genetic Algorithm,GA)是模仿自然界生物进化机制发展起来的全局搜索优化方法,它在迭代过程中使用适者生存的原则,采用交叉、变异等操作使得种群朝着最优的方向进化,最终获得最优解。鉴于LQR 控制方法权重矩阵确定困难的问题,本案例以汽车主动悬架作为被控对象,将遗传算法应用于LQR控制器的设计中,利用遗传算法的全局搜索能力,以主动悬架的性能指标作为目标函数对加权矩阵进行优化设计,以提高LQR的设计效率和性能。 2、案例目录: 第5章 基于遗传算法的LQR控制器优化设计 5.1 案例背景 5.1.1 LQR控制 5.1.2 基于遗传算法设计LQR控制器 5.2 模型建立 5.2.1 主动悬架及其LQR控制器 5.2.2 基于遗传算法的主动悬架LQR控制器优化设计 5.3 模型及算法实现 5.3.1 模型实现 5.3.2 遗传算法实现 5.3.3 结果分析 5.4 参考文献 3、案例实例及结果: 4、主程序: clear clc fitnessfcn = @GA_LQR; % 适应度函数句柄 nvars=3; % 个体变量数目 LB = [0.1 0.1 0.1]; % 下限 UB = [1e6 1e6 1e6]; % 上限 options=gaoptimset('PopulationSize',100,'PopInitRange',[LB;UB],'EliteCount',10,'CrossoverFraction',0.4,'Generations',20,'StallGenLimit',20,'TolFun',1e-100,'PlotFcns',{@gaplotbestf,@gaplotbestindiv}); % 算法参数设置 [x_best,fval]=ga(fitnessfcn,nvars, [],[],[],[],LB,UB,[],options); % 运行遗传算法 第 6 章 遗传算法工具箱详解及应用 1、案例背景 MATLAB自带的遗传算法与直接搜索工具箱(Genetic Algorithm and Direct Search Toolbox, GADST),可以较好地解决与遗传算法相关的各种问题。GADST可以通过GUI界面调用,也可以通过命令行方式调用,使用简单方便。本案例将对GADST函数库的遗传算法部分进行详细的代码分析和讲解,并通过求解非线性方程组介绍GADST的使用方法。 2、案例目录: 第6章 遗传算法工具箱详解及应用 6.1 遗传算法与直接搜索工具箱 6.1.1 遗传算法与直接搜索工具箱简介 6.1.2 GADST详解 6.1.2.1 遗传算法的一些基本概念 6.1.2.2 stepGA函数 6.1.2.3 fitscalingrank函数和selectionstochunif函数 6.1.2.4 crossoverscattered函数mutationgaussian函数 6.1.3 GADST的使用 6.1.3.1 GUI方式使用GADST 6.1.3.2 命令行方式使用GADST 6.2 案例分析 6.2.1 模型建立 6.2.2 GADST的应用 6.2.2.1 使用GUI 6.2.2.2 使用命令行 6.2.3 结果分析 6.3 参考文献 3、案例实例及结果: 作为案例,这里将使用遗传算法与直接搜索工具箱(GADST)求解一个非线性方程组。求解以下非线性方程组: 优化过程如下: 得到的最优解为 [x1,x2] = [-0.247800834353742, 1.62131572868496] 4、主程序: clear clc fitnessfcn = @GA_demo; % 适应度函数句柄 nvars = 2; % 个体所含的变量数目 options = gaoptimset('PopulationSize',100,'EliteCount',10,'CrossoverFraction',0.75,'Generations',500,'StallGenLimit',500,'TolFun',1e-100,'PlotFcns',{@gaplotbestf,@gaplotbestindiv}); % 参数设置 [x_best,fval] =ga(fitnessfcn,nvars,[],[],[],[],[],[],[],options);% 调用ga函数 第 7 章 多种群遗传算法的函数优化算法 1、案例背景 针对遗传算法所存在的问题,一种多种群遗传算法结构模型(Multiple Population GA,简称MPGA)可以用来取代常规的标准计算模型(SGA)。 MPGA在SGA的基础上主要引入了以下几个概念: (1)突破SGA仅靠单个群体进行遗传进化的框架,引入多个种群同时进行优化搜索;不同的种群赋以不同的控制参数,实现不同的搜索目的。 (2)各个种群之间通过移民算子进行联系,实现多种群的协同进化;最优解的获取是多个种群协同进化的综合结果。 (3)通过人工选择算子保存各种群每个进化代中的最优个体,并作为判断算法收敛的依据。