利用遗传算法进行优化的一个例子

主宰稳场 提交于 2020-02-04 14:43:48

 优化变量为自变量x(1)和x(2);

约束为[-1,+1];

目标函数为三个函数值的最大值最小!

主函数:

clear all
fun = @max_f;%定义适度函数
nvars=2;%定义变量个数
A = [];
b = [];
Aeq = [];
beq = [];
lb = [-1 -1];
ub = [+1 +1];
%% Start with the default options
options = gaoptimset;
%% Modify options setting
options = gaoptimset(options,'Generations', 20);%定义代的数量
options = gaoptimset(options,'Display', 'off');
options = gaoptimset(options,'PlotFcns', {  @gaplotbestf @gaplotbestindiv });%显示最优适度函数和最优个体
[x,fval,exitflag,output,population,score] = ...
ga(@max_f,nvars,[],[],[],[],lb,ub,[],[],options);

适应度函数:

function f=max_f(x)
y1=x(1)^2+x(2)^+2*x(1)+x(2)-4
y2=x(1)*x(2)+x(1)
y3=x(1)*x(2)^2+x(2)
y=[y1 y2 y3]
f=max(y);%三个函数的最大值

 计算结果如下:

x =

   -0.9998   -0.4142


fval =

   -0.5856


exitflag =

     0


output = 

      problemtype: 'boundconstraints'
         rngstate: [1x1 struct]
      generations: 20
        funccount: 1050
          message: 'Optimization terminated: maximum number of generations exceeded.'
    maxconstraint: 0
 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!