为什么unifrnd(lb,ub,[nPop,D])出错?
15次观看(过去30天)
显示旧注释
Sadiq阿克巴
2020年12月26日
为什么下面的代码会出错?
Lb =[0 0 0 0];Ub =[10 10 PI PI];nPop = 30;D = 4;
unifrnd(磅,乌兰巴托,[nPop D])
使用unifrnd时出错
大小信息不一致。
答案(1)
埃米尔哈姆萨
2020年12月26日
这不能在单一呼叫unifrnd中完成。你需要一个for循环
Lb = [0 0 0 0];Ub =[10 10 PI PI];nPop = 30;
D = numel(lb);
M = rand(nPop, D);
为i = 1:D
M(:,i) = unifrnd(lb(i),ub(i),[nPop,1]);
结束
31日评论
Sadiq阿克巴
2020年12月26日
非常感谢你,亲爱的Ameer Hamza。但是现在它给出了另一个错误。你能帮我为下面给出的适应度函数运行以下算法吗?
函数[xmin,fmin,histout] = GQPSO(fun,D,nPop,lb,ub,maxit,maxeval)
%的输入:
% fun:优化的函数句柄
% D:问题维度(变量数量)
% nPop:虫群中粒子的数量
% lb:下限约束
% ub:上限约束
% maxit:最大迭代次数
maxeval:函数的最大计算次数
%输出:
% xmin:找到最佳解决方案
% fmin:函数在最优解处的值,f(xmin)
% histout:迭代计算函数值和适应度值的记录
%的例子:
% fun = @griewankfcn;
% d = 30;
% nPop = 50;
% lb = -600;
% ub = 600;
% maxit = 1000;
% maxeval = 10000*D;
% [xmin,fmin,histout] = GQPSO(fun,D,nPop,lb,ub,maxit,maxeval);
%或直接:
% [xmin,fmin,histout] = GQPSO(@griewankfcn,30,50,-600,600,1000,10000*30);
% QPSO参数:
W1 = 0.5;
W2 = 1.0;
C1 = 1.5;
C2 = 1.5;
nPop = 30;%由我
%初始化解决方案
% x = unifrnd(lb,ub,[nPop,D]);这一行出了错,所以问了问题。
%Mathworks网站,见下文
%修正由Ameer Hamza sab从Mathworks网站
x = rand(nPop, D);
为i = 1:D
x(:,i) = unifrnd(lb(i),ub(i),[nPop,1]);
结束
评估初始种群
Pbest = x;
Histout = 0 (maxit,2);
F_x = feval(fun,x);
fval = nPop;
F_pbest = f_x;
[~,g] = min(f_pbest);
Gbest = pbest(g,:);
F_gbest = f_pbest(g);
It = 1;
Histout (it,1) = fval;
Histout (it,2) = f_gbest;
而它< maxit && fval < maxeval
Alpha = (w2 - w1) * (maxit - it)/maxit + w1;
mbest = sum(pbest)/nPop;
为i = 1:nPop
fi = abs(randn(1,D));%高斯QPSO (Coelho, 2010)
p = (c1 * fi。* pb(我:)+ c2 * (1-fi)。* gb) / (c1 + c2);
u = abs(randn(1,D));%高斯QPSO (Coelho, 2010)
B = alpha*abs(x(i,:) - mbest);
V = log(1./u);
如果Rand < 0.5
X (i,:) = p + b .* v;
其他的
X (i,:) = p - b .* v;
结束
%保持界限
X (i,:) = max(X (i,:),lb);
X (i,:) = min(X (i,:),ub);
F_x (i) = fun(x(i,:));
Fval = Fval + 1;
如果F_x (i) < f_pbest(i)
Pbest (i,:) = x(i,:);
F_pbest (i) = f_x(i);
结束
如果F_pbest (i) < f_gbest
Gbest = pbest(i,:);
F_gbest = f_pbest(i);
结束
结束
It = It + 1;
Histout (it,1) = fval;
Histout (it,2) = f_gbest;
结束
Xmin = gbest;
Fmin = f_gbest;
Histout (it+1:end,:) = [];
数字
semilogy (histout (: 1) histout (:, 2))
标题(“高斯Q-PSO”)
包含(“功能评价”)
ylabel (“健身”)
网格在
结束
适应度函数是:
函数= myfitness (b)
U =[1 2 3 4];
V =[b(1) b(2) b(3) b(4)];
着干活= uv
=(着干活)之和;
结束
当我在命令窗口中键入以下命令时,它不运行
>>[xmin,fmin,histout] = GQPSO(@myfitness,4,30,[0 000],[10 10 pi pi],100,10000*4)
Sadiq阿克巴
2020年12月26日
非常感谢您的回复。当我在命令窗口中输入上述命令时,我遇到以下错误:
>> [xmin,fmin,histout] = GQPSO(@myfitness,4,30,[0 000],[10 10 pi pi],100,10000*4)
尝试访问f_pbest(2);指数越界,因为numel(f_pbest)=1。
错误在GQPSO(第99行)
如果F_x (i) < f_pbest(i)
沃尔特·罗伯森
2020年12月26日
适应度函数将接收到一个2D数组,其中行数对应总体大小,列对应变量,它将返回一个与总体大小相同的向量。相反,适应度函数期望一个包含四个元素的向量作为输入,并返回一个标量。
函数= myfitness (b)
U = [1 2 3 4];
Out1 = u-b;%需要R2016b或更高版本
Out = sum(out1.^2,2);
结束
Sadiq阿克巴
2020年12月26日
谢谢你亲爱的Walter robertson的第二次回复。但是在您的更改之后,它仍然会给出以下错误:
[xmin,fmin,histout] = GQPSO(@myfitness,4,30,[0 000],[10 10 pi pi],100,10000*4)
指数超过矩阵维数。
错误在GQPSO(第101行)
如果F_x (i) < f_pbest(i)
沃尔特·罗伯森
2020年12月27日
Sadiq阿克巴
2020年12月27日
甚至我也为适应度函数运行它,但它给了我一个错误:
函数e = obj (b)
全球u
th =π/ 180;
U =[2 7 50*th 85*th];所有四个向量的%角
%%%%%%%%%%%%%%%
交换向量b.从Mathworks网站获得帮助
%%%%%%%%%%%%%%%
[~, ix] = sort(u);
[~, ix1(ix)] = sort(b);
B = B (ix1);
[~ C] =大小(b);
P = C / 2;
M = 2 * C;
% M = 10;
xo = 0(1米);
为k = 1: M
为i = 1: P
xo (k) = xo (k) + u(我)* exp (1 * (k - 1) *π* cos (u (P + i)));
结束
结束
xe = 0(1米);
为k = 1: M
为i = 1: P
xe (k) = xe (k) + b(我)* exp (1 * (k - 1) *π* cos (b (P + i)));
结束
结束
美国广播公司(abc) = 0.0;
为m1 = 1: M
校正= + (abs (xo (m1) xe (m1))) ^ 2;
结束
美国广播公司abc / M =;
e =美国广播公司(abc);
它仍然给我以下错误:
下标赋值维度不匹配。
obj中的错误(第12行)
[~, ix1(ix)] = sort(b);
GQPSO中的错误(第56行)
F_x = feval(fun,x);
沃尔特·罗伯森
2020年12月27日
我看R2020b和原来的代码没有问题。
你能确认你们用的是R2016b而不是R2016a吗?适应度函数我发布需要R2016b或更高版本。
[xmin,fmin,histout] = GQPSO(@myfitness,4,30,[0 000],[10 10 pi pi],100,10000*4)
xmin =
1×4
0.9174 1.6567 3.1416 3.1416
Fmin = 0.8816
histout =
100×2
30.000 9.6990 60.0000 5.5803 90.0000 1.2189 120.0000 1.2189 150.0000 1.2189 180.0000 1.2189 210.0000 1.2189 240.0000 1.2189 270.0000 1.2189 300.0000 1.2189
●
函数= myfitness (b)
U = [1 2 3 4];
Out1 = u-b;%需要R2016b或更高版本
Out = sum(out1.^2,2);
结束
函数[xmin,fmin,histout] = GQPSO(fun,D,nPop,lb,ub,maxit,maxeval)
%的输入:
% fun:优化的函数句柄
% D:问题维度(变量数量)
% nPop:虫群中粒子的数量
% lb:下限约束
% ub:上限约束
% maxit:最大迭代次数
maxeval:函数的最大计算次数
%输出:
% xmin:找到最佳解决方案
% fmin:函数在最优解处的值,f(xmin)
% histout:迭代计算函数值和适应度值的记录
%的例子:
% fun = @griewankfcn;
% d = 30;
% nPop = 50;
% lb = -600;
% ub = 600;
% maxit = 1000;
% maxeval = 10000*D;
% [xmin,fmin,histout] = GQPSO(fun,D,nPop,lb,ub,maxit,maxeval);
%或直接:
% [xmin,fmin,histout] = GQPSO(@griewankfcn,30,50,-600,600,1000,10000*30);
% QPSO参数:
W1 = 0.5;
W2 = 1.0;
C1 = 1.5;
C2 = 1.5;
nPop = 30;%由我
%初始化解决方案
% x = unifrnd(lb,ub,[nPop,D]);这一行出了错,所以问了问题。
%Mathworks网站,见下文
%修正由Ameer Hamza sab从Mathworks网站
x = rand(nPop, D);
为i = 1:D
x(:,i) = unifrnd(lb(i),ub(i),[nPop,1]);
结束
评估初始种群
Pbest = x;
Histout = 0 (maxit,2);
F_x = feval(fun,x);
fval = nPop;
F_pbest = f_x;
[~,g] = min(f_pbest);
Gbest = pbest(g,:);
F_gbest = f_pbest(g);
It = 1;
Histout (it,1) = fval;
Histout (it,2) = f_gbest;
而它< maxit && fval < maxeval
Alpha = (w2 - w1) * (maxit - it)/maxit + w1;
mbest = sum(pbest)/nPop;
为i = 1:nPop
fi = abs(randn(1,D));%高斯QPSO (Coelho, 2010)
p = (c1 * fi。* pb(我:)+ c2 * (1-fi)。* gb) / (c1 + c2);
u = abs(randn(1,D));%高斯QPSO (Coelho, 2010)
B = alpha*abs(x(i,:) - mbest);
V = log(1./u);
如果Rand < 0.5
X (i,:) = p + b .* v;
其他的
X (i,:) = p - b .* v;
结束
%保持界限
X (i,:) = max(X (i,:),lb);
X (i,:) = min(X (i,:),ub);
F_x (i) = fun(x(i,:));
Fval = Fval + 1;
如果F_x (i) < f_pbest(i)
Pbest (i,:) = x(i,:);
F_pbest (i) = f_x(i);
结束
如果F_pbest (i) < f_gbest
Gbest = pbest(i,:);
F_gbest = f_pbest(i);
结束
结束
It = It + 1;
Histout (it,1) = fval;
Histout (it,2) = f_gbest;
结束
Xmin = gbest;
Fmin = f_gbest;
Histout (it+1:end,:) = [];
数字
semilogy (histout (: 1) histout (:, 2))
标题(“高斯Q-PSO”)
包含(“功能评价”)
ylabel (“健身”)
网格在
结束
沃尔特·罗伯森
2020年12月27日
关于你的新适应度函数obj:正如我上面发布的:
适应度函数将接收到一个2D数组,其中行数对应总体大小,列对应变量,它将返回一个与总体大小相同的向量。
现在让我们检查一下您的代码:
U =[2 7 50*th 85*th];所有四个向量的%角
这是一个由4个元素组成的向量。
%%%%%%%%%%%%%%%
交换向量b.从Mathworks网站获得帮助
%%%%%%%%%%%%%%%
[~, ix] = sort(u);
这将返回向量[3 4 1 2]到ix。
[~, ix1(ix)] = sort(b);
在这里,您要求对一个具有30行4列的2D数组进行排序。它的排序信息将需要30 x 4个输出位置,但ix1(ix)将是一个包含4个位置的向量。此外,sort()在默认情况下沿着第一个非单例维度操作,这将是30 x 4数组的第一个维度,但似乎更有可能是沿着行排序,这将是第二个维度,因为您期望的是长度为4的数组。
对于这一步,我建议相反
[~, ix1] = sort(b, 2);
Ix1 = Ix1 (:,ix);
你会得到一个二维数组,其中每一行都是对应行b的排序顺序
然后
B = B (ix1);
是一个问题,因为它不按行重新排序。
现在. .代码到底想做什么??
让我们来试验一下:
=π/ 180
U =[2 7 50*th 85*th]
[~, ix] = sort(u)
B = [4 1 3 2]
[~, ix1] = sort(b)
Ix1 = Ix1 (:,ix)
New_b = b(ix1)
B_2 = [0 17 -11 -6]
[~, ix1_2] = sort(b_2)
Ix1_2 = Ix1_2 (:,ix)
New_b_2 = b_2(ix1)
Ix可以写成[3 4 1 2]
New_b的结果是[3 4 1 2]
New_b_2是[0 17 -11 -6]
T = sort([b;b_2],2)
t(第九:,)
结果是
3 4 1 2
0 17 -11 -6
所以在我看来,它似乎想要每行对b排序,然后根据u的排序重新排序,在这种情况下,我建议
th =π/ 180;
U =[2 7 50*th 85*th];
[~, ix] = sort(u);
Sort_b = sort(b,2);
B = sort_b(:,ix);
Sadiq阿克巴
2020年12月27日
非常感谢Walter robertson的第4次回复。是的,我使用的是Matlalab R2016b。这次我用你上面的代码替换了交换部分,即。
函数e = obj (b)
全球u
th =π/ 180;
U =[2 7 50*th 85*th];所有四个向量的%角
%%%%%%%%%%%%%%%
交换向量b.从Mathworks网站获得帮助
%%%%%%%%%%%%%%%
[~, ix] = sort(u);
Sort_b = sort(b,2);
B = sort_b(:,ix);
[~ C] =大小(b);
P = C / 2;
M = 2 * C;
% M = 10;
xo = 0(1米);
为k = 1: M
为i = 1: P
xo (k) = xo (k) + u(我)* exp (1 * (k - 1) *π* cos (u (P + i)));
结束
结束
xe = 0(1米);
为k = 1: M
为i = 1: P
xe (k) = xe (k) + b(我)* exp (1 * (k - 1) *π* cos (b (P + i)));
结束
结束
美国广播公司(abc) = 0.0;
为m1 = 1: M
校正= + (abs (xo (m1) xe (m1))) ^ 2;
结束
美国广播公司abc / M =;
e =美国广播公司(abc);
我再次运行它,但这一次它给出了以下错误:
索引超过矩阵维数。
GQPSO中的错误(第60行)
F_pbest = min(f_x(i));
Sadiq阿克巴
2020年12月27日
更进一步,亲爱的沃尔特·罗伯逊!
我将适应度函数应用于几种算法。这从来没有给我带来任何问题。但是这样会产生错误。所以我希望你能改变算法而不是改变适应度函数,这样会很好。因为如果适应度函数改变了,其他算法就会出问题。我的意思是说,到目前为止,我的适应度函数对几个算法都没有问题,但它给出了误差。所以如果你改变它,它又会给其他算法带来问题。所以我的请求是,请对给定的算法做一些修改,以便它能运行适应度函数。我希望你能理解。再次感谢你。
沃尔特·罗伯森
2020年12月27日
正如我之前两次发布的:
适应度函数将接收到一个2D数组,其中行数对应于总体大小,列对应于变量,它将返回
一个向量
和?一样大
人口规模
.
obj返回的是标量,而不是长度为30的向量。
不可能改变算法来解释返回错误结果的目标函数。
沃尔特·罗伯森
2020年12月27日
xe (k) = xe (k) + b(我)* exp (1 * (k - 1) *π* cos (b (P + i)));
b有多少行?这行访问了b的多少行?
代码在哪里为b中的每一行生成一个输出?
Sadiq阿克巴
2020年12月27日
编辑:Sadiq阿克巴
2020年12月27日
非常感谢您的及时回复,亲爱的沃尔特罗伯森!
在适应度函数中,u是我想要的向量,每个算法都会发送一个与u大小相同的向量,因为我把u向量的维度赋给了算法。然后算法生成30或50的随机种群取决于我在那里设置多少。然后从这个种群中,算法将一个成员发送到我的算法中确定适应度并保存在那里的一个变量中。然后the algorithm sends next memebr of that population to my fitness function and again fitness of that is found and is saved in that old varibale and so on. So up till now my fitness function runs with all the algorithms, but it gives problem here. So can't you make such changes that the algorithm sends one row vector instead of entire population to my fitness funtion as before with other algorithms?
因为我的u向量是一个4元素的行向量,所以算法必须让b和我的向量u一样大,这样它就可以工作了。
沃尔特·罗伯森
2020年12月27日
读你的代码!!
x = rand(nPop, D);
为i = 1:D
x(:,i) = unifrnd(lb(i),ub(i),[nPop,1]);
结束
所以x是完整的矩阵,而不是矩阵的一行。
F_x = feval(fun,x);
然后在这里调用函数
整个
x矩阵。
目标函数
必须
为每个填充成员返回一个值。
Sadiq阿克巴
2020年12月27日
谢谢您的及时回复。你说得很对,亲爱的。我理解你的理由。但我想对给定的算法做一些改变让算法一次发送完整矩阵x的一行,找到适合度并存储,然后算法发送完整矩阵x的第二行,找到适合度并存储,以此循环。
Sadiq阿克巴
2020年12月27日
大概是这样:
初始化总体/解决方案金宝搏官方网站
为i = 1: n,
索尔(我:)=磅+ (Ub-Lb)。*兰德(1 d);
健身(i) = obj (Sol(我,:));%我的适应度函数
结束
这是我从其他算法中取来的一部分给你们看。
沃尔特·罗伯森
2020年12月27日
初始化总体/解决方案金宝搏官方网站
为i = 1: n,
索尔(我:)=磅+ (Ub-Lb)。*兰德(1 d);
f_x (i) = obj (Sol(我,:));%我的适应度函数
结束
Sadiq阿克巴
2020年12月27日
谢谢你的更正。现在它的部分运行方式是:
f_x =
第1至9列
0 0 0 0 0 0 0 0 0 0 0
第10至18栏
0 0 0 0 0 0 0 0 0 0 0
第19至27列
0 0 0 0 0 0 0 0 0 0 0
第28至30列
0 0 81.9367
索引超过矩阵维数。
GQPSO中的错误(第106行)
如果f_x(i) < f_pbest(i)
Sadiq阿克巴
2020年12月27日
谢谢你一直以来的支持,亲爱的。金宝app运行后,它会给出以下结果:
f_x =
65.4690
f_x =
65.4690 - 144.7119
f_x =
65.4690 144.7119 29.7280
f_x =
65.4690 144.7119 29.7280 45.6022
f_x =
65.4690 144.7119 29.7280 45.6022 177.2501
f_x =
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253
f_x =
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983
f_x =
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193
f_x =
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
列10
121.0852
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至11列
121.0852 - 141.2146
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至12列
121.0852 141.2146 179.5222
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至13列
121.0852 141.2146 179.5222 63.1976
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至14列
121.0852 141.2146 179.5222 63.1976 124.7700
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至15列
121.0852 141.2146 179.5222 63.1976 124.7700 110.8142
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至16列
121.0852 141.2146 179.5222 63.1976 124.7700 110.8142 165.7112
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至17列
121.0852 141.2146 179.5222 63.1976 124.7700 110.8142 165.7112 86.9005
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至18栏
121.0852 141.2146 179.5222 63.1976 124.7700 110.8142 165.7112 86.9005 117.7920
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至18栏
121.0852 141.2146 179.5222 63.1976 124.7700 110.8142 165.7112 86.9005 117.7920
列19
158.4781
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至18栏
121.0852 141.2146 179.5222 63.1976 124.7700 110.8142 165.7112 86.9005 117.7920
第19至20列
158.4781 - 247.8008
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至18栏
121.0852 141.2146 179.5222 63.1976 124.7700 110.8142 165.7112 86.9005 117.7920
第19至21列
158.4781 247.8008 52.9352
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至18栏
121.0852 141.2146 179.5222 63.1976 124.7700 110.8142 165.7112 86.9005 117.7920
第19至22列
158.4781 247.8008 52.9352 143.4848
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至18栏
121.0852 141.2146 179.5222 63.1976 124.7700 110.8142 165.7112 86.9005 117.7920
第19至23列
158.4781 247.8008 52.9352 143.4848 99.6341
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至18栏
121.0852 141.2146 179.5222 63.1976 124.7700 110.8142 165.7112 86.9005 117.7920
第19至24列
158.4781 247.8008 52.9352 143.4848 99.6341 11.2423
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至18栏
121.0852 141.2146 179.5222 63.1976 124.7700 110.8142 165.7112 86.9005 117.7920
第19至25列
158.4781 247.8008 52.9352 143.4848 99.6341 11.2423 67.4893
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至18栏
121.0852 141.2146 179.5222 63.1976 124.7700 110.8142 165.7112 86.9005 117.7920
第19至26列
158.4781 247.8008 52.9352 143.4848 99.6341 11.2423 67.4893 78.8733
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至18栏
121.0852 141.2146 179.5222 63.1976 124.7700 110.8142 165.7112 86.9005 117.7920
第19至27列
158.4781 247.8008 52.9352 143.4848 99.6341 11.2423 67.4893 78.8733 90.7319
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至18栏
121.0852 141.2146 179.5222 63.1976 124.7700 110.8142 165.7112 86.9005 117.7920
第19至27列
158.4781 247.8008 52.9352 143.4848 99.6341 11.2423 67.4893 78.8733 90.7319
列28
94.8255
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至18栏
121.0852 141.2146 179.5222 63.1976 124.7700 110.8142 165.7112 86.9005 117.7920
第19至27列
158.4781 247.8008 52.9352 143.4848 99.6341 11.2423 67.4893 78.8733 90.7319
第28至29列
94.8255 - 136.7698
f_x =
第1至9列
65.4690 144.7119 29.7280 45.6022 177.2501 65.6253 149.4983 184.3193 110.8635
第10至18栏
121.0852 141.2146 179.5222 63.1976 124.7700 110.8142 165.7112 86.9005 117.7920
第19至27列
158.4781 247.8008 52.9352 143.4848 99.6341 11.2423 67.4893 78.8733 90.7319
第28至30列
94.8255 136.7698 152.8737
索引超过矩阵维数。
GQPSO中的错误(第106行)
如果f_x(i) < f_pbest(i)
>>
Sadiq阿克巴
2020年12月28日
非常感谢沃尔特·罗伯森的努力。我运行了它。现在起作用了。我得到了这个图形。但是当我从“xmin”和“fmin”中删除分号以查看它们的值时。其中xmin是估计的向量,它必须近似于obj中的u向量。m”文件。但是我发现它和向量u不一样。这些值有很多变化,有时它们的值也会改变位置。你可以看到我的不同运行:
> > myfit_driver
xmin =
0.9932 2.1081 2.9842 3.1416
fmin =
0.7489
> > myfit_driver
xmin =
0.9396 1.9000 3.0854 3.1416
fmin =
0.7578
> > myfit_driver
xmin =
0.9186 1.9747 2.9763 3.1416
fmin =
0.7447
> > myfit_driver
xmin =
1.0536 2.0371 3.1416 3.1416
fmin =
0.7612
> > myfit_driver
xmin =
1.0377 2.0226 2.8995 3.1416
fmin =
0.7489
> > myfit_driver
xmin =
0.9598 1.9679 2.8777 3.1416
fmin =
0.7545
> > myfit_driver
xmin =
1.0721 1.8975 3.0554 3.1416
fmin =
0.7556
> > myfit_driver
xmin =
1.0148 1.8979 2.9469 3.1416
fmin =
0.7503
> > myfit_driver
xmin =
0.9659 2.0040 3.1416 3.1416
fmin =
0.7581
> > myfit_driver
xmin =
0.9647 2.0892 3.0875 3.1416
fmin =
0.7537
> > myfit_driver
xmin =
0.8858 1.9868 3.0025 3.1416
fmin =
0.7501
> > obj_driver
xmin =
1.7087 5.7792 1.4902 0.8463
fmin =
1.9548
> > obj_driver
xmin =
3.0668 5.6929 0.8875 1.4876
fmin =
3.0838
> > obj_driver
xmin =
1.4781 5.9054 1.5567 0.8601
fmin =
1.7798
> > obj_driver
xmin =
2.4717 8.4429 0.8501 1.4941
fmin =
3.8352
> > th =π/ 180;
U =[2 7 50*th 85*th]
u =
2.000 7.0000 0.8727 1.4835
> > obj_driver
xmin =
1.4817 7.0154 0.9122 1.5292
fmin =
0.7388
> > obj_driver
xmin =
6.6405 2.0153 0.8459 1.4795
fmin =
0.5694
>>
亲爱的,现在该怎么办?
Sadiq阿克巴
2020年12月28日
此外,当我咆哮它与我自己的旧适应度函数(在你的改变之前),它再次给出错误为:
下标赋值维度不匹配。
fun2sn0中的错误(第13行)
[~, ix1(ix)] = sort(b);% temp通过算法存储随机生成的向量“best”
GQPSO中的错误(第54行)
F_x (i) = feval(fun,x(i,:));
myfit_driver错误(第2行)
[xmin,fmin,histout] = GQPSO(@fun2sn0,4,30,[0 000],[10 10 pi pi],2000,10000*4);
发生错误
由于对页面所做的更改,无法完成操作。重新加载页面以查看其更新后的状态。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。