采用遗传算法对3个变量进行优化。

13意见(过去30天)
Aditya Anupam.
Aditya Anupam. 于2020年5月14日
评论: Aditya Anupam.2020年5月15日
我想最大限度地减少RMSE即, 函数最后 达到0.002的达到依赖于三个变量
E = [E1 E2 E3],取值范围为
Ub = [1200 3000 200]
Lb =[600 20 120]
我很新的是Matlab,并阅读与GA相关的所有文件,但仍然没有帮助我进一步进一步并优化所需的问题
如果你能帮助我。
我正在附上我的代码和每种必要的东西。
告诉我如何解决它。
===========================================================================================================
主要代码
%定义变量
D = (0,0);
%真实偏转值
= (0.2316, 0.1496, 0.0978, 0.0602, 0.042, 0.0244, 0.0218);
%板厚
a = 150;
%声明弹性模量
Lb = [1200 200 20];
Ub = [3000 600 120];
铺装层厚度%
h = [200,550];
%宣布泊松比
v = [0.5,0.4,0.4];
%声明等效厚度
t1 = eq1(H, E, V);
T2 = EQ2(H,E,T1);
T = (t1, t2);
%发现defelction
rmse = obj_fit(e,h,v,a,d);
================================================================================================================.=========
健身功能
函数y = obj_fit (E、H、V, a, a, D)
t1 = H (1) * nthroot ((E (1) * (1-V (2) ^ 2)) / (E (2) * (1-V (1) ^ 2)), 3);
t2 = 0.8 * (t1 + H (2)) * nthroot (E / E (3) (2), 3);
T = (t1, t2);
为了我= 1:7
如果我= = 1
D1 = 0.566 *(1 + V(1))* A *(1-(电源(1 + + + POWER(H(1)/ A,2), - 0.5)+(1-2 * V(1))*(功率(1 +功率(H(1)/ a,2),0.5)-h(1)/ a)))/ e(1);
D2 =((0.566 *(1 + V(2))* a *(电源(1 +电源(t(1)/ a,2), - 0.5)+(1-2 * v(2))*(电源(1 +电源(T(1)/ A,2),0.5)-T(1)/ a))))......
- (0.566 * A *(1 + V(2))*(功率(1 + POWER((T(1)+ H(2))/ A,2), - 0.5)+(1-2 * V(2))*(功率(1 +电源((T(1)+ H(2))/ A,2),0.5)......
- (T(1)+ H(2))/ a))))/ e(2);
D3 = 0.566 *(1 + V(3))* a *((电源(1 +电源(t(2)/ a,2), - 0.5)+(1-2 * v(1))*(功率(1 +功率(T(2)/ a,2),0.5)-t(2)/ a))))/ e(3);
D = d1 + d2 + d3(我);
别的
r = 300 *(I-1);
d1 = 0.283 *力量(2)* (((1 + V (1)) * (H(1) ^ 2) *(电力((r ^ 2) + (H (1) ^ 2), -1.5)) + 2 * (1 - (V(1) ^ 2))。......
*(功率((^ 2)+(h(1)。^ 2), - 0.5))))/ e(1);
d2 =((0.283 * power(a,2)*((1 + v(2))*(t(1)。^ 2)*(功率((^ ^ 2)+(t(1)。^2), - 1.5))+ 2 *(1-(V(2)。^ 2))......
*(权力((r ^ 2) + (T(1) ^ 2), -0.5)))) -(0.283 *功率(a, 2) * ((1 + V (2)) * ((T (1) + H (2)) ^ 2) *......
(功率((R. ^ 2)+((t(1)+ h(2))。^ 2), - 1.5))+ 2 *(1-(v(2)。^ 2))*(电源((r。^ 2)+((t(1)+ h(2))。^ 2), - 0.5)))))/ e(2);
d3 = 0.283 *功率(a, 2) * ((1 + V (3)) * (T(2) ^ 2) *(电力((r ^ 2) + (T (2) ^ 2) -1.5)) + 2 * (1 - (V(3) ^ 2)) *(电力((r ^ 2) + (T (2) ^ 2) -0.5))) / E (3);
D(i)= d1 + d2 + d3;
结尾
结尾
r = 0;
为了我= 1:7
r = r +(a(i)-d(i))。^ 2;
结尾
r = r / 7;
y = sqrt (r);
结尾
===========================================================================================
有了你的帮助,我刚刚做出了一个obj函数。
如果它是正确的,那么如何创建随机群。
只需帮助我解决这个问题。
6个评论
Aditya Anupam.
Aditya Anupam. 2020年5月15日
先生,
现在对obj函数来说是正确的吗?

登录评论。

接受的答案

沃尔特罗伯森
沃尔特罗伯森 2020年5月15日
%定义变量
D = (0,0);
%真实偏转值
= (0.2316, 0.1496, 0.0978, 0.0602, 0.042, 0.0244, 0.0218);
%板厚
a = 150;
%声明弹性模量
据nvar = 3;
Lb = [1200 200 20];
Ub = [3000 600 120];
铺装层厚度%
h = [200,550];
%宣布泊松比
v = [0.5,0.4,0.4];
%发现defelction
alin = [];blin = [];
Aeq = [];说真的= [];
nlcon = [];
选择= optimoptions ('Ga'“PlotFcn”......
{@gaplotbestf, @gaplotbestindiv、@gaplotexpectation @gaplotstopping});
Fun = @(e)obj_fit(e,h,v,a,a,d);
[bestE, RMSE, exitflag] = ga(fun, nvars, Alin, blin, Aeq, beq, lb, ub, nlcon, options);
我的测试表明,当E(2)和E(3)都在它们的上界时,最优情况出现,E(1)大约是2212.675232597514(曲线在该点的形状类似于一个二次曲线,因此可以相当精确地找到位置)。
3评论

登录评论。

更多答案(0)

s manbetx 845


释放

R2018a

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!