matlab中crtbase,BaseV=crtbase(NVAR,2);怎么定义crtbase

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

global n;

n=1008; %仓库总货位数

F=[];

F=xlsread('基础数据','B7:D7'); %导入各类货品从出入口进出的平均频率

S=[];

S=xlsread('基础数据','B3:D3'); %导入各类货品需要的存储空间矩阵

D1=[];

D1=xlsread('基础数据','A1:A1008');

D=D1'; %导入货位到出入口的距离矩阵

%%遗传过程

NIND=100; %个体数目

MAXGEN=100; %最大遗传代数

NVAR=3*n; %变量个数

GGAP=1; %代沟

trace =[]; %性能跟踪

BaseV=crtbase(NVAR,2);

[Chrom,Lind,BaseV]=crtbp(NIND, NVAR, BaseV); %创建实值种群

x=Chrom;

gen=1;

Lamda=2;

while gen< MAXGEN

Objv=Objvfa(x(:,:),Lamda); %引入罚函数的目标函数

Fitnv=ranking(Objv); %排序分配适应度

Selch=select('rws',Chrom(1:NIND,:),Fitnv,GGAP); %选择

Selch=recombin('recdis',Selch,0.65); %离散重组方法交叉

Chrom=mut(Selch,0.05); %离散变异方法变异

x=Chrom;

trace(gen,1)=min(f(x));

trace(gen,2)=sum(f(x))/length(f(x));

gen=gen+1

Lamda=Lamda+2;

end

LF=f(x);

minf=min(LF) %输出近似最优值

a=find(LF==minf)

v=x(a,:) %输出近似最优解

%%迭代目标函数性能跟踪图

figure(1);clf;

plot(trace(:,1));hold on;

plot(trace(:,2)'-.');

plot(trace(:,1)'.');

plot(trace(:,2)'.');grid;

legend('解的变化','种群均值的变化');

xlabel('迭代次数'); ylabel('目标函数值');

%%若干次迭代的目标函数值性能跟踪图

figure⑵;clf;

plot(f(x)'r-.');grid;

%%目标函数M文件

function f1c=f1(x)

global n;

n=1008;

D1=xlsread('基础数据','A1:A1008');

D=D1';

f1c=0;

for j=1:n

f1c=f1c+(19.43*D(1,j)/235).*x(:,j);

end

function f2c=f2(x)

global n;

n=1008;

D1=xlsread('基础数据','A1:A1008');

D=D1';

f2c=0;

for j=n+1:2*n

f2c=f2c+(12.49*D(1,j-n)/300).*x(:,j);

end

function f3c=f3(x)

global n;

n=1008;

D1=xlsread('基础数据','A1:A1008');

D=D1';

f3c=0;

for j=2*n+1:3*n

f3c=f3c+(4.89*D(1,j-2*n)/473).*x(:,j);

end

function fc=f(x)

fc=f1(x)+f2(x)+f3(x);

罚函数Objvfa(x)的M文件Objvfei.m的代码:

function Objvfac=Objvfa(x,Lamda)

global n;

n=1008;

NIND=100;

S=xlsread('基础数据','B3:D3'); %导入各类货品需要的存储空间矩阵

st11=0;

for k=1:n

st11=st11+x(:,k);

end

st12=0;

for k=n+1:2*n

st12=st12+x(:,k);

end

st13=0;

for k=2*n+1:3*n

st13=st13+x(:,k);

end

for i=1:NIND

if st11(i,1)==S(1,1)

p1(i,1)=0;

else p1(i,1)=1;

end

if st12(i,1)==S(1,2)

p2(i,1)=0;

else p2(i,1)=1;

end

if st13(i,1)==S(1,3)

P3(i,1)=0;

else p3(i,1)=1;

end

end

st2=zeros(NIND,n);

qj=zeros(NIND,n);

Objvfac=zeros(NIND,1);

for j=1:n

st2(:,j)=x(:,j)+x(:,j+n)+x(:,j+2*n);

for i=1:NIND

if st2(i,j)==1

qj(i,j)=0;

else qj(i,j)=1;

end

end

end

Obiao1=mapminmax(f(x)',0,1);

Obiao2=mapminmax(abs(st11(:,1)-S(1,1))',0,1);

Obiao3=mapminmax(abs(st12(:,1)-S(1,2))',0,1);

Obiao4=mapminmax(abs(st13(:,1)-S(1,3))',0,1);

Obiao5=mapminmax(abs(st2-1)',0,1);

Objvfac=Obiao1'+Lamda*(p1(:,1).*Obiao2'+p2(:,1).*Obiao3'+p3(:,1).*Obiao4'+sum(qj.*Obiao5',2));

运行时说crtbase未定义,怎么定义呢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值