%第一个脚本
clear all;close all;clc;
%宽和长%
width=78;
height=52;
w1=0.6;
w2=0.4;
%计算dmax%
dmax=width+height;
%运输成本 %
c=0.01;
%距离矩阵%
D = zeros(12,12);
%关联因子bij矩阵%
B = zeros(12,12);
u1=0;
u2=0;
%非物流关系矩阵%
T=[
0 3 0 0 1 2 0 0 0 0 1 0;
0 0 1 0 0 -1 0 0 0 2 0 0;
0 0 0 3 0 -1 0 0 0 2 0 0;
0 0 0 0 4 -1 0 0 0 0 0 0;
0 0 0 0 0 3 0 0 0 1 0 0;
0 0 0 0 0 0 2 -1 -1 2 -1 -1;
0 0 0 0 0 0 0 4 0 0 0 0;
0 0 0 0 0 0 0 0 0 1 3 0;
0 0 0 0 0 0 0 0 0 2 0 0;
0 0 0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 0 0 4;
0 0 0 0 0 0 0 0 0 0 0 0;
];
%设定物流量%
Q=[
0 50000 1258 0 8400 13600 0 0 0 0 9625 0;
0 0 6600 0 0 0 0 0 0 34800 0 0;
0 0 0 87500 0 0 0 0 0 41600 0 0;
0 0 0 0 105000 0 0 0 0 0 0 0;
0 0 0 0 0 92000 0 0 0 6400 0 0;
0 0 0 0 0 0 36000 0 0 28700 0 0;
0 0 0 0 0 0 0 93000 0 0 0 0;
0 0 0 0 0 0 0 0 910 6300 79980 0;
0 0 0 0 0 0 0 0 0 16800 0 0;
0 0 0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 0 0 93600;
0 0 0 0 0 0 0 0 0 0 0 0;
];
%% 计算u1 %%
cd=c*dmax;
for i=1:10
for j=i+1:11
u1=u1+cd*Q(i,j);
end
end
u1=w1/u1;
%% 计算u2 %%
for i=1:10
for j=i+1:11
u2=u2+T(i,j);
end
end
u2=w2/u2;
%第二个脚本
function fit=compute_fit(par)
MAX=0;
A1=0;
A2=0;
%% 固定系数
u1=1.4e-6;
u2=1.5e-2;
%% 计算参数
[c Q T D B]=load_data(par);
l=[20 35 25 10 20 22 22 20 8 10 28];
w=[20 15 22 28 15 28 25 28 25 15 22];
l=l-3*ones(1,11);
w=w-3*ones(1,11);
H=80;
W=90;
flag=0;
%% 计算第一项和第二项 目标函数第一项
for i=1:10
for j=i+1:11
A1 = A1 + c*Q(i,j)*D(i,j);
A2 = A2 + c*T(i,j)*B(i,j);
end
end
%% 计算约束
for i=1:10
pp1 =par.x(i)-l(i)/2;
pp2 =par.y(i)-w(i)/2;
pp3 =H-l(i)/2-par.x(i);
pp4 =W-w(i)/2-par.y(i);
if ( pp1<0 || pp2<0 || pp3<0 || pp4<0 )
flag=1;
break;
end
for j=1:10
if (i==j)
continue;
end
kk1=max([l(i)/2 + l(j)/2 - abs(par.x(i) - par.x(j)),0]);
kk2=max([w(i)/2 + w(j)/2 - abs(par.y(i) - par.y(j)),0]);
if ((kk1*kk2) ~= 0)
flag = 1;
break;
end
end
if ( flag == 1)
break;
end
end
%% 计算适应度
if (flag == 1)
fit=-1;
else
fit=1/(MAX + u1*A1 + u2*A2);
end
end

我的解答思路和尝试过的方法
看起来是第二个脚本在引用第一个脚本的参数时出现了问题,尝试过改第一个脚本的文件名,不起作用
分析第二个脚本参数不足的原因并给出修改意见,使第二个脚本顺利运行,最终得到fit的值
第二个脚本你需要输入变量par,且这个变量是个结构体,里面有x和y即par.x和par.y的值
然后命令行是:
fit=compute_fit(par)
没有par变量,不用命令行,直接运行是行不通的
怎样输入变量par呢,可以给一个示范吗
另外,您所说的x和y即par.x和par.y的值是单个数值还是类似下面这样的数据组呢
x=[56.4015 23.1922 52.7571 44.5785 70.9325 52.1415 60.9192 40.8203 39.5787 62.3682 19.3412]
y=[18.3244 20.5364 32.5016 56.7259 55.1850 14.3259 32.9592 39.9782 33.9240 47.1273 45.5385]
par.x=[-2.0802 -0.6835 -4.8451 4.8406 -3.3283 -3.9378 -1.2759 -3.0188 -0.1031 -1.6051 4.5163]
par.y=[4.2033 -4.4732 2.3786 -2.3088 -0.7716 0.4787 4.4274 -0.8226 4.8305 -1.9855 2.0110]