内容发布更新时间 : 2024/12/25 0:57:42星期一 下面是文章的全部内容请认真阅读。
题目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=[];