matlab遗传算法进行函数优化,遗传算法函数优化

各位前辈们好,刚接触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 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

2accfbffacfd91f1c66c7b5def6e4378.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值