解法:
这题属于规划类问题,我们可以用LINGO来求解。
(1) 在LINGO中求解:
那么在遗传算法里面我们要怎么样去解决它呢?
(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遗传算法和直接搜索工具箱)
6.2 例2:求解最值问题求解以下问题
函数图像为
最大值大约在x=1.5附近取得。
(1) 在LINGO中求解:
(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