概述
各位前辈们好,刚接触MATLAB,有一程序运行后出现问题,程序中变量4个,分别有不同的取值范围function Pcom=PowerComFcn(t_chs,t_conds,G_ch,G_c);
t_chs=x(1);
t_conds=x(2);
G_ch=x(3);
G_c=x(4);
x=[t_chs,t_conds,G_ch,G_c]
K_ch = 500;
K_cc = 800;
A_ch = 71.4;
A_cc = 106.7;
t_ch = t_chs-8;
t_cond = t_conds-10;
c_chp = 3429;
c_cp = 3676;
t0 = t_chs - t_conds-t_cond/(exp((K_ch*A_ch)/(c_chp*G_ch))-1);
tk = t_conds + t_conds-t_cond/(1-exp(-1*(K_cc*A_cc)/(c_cp*G_c)));
a1 = 21.25384;
a2 = -2025.4518;
a3 = 247.94;
p0 = exp(a1+a2/(t0+a3));
pk = exp(a1+a2/(tk+a3));
m=1.18;
k=1.11;
lamda= 0.94-0.085*((pk/p0)^(1/m)-1);
V_th = 0.04231;
Eta = 0.78;
P_com = lamda/Eta*V_th*p0*k/(k-1)*((pk/p0)^((k-1)/k)-1);
LB = [8 10 24 30];
UB = [15 30 48 60];
[x,fval,exitflag] = ga(@PowerComFcn,4,[],[],[],[],LB,UB);
保存M文件
warning('off','MATLAB:dispatcher:InexactCaseMatch')
clear;clc
NVAR = 4; % 变量的个数,这里是4个,分别是t_chs,t_conds,G_ch,G_c
X_range = [8, 10; 10, 30; 24, 48; 30, 60];
NIND = 400;
MAXGEN =200;%100;
PRECI = 25;
GGAP = 0.9;
FieldD = [rep([PRECI],[1,NVAR]);X_range';rep([1;0;1;1],[1,NVAR])];
Chrom = crtbp(NIND, NVAR*PRECI);
gen = 0;
trace = zeros(MAXGEN, 2);
x = bs2rv(Chrom, FieldD);
保存了M文件
ObjV=Func(x);
X = [];
while gen
FitnV = ranking(ObjV);
SelCh = select('sus',Chrom,FitnV,GGAP); % 选择
SelCh = recombin('xovsp',SelCh,0.7); % 交叉
SelCh = mut(SelCh,0.2); % 变异
x = bs2rv(SelCh,FieldD);% 用个体的二进制数转化为实际的变量值
ObjVSel=Func(x);% 计算初始的目标功率值
[Chrom ObjV] = reins(Chrom,SelCh,1,1,ObjV,ObjVSel);% 子集群重新插入父集群
gen = gen+1;
[Y,I]=min(ObjV);
X=[X;bs2rv(Chrom(I,:),FieldD)];
trace(gen,1)=min(ObjV);
trace(gen,2)=sum(ObjV)/length(ObjV);
end
Y
X_star=bs2rv(Chrom(I,:),FieldD)
保存M文件
figure
plot(trace(:,1)/1000, 'r-');
xlabel('代数');
ylabel('功率值(KW)')
xlim([0,MAXGEN]);
整体的无法运行,我是分四个M文件保存后运行了,但是运行结果是一条0的直线,希望能帮助解决问题
0.png
(36.08 KB, 下载次数: 0)
2018-12-2 17:32 上传
最后
以上就是玩命星星为你收集整理的matlab遗传算法进行函数优化,遗传算法函数优化的全部内容,希望文章能够帮你解决matlab遗传算法进行函数优化,遗传算法函数优化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复