使用遗传算法优化的人工免疫系统
9的观点(30天)
显示旧的评论
BR
2018年10月15日
DCA的定义问题(AIS)给出了输出函数,
![](http://www.tianjin-qmedu.com/ch/matlabcentral/answers/uploaded_files/197943/image.png)
提供三种不同的输出输入权重矩阵。
输出的条件
如果C (csm) >刺& & C (mDC) > C (smDC)
C = 1;
其他的
C = 0;
结束
Cp =数据(目标1)
c =数据(目标2)
Cd =数据(目标,3)为目标的逻辑向量标签
显然,我有一个目标数据应该满足此条件,只要我正确优化权重。
所以,为此我为GA适应度函数创建下面的代码
函数[s、c] = DCA_weights (W、数据目标)
c (1) = 0.5 * (W(1) *数据(目标1)+ W(3) *数据(目标,3)+ W(2) *数据(目标2))/ W (W (1) + (2) + W (3));
c (2) = 0.5 * (W(1) *数据(目标1)+ W(3) *数据(目标,3)+ W(2) *数据(目标2))/ W (W (1) + (2) + W (3));
c (3) = 0.5 * (W(1) *数据(目标1)+ W(3) *数据(目标,3)+ W(2) *数据(目标2))/ W (W (1) + (2) + W (3));
s = c (2) / c (3);%的比例减少C (smDC) / (CmDC)
和约束函数(在解决C (csm) <刺)
函数测查[c] = DCA_constraint_GA (W、数据目标)
c =(9.6 -数据(目标1))* W(1) +(9.6 -数据(目标2))* W(2) +(9.6 -数据(目标,3))* W (3);
测查= [];
我已经定义为权值上下界(6 6 6)和上界(6 6 6)
和最后的代码
ObjectiveFunction = @DCA_weights;
据nvar = 3;%的变量
磅= (6 6 6);%下界
乌兰巴托= (6 6 6);%上界
ConstraintFunction = @DCA_constraint_GA;
[x, fval] = ga(据nvar ObjectiveFunction,[],[],[],[],磅,乌兰巴托,ConstraintFunction);
但我总是得到以下的回应,
没有足够的输入参数的
我认为可能会有一个小错误,我失踪了,请帮助。
谢谢提前
0评论
接受的答案
斯蒂芬
2018年10月15日
编辑:斯蒂芬
2018年10月15日
你好,
解决像ga只有通过他们的目标函数只有一个参数——在你的情况中w .如果你的函数需要额外的参数你必须通过另一种方式。看到
传递额外的参数
看看这是最适合你的方法。我更喜欢嵌套函数,但还有其他的方法。不推荐使用全局变量。
如果你解决这个问题,它应该工作。
一般的例子:
%调用外部函数开始计算
outer_fcn
%定义外部函数包含额外的变量/值:
函数outer_fcn
data =…;
目标=…;
% ga在外部函数:
ObjectiveFunction = @DCA_weights;
据nvar = 3;%的变量
磅= (6 6 6);%下界
乌兰巴托= (6 6 6);%上界
ConstraintFunction = @DCA_constraint_GA;
[x, fval] = ga(据nvar ObjectiveFunction,[],[],[],[],磅,乌兰巴托,ConstraintFunction);
%(1非线性约束函数。内部函数)
函数测查[c] = DCA_constraint_GA (W、数据目标)
c =(9.6 -数据(目标1))* W(1) +(9.6 -数据(目标2))* W(2) +(9.6 -数据(目标,3))* W (3);
测查= [];
结束
%目标函数(2。内部函数)
函数[s、c] = DCA_weights (W、数据目标)
c (1) = 0.5 * (W(1) *数据(目标1)+ W(3) *数据(目标,3)+ W(2) *数据(目标2))/ W (W (1) + (2) + W (3));
c (2) = 0.5 * (W(1) *数据(目标1)+ W(3) *数据(目标,3)+ W(2) *数据(目标2))/ W (W (1) + (2) + W (3));
c (3) = 0.5 * (W(1) *数据(目标1)+ W(3) *数据(目标,3)+ W(2) *数据(目标2))/ W (W (1) + (2) + W (3));
s = c (2) / c (3);%的比例减少C (smDC) / (CmDC)
结束
%外部函数的结束
结束
致以最亲切的问候
斯蒂芬
28日评论
BR
2018年10月15日
嘿,斯蒂芬,谢谢你的回复。呜,我试图传递多个参数GA当我试图优化神经网络,它工作。我创建了下面的代码;
负载cancer_dataset.mat
选择= optimoptions (“gamultiobj”);
输入= cancerInputs;
目标= cancerTargets;
我[N] =大小(输入);% 699 [9]
[O N] =大小(目标);
H = 10;
西北= H (I + 1) * + * O (H + 1);
h = @ (x) mse_test_NN (x,净投入,目标);
%的神经元数量
n = 10;
%建立一个神经网络
网= feedforwardnet (n);
%配置数据集的神经网络
网=配置(净、输入目标);
PopulationSize_Data = 200;
选择= optimoptions(选项,“PopulationSize”,PopulationSize_Data);
选择= optimoptions(选项,“CreationFcn”,@gacreationnonlinearfeasible);
选择= optimoptions(选项,“SelectionFcn”,{@selectiontournament []});
选择= optimoptions(选项,“CrossoverFcn”,{@crossoverintermediate []});
选择= optimoptions(选项,“MutationFcn”,{@mutationuniform []});
选择= optimoptions(选项,“显示”,“关闭”);
[x_ga_opt, err_ga] = ga (h, Nw,选项);
为什么它现在不工作吗? ?
是因为我创建函数的处理,但又约束独立,所以你认为我应该创建另一个函数处理约束。
谢谢
斯蒂芬
2018年10月15日
编辑:斯蒂芬
2018年10月15日
为什么它现在不工作吗? ?
看到你的代码行:
h = @ (x) mse_test_NN (x,净投入,目标);
所以你无意识地在这种情况下,“选择”这种方式通过ga的额外参数。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
所以你认为我应该创建另一个函数处理约束
因为你的约束条件和目标函数是有点多的代码放在一个函数处理我建议做像我写在我的回答和使用嵌套的函数。
离开他们,但对他们做一个外部函数,调用包括ga和额外的参数中给出。你会发现的变量发生在两个(内部和外部函数)将彩色的浅蓝色。这是你想要的。这是另一个例子
fsolve
像一幅画,让你明白我的意思:
![](http://www.tianjin-qmedu.com/ch/matlabcentral/answers/uploaded_files/193189/image.jpeg)
。
所有的浅蓝色的变量是额外的参数传递给目标函数的嵌套函数。注意,目标函数只取决于x(从解算器)-所有其他变量是“已知”,因为嵌套的结构功能。
我希望这帮助。
BR
2018年10月16日
斯蒂芬
2018年10月16日
编辑:斯蒂芬
2018年10月16日
另一个问题我想知道的是,数据的值(目标,[1,2,3])不仅仅是一个值的一个向量的值。所以,我该如何处理这个问题?
运行代码,然后在命令行输入,例如:
> >数据(目标,[1,2,3])
ans =
0.7779 -3.4300 1.7461
1.6822 3.4000 -0.1083
3.1000 1.9061 0.5777
-2.3891 -1.5500 -4.0100
3.9900 0.6235 1.1069
-0.9830 0.6557 4.2000
> >数据(目标1)
ans =
0.7779
1.6822
3.1000
-2.3891
3.9900
-0.9830
所以你可以看到数据(目标1)是一个矢量。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
嘿,斯蒂芬,很抱歉打扰了。我创建了两个独立的处理相同,它仍然不工作。我得到以下错误:
好消息是,你的函数处理似乎工作一般就我所看到的。
如果我运行代码错误:
> > DCA_sphere_GA
不足够的输入参数。
错误在DCA_weights(第2行)
c (1) = 0.5 * (W(1) *数据(目标1)+ W(3) *数据(目标,3)+ W(2) *数据(目标2))/ W (W (1) + (2) + W (3));
错误在DCA_sphere_GA > @ (W) DCA_weights (W,数据)
错误在createAnonymousFcn > @ (x) fcn (x, FcnArgs{:})(11行)
fcn_handle = @ (x) fcn (x, FcnArgs {:});
错误在gacon(23行)
迭代。f = FitnessFcn (Iterate.x ');
错误在ga(第405行)
[x, fval exitFlag、输出人口,分数)= gacon(据nvar FitnessFcn,…
错误在DCA_sphere_GA(42)行
[x, fval] = ga (h,据nvar,[]、[][],[],磅,乌兰巴托,h1);
这是由于DCA_weights取决于W,数据和目标,但你的函数处理不叫他们所有人。你该怎么做:
h = @ (W) DCA_weights (W、数据);
而不是:
h = @ (W) DCA_weights (W、数据目标);
如果我做这个调整,似乎想要运行权重函数,然后有一个新的错误:
不能执行任务,因为指数左边与右边的大小不兼容。
错误在DCA_weights(第2行)
c (1) = 0.5 * (W(1) *数据(目标1)+ W(3) *数据(目标,3)+ W(2) *数据(目标2))/ W (W (1) + (2) + W (3));
错误在DCA_sphere_GA > @ (W) DCA_weights (W、数据目标)
错误在createAnonymousFcn > @ (x) fcn (x, FcnArgs{:})(11行)
fcn_handle = @ (x) fcn (x, FcnArgs {:});
错误在gacon(23行)
迭代。f = FitnessFcn (Iterate.x ');
错误在ga(第405行)
[x, fval exitFlag、输出人口,分数)= gacon(据nvar FitnessFcn,…
错误在DCA_sphere_GA(42)行
[x, fval] = ga (h,据nvar,[]、[][],[],磅,乌兰巴托,h1);
这似乎是一个问题的维度。因为我还没有真正的内容在你的代码我不知道问题在哪里。但我怀疑,W (1)…W(3)可能是一个问题。考虑到W 3 x3矩阵:
W =
2.0000 1.0000 2.0000
0 0 2.0000
2.0000 1.0000 -3.9000
如果你叫W W(1)或(2)得到标量不是向量:
> > W (1)
ans =
2
> > W (2)
ans =
0
> > W (3)
ans =
2
我怀疑这不是你想要的。行向量的例如使用:
> > W (1:)
ans =
2 1 2
因为你想要(对吗?)执行矩阵乘法:
W *数据(目标)
唯一的操作与W和其它向量:
> > W(: 1) *数据(目标1)
ans =
1.5559 3.3643 6.2000 -4.7782 7.9800 -1.9661
0 0 0 0 0 0
1.5559 3.3643 6.2000 -4.7782 7.9800 -1.9661
所有其他的矩阵乘法不允许,由于线性代数的规则。注意,数据(目标1)转置。
我认为你应该看看这个点,找出计算(或者另一个之前错误的地方)会导致这个错误。
然后你可以继续调试。我会保持关注。
BR
2018年10月16日
编辑:BR
2018年10月16日
嘿,
我做了以下DCA_weights变化:
函数[s、c] = DCA_weights (W、数据目标)
:c (1) = 0.5 * (W(: 1) *数据(目标:))/ W (W (1) + (2) + W (3));
:c (2) = 0.5 * (W(:, 2) *数据(目标:))/ (W W W (1) + (2) + (3));
c (3) = 0.5 * (W(:, 3) *数据(目标:))/ W (W (1) + (2) + W (3));
s = c (2) / c (3);
这是一个正确的选择但我仍然得到同样的错误呢
写在下面的分配尺寸不匹配。
错误在DCA_weights(第2行)
:c (1) = 0.5 * (W(: 1) *数据(目标:));
我认为这可能是因为它以W (:, k)现在为一个向量优化可能是不允许在matlab。我不确定…
更详尽的解释问题,这个方程我之前提到的有3个输出9 W的不同。可以看出在DCA_sphere_GA我上传到你的代码。所以,其像
W = [2 1 2;
0 0 2;
2 1 -3.9];
为k = 1:3
c (k) = 0.5 * (W (k) *数据(1,1)+ W (2 k) *数据(2,1)+ W (3 k) *数据(3,1))/ (W (k) + W (2 k) + W (3 k));
结束
但是正如你所看到的,这可以被重新设计,把它写成
:c (1) = 0.5 * (W(: 1) *数据(目标,:))
所以,这就是为什么我写它。但这产生了另一个问题——“下标赋值尺寸不匹配”。
可能的变化,我正在考虑重组——的适应度函数
函数[s、c] = DCA_weights (W、数据目标)
x =数据(目标:);
c (1) = 0.5 * (W (1,1) * x (1,1) + W (3,1) * x (1、3) + W (2, 1) * x (1、2)) / (W (1,1) + W (2, 1) + W (3,1));
c (2) = 0.5 * (W (1、2) * x (1,1) + W (3 2) * x (1、3) + W (2, 2) * x (1、2)) / (W (1、2) + W W (2, 2) + (3 2));
c (3) = 0.5 * (W (1、3) * x (1,1) + W (3,3) * x (1、3) + W (2、3) * x (1、2)) / (W (1、3) + W (2、3) + W (3,3));
s = c (2) / c (3);
但是这个错误消息出现
指数超过矩阵维度。
错误在DCA_weights(3号线)
c (1) = 0.5 * (W (1,1) * x (1,1) + W (3,1) * x (1、3) + W (2, 1) * x (1、2)) / (W (1,1) + W (2, 1) + W (3,1));
我不知道我犯了一个错误。谢谢你的考虑。
斯蒂芬
2018年10月16日
编辑:斯蒂芬
2018年10月16日
你好,
目标函数,指定为一个函数处理或函数名。写目标函数接受一个行向量的长度据nvar并返回标量值。
你的函数并不满足这一需求。如果您运行您的代码(仅在工作空间变量),在命令窗口中输入这条线:
[s、c] = DCA_weights (W、数据目标)
你会得到一个矩阵
和
一个标量值:
s =
0.427930961393379
c =
0.631017677411916 0.315508838705958 -1.514247310377161
0.393454844238717 0.196727422119359 1.323359732612840
0.919435328908184 0.459717664454092 0.969871928547664
-1.599778735489660 -0.799889367744830 0.970104335199522
1.274234711658103 0.637117355829051 0.613737520113848
0.804238527018159 0.402119263509080 -2.129324212061409
所以你的函数是应该,但它不符合给标量值回ga。
- - >下一个点来解决
BR
2018年10月16日
如果我不采取“c”作为输出,但只有“年代”。它仍然不工作。
跟踪误差
指数超过矩阵维度。
错误在DCA_weights(3号线)
c (1) = 0.5 * (W (1,1) * x (1, 1) ' + W (3,1) * x (1、3) + W (2, 1) * x (1、2) ') / (W (1,1) + W (2, 1) + W (3,1));
斯蒂芬
2018年10月16日
不会很容易限制输出标量值函数的参数?所以这样做:
函数s = DCA_weights (W、数据目标)
而不是这个函数声明:
函数[s、c] = DCA_weights (W、数据目标)
然后你可以实现一个bug运行代码使用以下变化:
函数s = DCA_weights (W、数据目标)
c (: 1) = 0.5 * (W(: 1) *数据(目标1))/ W (W (1) + (2) + W (3));
c (:, 2) = 0.5 * (W(:, 2) *数据(目标2))/ W (W (1) + (2) + W (3));
c (: 3) = 0.5 * (W(:, 3) *数据(目标,3))/ W (W (1) + (2) + W (3));
s = c (2) / c (3);
结束
这个版本运行和似乎给一个结果……
非常大的但是:
您还应该确保这里计算有意义的内容。它不会帮助如果您的索引到Matlab返回任何结果而不是一个错误消息,如果这个结果没有内容的价值。但是你不必担心,因为我不知道哪些连接有关。我很高兴的帮助,但我希望你有能力验证结果收到,以确保它们是正确的,不仅没有使用的“精心设计”解决方案。万博 尤文图斯
斯蒂芬
2018年10月17日
如果你运行优化与遗传算法(选项也改变了ga)得到的结果x很靠近边界:
x =
-5.9999 -6.0000 -5.9999
> > fval
fval =
0.5426
如果你改变两项gamultiobj得到:
x =
-3.2364 0.4830 -5.0124
> > fval
fval =
0.5426
有趣的是,这并不影响结果的价值,但x的值,所以这也许给你一个线索如果你的计算结果是正确的。
BR
2018年10月17日
编辑:BR
2018年10月17日
是的,我做了这一变化。仍然有很多假阳性的相同的结果。
我可以问,你只有三个值应该有9值。说到这里我们还必须照顾分母的方程,我们正在考虑,它应该是
:c (1) = [* * * * * * * * *) / (W (1,1) + W (2, 1) + W (3,1));
c (2) = (* * * * * * * * *) / (W (1、2) + W (2, 2) + W (3 2));
c (3) = (* * * * * * * * *) / (W (1、3) + W (2、3) + W (3,3));
有一件事我想知道。我应该只优化目标数据的函数而不是整个数据?
我的朋友抱歉fr后期反应。我可以向你保证,你的支持对我来说是值得一生。万博1manbetx
谢谢
Baqar
斯蒂芬
2018年10月17日
编辑:斯蒂芬
2018年10月17日
我可以问,你只有三个值应该有9值。
因为W是你改变了ga / gamultiobj变量值
和
你设置
据nvar
= 3 ga的召唤,W是1 x3的大小:
W =
-0.8799 -0.9225 2.3144
这是W的初始值从遗传算法目标函数。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
我们还必须照顾分母的方程,我们正在考虑,它应该是
:c (1) = [* * * * * * * * *) / (W (1,1) + W (2, 1) + W (3,1));
c (2) = (* * * * * * * * *) / (W (1、2) + W (2, 2) + W (3 2));
c (3) = (* * * * * * * * *) / (W (1、3) + W (2、3) + W (3,3));
这听起来像你期望W大小3 x3的——它不是。应该是?
斯蒂芬
2018年10月17日
编辑:斯蒂芬
2018年10月17日
如果你需要W 3 x3矩阵,然后设置据nvar = 9,这将给你一个初始W:
W =
-0.8799 -0.9225 2.3144 0.5880 -0.3098 -1.0330 1.1034 0.3421 -2.2640
然后你可以重新排列W 3 x3的目标函数:
函数s = DCA_weights (W、数据目标)
W =重塑(W, 3, 3);
c (: 1) = 0.5 * (W(: 1) *数据(目标1))”/ (W (1,1) + W (2, 1) + W (3,1));
c (:, 2) = 0.5 * (W(:, 2) *数据(目标2))”/ (W (1、2) + W W (2, 2) + (3 2));
c (: 3) = 0.5 * (W(:, 3) *数据(目标,3))”/ (W (1、3) + W (2、3) + W (3,3));
s = c (2) / c (3);
结束
在二次形式得到W:
W =
-0.8799 0.5880 1.1034
-0.9225 -0.3098 0.3421
2.3144 -1.0330 -2.2640
但是现在你又有问题,例如
数据(目标1))
有一个6 x1的大小:
size_data =
0.7779
1.6822
3.1000
-2.3891
3.9900
-0.9830
这不能互相多重的由于线性代数的规则。所以我建议你关心
数据(目标1))
数据(目标2))
3)数据(目标)
可以是正确的。这是我如何开始。你希望从哪个大小的矩阵乘法?这是什么意思的尺寸数据(目标1)?
BR
2018年10月17日
编辑:BR
2018年10月17日
highligt我希望是另一个重要的事实,如果你计算c的值(1:),c(2:)和c(3:)优化权重
-1.71500000000000 -1.71500000000000 -1.71500000000000
1.70000000000000 1.70000000000000 1.70000000000000
1.55000000000000 1.55000000000000 1.55000000000000
-2.00500000000000 -2.00500000000000 -2.00500000000000
1.99500000000000 1.99500000000000 1.99500000000000
2.10000000000000 2.10000000000000 2.10000000000000
我。e都是平等行意味着比它最小化只是unitll‘1’。阻碍的算法。
然后我在DCA_weights的chnage(适应度函数)
函数s = DCA_weights (a, b, c、数据目标)
x =数据(目标:);
c (1) = 0.5 * ((1) * x (: 1) + (3) * x (:, 3) + (2) * x (:, 2)) / ((1) + (2) + (3));
c (2) = 0.5 * (b (1) * x (: 1) + b (3) * x (:, 3) + b (2) * x (:, 2)) / (b (1) + (2) + b (3));
c (3) = 0.5 * (c (1) * x (: 1) + c (3) * x (:, 3) + c (2) * x (:, 2)) / (c c (1) + (2) + c (3));
s = c (3) / c (2);
在哪里
(1)= W (1,1);
(2)= W (2, 1);
(3)= W (3,1);
b (1) = W (1、2);
b (2) = W (2, 2);
b (3) = W (3 2);
c (1) = W (1、3);
c (2) = W (2、3);
c (3) = W (3、3);
解决上述9 w .变量问题,这次的错误
不足够的输入参数。
错误在DCA_weights(第9行)
x =数据(目标:);
这是令我最,为什么一个错误
x =数据(目标:);
而不是在
c (1) = 0.5 * ((1) * x (: 1) + (3) * x (:, 3) + (2) * x (:, 2)) / ((1) + (2) + (3));
谢谢
斯蒂芬
2018年10月17日
编辑:斯蒂芬
2018年10月17日
不要这样做:
函数s = DCA_weights (a, b, c、数据目标)
使用:
函数s = DCA_weights (W、数据目标)
W =重塑(W, 3, 3);
(1)= W (1,1);
(2)= W (2, 1);
(3)= W (3,1);
b (1) = W (1、2);
b (2) = W (2, 2);
b (3) = W (3 2);
c (1) = W (1、3);
c (2) = W (2、3);
c (3) = W (3、3);
x =数据(目标:);
c (1) = 0.5 * ((1) * x (: 1) + (3) * x (:, 3) + (2) * x (:, 2)) / ((1) + (2) + (3));
c (2) = 0.5 * (b (1) * x (: 1) + b (3) * x (:, 3) + b (2) * x (:, 2)) / (b (1) + (2) + b (3));
c (3) = 0.5 * (c (1) * x (: 1) + c (3) * x (:, 3) + c (2) * x (:, 2)) / (c c (1) + (2) + c (3));
s = c (3) / c (2);
结束
斯蒂芬
2018年10月17日
对我来说,工作-在误差:
不能执行任务,因为左右两边有不同数量的元素。
错误在DCA_weights(23行)
c (1) = 0.5 * ((1) * x (: 1) + (3) * x (:, 3) + (2) * x (:, 2)) / ((1) + (2) + (3));
我的孩子生病回家了,明天再来吧……
BR
2018年10月17日
编辑:BR
2018年10月17日
我认为因为有2 c的参与,所以我这样实现的工作。
函数s = DCA_weights (W、数据目标)
x =数据(目标:);
W =重塑(W, 3, 3);
(1)= W (1,1);
(2)= W (2, 1);
(3)= W (3,1);
b (1) = W (1、2);
b (2) = W (2, 2);
b (3) = W (3 2);
d (1) = W (1、3);
d (2) = W (2、3);
d (3) = W (3、3);
:c (1) = 0.5 * ((1) * x (: 1) + (3) * x (:, 3) + (2) * x (:, 2)) / ((1) + (2) + (3));
:c (2) = 0.5 * (b (1) * x (: 1) + b (3) * x (:, 3) + b (2) * x (:, 2)) / (b (1) + (2) + b (3));
c (3) = 0.5 * (d (1) * x (: 1) + d (3) * x (:, 3) + d (2) * x (:, 2)) / (d (1) + (2) + d (3));
但无论如何,我们可以讨论这个之后,家庭第一
欢呼声交配,再见。
照顾。
斯蒂芬
2018年10月17日
编辑:斯蒂芬
2018年10月17日
我建议改变c和d使它更简单:
函数s = DCA_weights (W、数据目标)
W =重塑(W, 3, 3);
(1)= W (1,1);
(2)= W (2, 1);
(3)= W (3,1);
b (1) = W (1、2);
b (2) = W (2, 2);
b (3) = W (3 2);
c (1) = W (1、3);
c (2) = W (2、3);
c (3) = W (3、3);
x =数据(目标:);
d (: 1) = 0.5 * ((1) * x (: 1) + (3) * * (:, 3) + (2) * * (:, 2)) / ((1) + (2) + (3))
d (:, 2) = 0.5 * (b (1) * x (: 1) + b (3) * x (:, 3) + b (2) * x (:, 2)) / (b (1) + (2) + b (3));
d (: 3) = 0.5 * (c (1) * x (: 1) + c (3) * x (:, 3) + c (2) * x (:, 2)) / (c c (1) + (2) + c (3));
s = d (3)。/ d (2);
结束
由于园艺学会的结果是一个6 x1矢量d,我改变了d (1:) d (: 1)。
运行这段代码给没有错误,但这不是一个证明这个结果我正确的。
添加这行后ga电话:
x =重塑(x, 3, 3)
fval
直接看到结果。还适应范围9变量:
磅= [6 6 6 6 6 6 6 6 6];%下界
乌兰巴托= [6 6 6 6 6 6 6 6 6];%上界
现在你得到大负值fval和x是一个3 * 3矩阵
BR
2018年10月18日
编辑:BR
2018年10月18日
嘿,伙伴,晚回复道歉。非常抱歉,整天与我的上司。
不,它不工作,可能是因为,我认为还有一个变化,就是“年代”的方式计算。
我改变了它
s = d (: 3)。/ d (:, 2);
因为,s = d (3) / d(2)将选择值' d ',而只从第一列。
但话又说回来,这并不影响结果。它应该仍然是3 * 3,我只有我在后者的计算方法。然而,即使我使用我的输出(我认为的最后一行向量x,也就是70
*
9的规模,优化权重,重塑在3 * 3)计算最终结果,消融之后,我得到改进的准确性。
对于这个我是代替原始树突状细胞算法后,比较两个C (smDC)和C (mDC)(在我们的代码(:,3)和d(:, 2)]分别,如果C (mDC)大于C (smDC),我们称之为异常。但由于即使是优化和计算的最终值' d ' (DCA_weights)优化后发现所有的三个值都是平等的,优化的权值。
所以我改变了条件异常,而不是比较这两个输出(C (smDC)和C (mDC)或(d(:, 3)和d(:, 2)]),我们两个,他们是平等的。这提高了检测精度FP真阳性100%和0%。
感谢和问候
Baqar
更多的答案(0)
一个错误发生
无法完成的行动,因为页面所做的更改。重新加载页面更新状态。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。