遗传算法及蚂蚁算法作业 下载本文

内容发布更新时间 : 2024/11/15 18:18:03星期一 下面是文章的全部内容请认真阅读。

题目1:z=2-exp[-(x2+y2)], x,y[-5,+5],求函数最小值 (1)用遗传算法来做:

第一步:确定决策变量及其约束条件 s.t. -5<=x<=5 第二步:建立优化模型

maxf(x)?-(2-exp(-(x.^2+y.^2)))

第三步:确定编码方法,用长度为50位的二进制编码串来表示决策变量x

第四步:确定解码方法

x?5?(?5)?y 250?1第五步:确定个体评价方法

个体的适应度取为每次迭代的最小值的绝对值加上目标函数值,即

F(x)?|min{f(x)}|?f(x)

第六步:确定参数

本题种群规模n=30,迭代次数ger=200,交叉概率pc=0.65,变异概率pm=0.05 代码: clear all; close all; clc; tic;

n=30; ger=200; pc=0.65; pm=0.05;

% 生成初始种群 v=init_population(n,50); [N,L]=size(v);

disp(sprintf('Number of generations:%d',ger)); disp(sprintf('Population size:%d',N)); disp(sprintf('Crossover probability:%.3f',pc)); disp(sprintf('Mutation probability:%.3f',pm));

% 待优化问题 xmin=-5; xmax=5; ymin=-5; ymax=5;

f='-(2-exp(-(x.^2+y.^2)))';

[x,y]=meshgrid(xmin:0.1:xmax,ymin:0.1:ymax); vxp=x;

vyp=y; vzp=eval(f); figure(1);

mesh(vxp,vyp,-vzp); hold on; grid on;

% 计算适应度,并画出初始种群图形 x=decode(v(:,1:25),xmin,xmax); y=decode(v(:,26:50),ymin,ymax); fit=eval(f);

plot3(x,y,-fit,'k*');

title('(a)染色体的初始位置'); xlabel('x'); ylabel('y'); zlabel('f(x,y)');

% 迭代前的初始化 vmfit=[]; vx=[];