遗传算法详解(LINGO及MatlabGA工具箱求解实现) (2)

遗传算法详解(LINGO及MatlabGA工具箱求解实现)

解法:

      这题属于规划类问题,我们可以用LINGO来求解。

(1)  在LINGO中求解:

遗传算法详解(LINGO及MatlabGA工具箱求解实现)

遗传算法详解(LINGO及MatlabGA工具箱求解实现)

那么在遗传算法里面我们要怎么样去解决它呢?

(2)  在MATLAB中求解(GA工具箱求解):

这里使用到的是MATLAB自带的GA工具箱,即GADS工具箱。

遗传工具箱共有四大版本,分别是

英国Sheffield《genetic arithmetic toolbox》(GATBX遗传算法工具箱)

中国陈益《simple genetic algorithms laboratory》(SGALAB简单遗传算法实验室)

美国NCSU-IE《Genetic Algorithm Optimization Tool》(GAOT遗传算法优化工具箱)

美国MathWorks《Genetic Algorithm and Direct Search Toolbox 》(GADS遗传算法和直接搜索工具箱)

遗传算法详解(LINGO及MatlabGA工具箱求解实现)

遗传算法详解(LINGO及MatlabGA工具箱求解实现)

6.2 例2:求解最值问题

求解以下问题

遗传算法详解(LINGO及MatlabGA工具箱求解实现)

函数图像为

遗传算法详解(LINGO及MatlabGA工具箱求解实现)

最大值大约在x=1.5附近取得。

(1)   在LINGO中求解:

遗传算法详解(LINGO及MatlabGA工具箱求解实现)

遗传算法详解(LINGO及MatlabGA工具箱求解实现)

(2)  在MATLAB中求解:

第一种方法:使用GA工具箱

注意:GA工具箱默认求最小值!若要求最大值,需要加上负号!

代码实现如下:

%主程序代码,本程序采用遗传算法接力进化, %将上次进化结束后得到的最终种群作为下次输入的初始种群 %主程序代码, clc; close all; clear all; % 进化的代数 T=50; % 初始的种群 options=gaoptimset(\'Generations\',T); [x,fval,reason,output,final_pop]=ga(@fitnessfun,1,options); %进行第二次接力进化 options1=gaoptimset(\'Generations\',T,\'InitialPopulation\',final_pop,\'PlotFcns\',@gaplotbestf); [x,fval,reason,output,final_pop]=ga(@fitnessfun,1,options1); Bestx=x BestFval=-fval % 适应度函数 function f = fitnessfun(x) if(x<-2|x>2) f=100; else f=-200*exp(-0.05*x)*sin(x); end end

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwgywf.html