作业帮 > 数学 > 作业

求教matlab遗传算法问题

来源:学生作业帮 编辑:百度作业网作业帮 分类:数学作业 时间:2024/05/04 16:57:04
求教matlab遗传算法问题
f(x,y)=sin(pi*x)/(pi*x)*sin(pi*y)/(pi*y)
x,y=[0,8],求maxf(x,y)
用遗传算法怎么可以求解?
求教matlab遗传算法问题
clc
clear all
close all
%% 画出函数图
figure(1);
lbx=0;ubx=8; %函数自变量x范围【0,8】
lby=0;uby=8; %函数自变量y范围【0,8】
ezmesh('sin(pi*x)/(pi*x)*sin(pi*y)/(pi*y)',[lbx,ubx,lby,uby],50); %画出函数曲线
hold on;
%% 定义遗传算法参数
NIND=40; %个体数目
MAXGEN=50; %最大遗传代数
PRECI=20; %变量的二进制位数
GGAP=0.95; %代沟
px=0.7; %交叉概率
pm=0.01; %变异概率
trace=zeros(3,MAXGEN); %寻优结果的初始值
FieldD=[PRECI PRECI;lbx lby;ubx uby;1 1;0 0;1 1;1 1]; %区域描述器
Chrom=crtbp(NIND,PRECI*2); %初始种群
%% 优化
gen=0; %代计数器
XY=bs2rv(Chrom,FieldD); %计算初始种群的十进制转换
X=XY(:,1);Y=XY(:,2);
ObjV=sin(pi*x)/(pi*x)*sin(pi*y)/(pi*y); %计算目标函数值
while gen
再问: 如果求出来的x,y是向量是什么问题?
再答: 遗传算法是算最优解的,如果是多目标的话可能会有多个解,不知道你说的向量是什么意思。