我如何优化这个问题找到最合适的变量最大化成本函数?

2视图(30天)
我想最大化[(2 * n * eo * 10 *低频)/ d - n (2 * 3.87 * eo * *低频)/ d)。与约束(我)低频/ wf < = 40;(2)窝* n / 2 *低频e-8 * wf * 10 = 3.0015。变量是n,低频,wf和d。已知常数eo窝。我尝试用遗传算法来解决这个问题,但似乎并没有得到一个合适的答案。我写了3个功能,成本,1为约束条件。我给下面的函数。变量列表(低频wf d n)在我的代码。
函数eh_pc_generic
清晰的所有;关闭所有;clc;
选择= optimset (“显示”,“通路”)
ObjectiveFunction = @eh_cost_genetic;
据nvar = 4;%的变量
磅= [0 2 e-6 0 1];%下界
乌兰巴托=[正正正正);%上界
一个= 0 (1、4);
(1)= 1;
(1、2)= -40;
B = 0;
ConstraintFunction = @eh_constraint_genetic;
[x, fval] = ga(据nvar ObjectiveFunction, A, B,[],[],磅,乌兰巴托,
ConstraintFunction)
结束
函数c = eh_cost_genetic (x)
eo = 8.854 e-12;
c = - (((2 * (4) * eo * x (1) * 10)) / x (3) - (2 * (4) * eo * x (1) * 3.87) / x (3))
结束
函数[cineq,测查]= eh_constraint_genetic (x)
穴= 2331;
cineq = [];
测查=[(窝* 10 * x (4) * (2) * (x (4) / 2)) -3.0015 e-8];
结束
这三个功能需要保存他们的名字。
任何帮助我如何优化这些参数受到这些约束是高度赞赏。
谢谢

接受的答案

艾伦·韦斯
艾伦·韦斯 2015年8月26日
你似乎有四个变量。你有四个组件上下界。 一个 有四个组件。但是你写 据nvar = 3; 。你使用 x (1) , x (3) , x (4) eh_cost_genetic ,你使用 x (1) , x (2) , x (4) eh_constraint_genetic
首先检查是你正在使用的指标 x 变量一致,只因为你提到的三个变量优化:n,低频,wf。如果你有写一切正确,然后改变 据nvar = 4;
其次,你为什么在这个问题上利用遗传算法? fmincon 更合适。
艾伦·韦斯
MATLAB数学工具箱文档
2的评论
艾伦·韦斯
艾伦·韦斯 2015年8月26日
我做了一些非常轻微的修改你的代码,我认为一个合理的答案 fmincon 。看到你觉得这个功能和结果:
函数(xfinal、成本)= eh_pc (x0)
%清除所有;clc;关闭所有;
格式
选择= optimset (“显示”,“通路”,“算法”,“sqp”);
如果= 600 e-6;
wf = 15 e-6;
d = 5 e-6;
n = 150;
% x0 =(低频wf d n) ';
1磅= 0 (4);
乌兰巴托=正(4,1);
磅(2)= 2;
磅(3)= 2;
乌兰巴托(1)= 1000 e-6;
%乌兰巴托(5)= 40 e-6;
一个= 0 (1、4);
(1)= 1;
(1、2)= -40;
B = 0; Aeq =[];说真的= [];
(xfinal、成本)= fmincon (Aeq @eh_cost x0, A, B,说真的,磅,乌兰巴托,@eh_constraint,选项)
函数c = eh_cost (x)
eo = 8.854 e-12;
c = (((2 * (4) * eo * x (1) * 10)) / x (3) - (2 * (4) * eo * x (1) * 3.87) / x (3));
结束
函数[cineq,测查]= eh_constraint (x)
穴= 2331;
cineq = [];
测查=[(窝* 10 * x (1) * (2) * (x (4) / 2)) -3.0015 e-8];
结束
结束
这就是当你与运行它 “sqp” 算法,我常常因为你的公差似乎很紧:
如果= 600 e-6;
wf = 15 e-6;
d = 5 e-6;
n = 150;
x0 =(低频wf d n) ';
(xfinal、成本)= eh_pc (x0);
你的初始点x0不是界限磅至乌兰巴托;FMINCON
转移x0来满足。
规范的一阶
IterF-countf (x)的可行性Steplength一步最优
0 5 -4.884752 e-12 2.098 e + 03 8.141 e-09
1 10 -4.397757 e-19 1.888 e-04 1.000 e + 00 6.000 e-04 6.000 e-04
2 11 -4.397757 2.199 3.781 7.000 1.888 e-19 e-04 e-01 e-11 e-19
当地的最低发现满足约束。
优化因为目标函数引入在完成
可行的方向,在最优公差的默认值,
约束满足内部默认值约束的宽容。
<停止标准详细信息>
xfinal =
1.0 e + 02 *
0.000000000000540
0.020000000000000
0.020000000000000
1.499999999976000
成本=
-4.397756630048431 e-19
然后,清理结果,再次运行它从计算角度 xfinal :
(xfinal、成本)= eh_pc (xfinal);
规范的一阶
IterF-countf (x)的可行性Steplength一步最优
0 5 -4.397757 e-19 1.888 e-04 8.141 e-09
1 10 -6.988695 e-23 5.499 e-21 1.000 e + 00 5.401 e-11 5.401 e-11
当地的最低发现满足约束。
优化因为目标函数引入在完成
可行的方向,在最优公差的默认值,
约束满足内部默认值约束的宽容。
<停止标准详细信息>
xfinal =
1.0 e + 02 *
0.000000000000000
0.020000000000000
0.020000000000000
1.499999999976000
成本=
-6.988694660232942 e-23
我希望这给你找到满意的结果。
艾伦·韦斯
MATLAB数学工具箱文档

登录置评。

更多的答案(0)

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!