求教matlab遗传算法问题

问题描述:

求教matlab遗传算法问题
f(x,y)=sin(pi*x)/(pi*x)*sin(pi*y)/(pi*y)
x,y=[0,8],求maxf(x,y)
用遗传算法怎么可以求解?
1个回答 分类:数学 2014-10-20

问题解答:

我来补答
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是向量是什么问题?
再答: 遗传算法是算最优解的,如果是多目标的话可能会有多个解,不知道你说的向量是什么意思。
 
 
展开全文阅读
剩余:2000
上一页:为什么只选B
下一页:第8题练习