2.3木模型的求解C2.3.1求解算法介绍05遗传算法的思想来源于自然界中生物系统的进化规律,是对武溪理工大穿生物遗传进化进行的计算机模拟,以此来解决生活中最优化问题的最优解的一种计算方法。基本遗传算法步骤包括编码、选择、交叉和变异,其基本参数包含编码方式、适应度函数、种群规模和选择、交又以及变异算子,这些参数决定了求解的精度。遗传算法流程图如图2-4所示,编码和初始种群的生成种群中个体适应度的检测评估选择交叉变异图2-4算法流程图2025/8/27
2025/8/27 2025/8/27 2.3 模型的求解 ⚫ 遗传算法的思想来源于自然界中生物系统的进化规律,是对 生物遗传进化进行的计算机模拟,以此来解决生活中最优化 问题的最优解的一种计算方法。 ⚫ 基本遗传算法步骤包括编码、选择、交叉和变异,其基本参 数包含编码方式、适应度函数、种群规模和选择、交叉以及 变异算子,这些参数决定了求解的精度。遗传算法流程图如 图2-4所示, 2.3.1 求解算法介绍 图2-4 算法流程图
2.3模型的求解G2.3.2模型的Matlab求解所建立的数学模型属于多设计变量多线性和非线性约束优化问武溪理工大学题,无法用简单的遗传算法进行求解,为了使求解更加直观精确且方便快捷,选择使用matlabR2010b中的遗传算法优化工具箱来对模型进行优化,其求解界面如下图2-5所示,OUehlaCetuandEPaesianopiatinsentneyCfodtywiedanSotdlyeue debnROfonotydnhadmoauedih2图2-5matlab遗传算法工具界面2025/8/27
2025/8/27 2025/8/27 2.3 模型的求解 所建立的数学模型属于多设计变量多线性和非线性约束优化问 题,无法用简单的遗传算法进行求解,为了使求解更加直观精 确且方便快捷,选择使用matlabR2010b中的遗传算法优化工具 箱来对模型进行优化,其求解界面如下图2-5所示。 2.3.2 模型的Matlab求解 图2-5 matlab遗传算法工具界面
2.3木模型的求解C2.3.2模型的Matlab求解求解界面中需要输入适应度函数、变量的个数、线性不等式矩武溪理工大穿阵、等式矩阵和非线性函数,在建立这些函数与矩阵之前,需要建立刚度计算函数,求解主簧刚度的程序如下所示,式中力的单位为N,长度单位为mm,主簧刚度在整簧受力为2000N的情况下求解,即整簧的一半受力为1000N。functionk=stiffzhu1(×)a=quad(a100,0,s)+quad(a10,s,s+x(7))+quad(a11,s+x(7),x(10))bb=60s=55;E=2.06*10^5;P=1000;11=575b=quad(b100,0,s)+quad(b10,s,s+x(7))+quad(b11,s+x(7),x(10)110=bb*x(1)/^3/12:/11=bb*x(4)^3/12c=quad(c100,0,s)+quad(c10,s,s+x(8))+quad(c11,s+x(8),x(10)120=bb*x(2)/3/12;121=bb*x(5)/3/12P2=P*a/(b+c);A1=(1-x(4)/x(1))/x(7);B1=1+A1*s;ff0=@(t)(11-t).2/(E*10);ff3=@(t)(x(10)-t).*(11-t)/(E*110)A2=(1-x(5)/x(2)/x(7);B2=1+A2*s;ff1=@(t)(11-t).^2.(E*/10*(B1-A1*t);ff4=@(t)(x(10)-t).*(I1-t)./(E*110*(B1-A1*t)a100=@(t)(11-t).*(x(10)-t)./(E*/10)a10=@(t)(1-t).*(x(10)-t)./(E*110*(B1-A1*t).^3);ff2=@(t)(I1-t).^2/(E*/11);ff5=@(t)(x(10)-t).*(11-t)/(E*|11);a11=@(t)(11-t).*(x(10)-t)/(E*111);f1=(quad(ff0,0,s)+quad(ff1,s,s+x(7))+quad(ff2,s+x(7),/1)*P-.b100=@(t)(x(10)-t).^2./(E*/10);(quad(ff3.0,s)+quad(ff4,s,s+x(7)+quad(ff5,s+x(7),x(10))*P2b10=@(t)(x(10)-t).^2./(E*110*(B1-A1*t).43);k=2*P/f1;endb11=@(t)(x(10)-t).^2./(E*/11);c100=@(t)(x(10)-t).^2./(E*120);同样根据推导的合成簧刚度计算公式,建立合c10=@(t)(x(10)-t).^2./(E*120*(B2-A2*t).3);成簧刚度的matlab程序,这里不再详细列明。c11=@(t)(x(10)-t).2.(E*I21)2025/8/27
2025/8/27 2025/8/27 2.3 模型的求解 求解界面中需要输入适应度函数、变量的个数、线性不等式矩 阵、等式矩阵和非线性函数,在建立这些函数与矩阵之前,需 要建立刚度计算函数,求解主簧刚度的程序如下所示,式中力 的单位为N,长度单位为mm,主簧刚度在整簧受力为2000N的 情况下求解,即整簧的一半受力为1000N。 2.3.2 模型的Matlab求解 function k = stiffzhu1(x) bb=60;s=55;E=2.06*10^5;P=1000;l1=575; I10=bb*x(1)^3/12;I11=bb*x(4)^3/12; I20=bb*x(2)^3/12;I21=bb*x(5)^3/12; A1=(1-x(4)/x(1))/x(7);B1=1+A1*s; A2=(1-x(5)/x(2))/x(7);B2=1+A2*s; a100=@(t)(l1-t).*(x(10)-t)./(E*I10); a10=@(t)(l1-t).*(x(10)-t)./(E*I10*(B1-A1*t).^3); a11=@(t)(l1-t).*(x(10)-t)/(E*I11); b100=@(t)(x(10)-t).^2./(E*I10); b10=@(t)(x(10)-t).^2./(E*I10*(B1-A1*t).^3); b11=@(t)(x(10)-t).^2./(E*I11); c100=@(t)(x(10)-t).^2./(E*I20); c10=@(t)(x(10)-t).^2./(E*I20*(B2-A2*t).^3); c11=@(t)(x(10)-t).^2./(E*I21); a=quad(a100,0,s)+quad(a10,s,s+x(7))+quad(a11,s+x(7),x(10)); b=quad(b100,0,s)+quad(b10,s,s+x(7))+quad(b11,s+x(7),x(10)); c=quad(c100,0,s)+quad(c10,s,s+x(8))+quad(c11,s+x(8),x(10)); P2=P*a/(b+c); ff0=@(t)(l1-t).^2/(E*I10);ff3=@(t)(x(10)-t).*(l1-t)/(E*I10); ff1=@(t)(l1-t).^2./(E*I10*(B1-A1*t)); ff4=@(t)(x(10)-t).*(l1-t)./(E*I10*(B1-A1*t)); ff2=@(t)(l1-t).^2/(E*I11);ff5=@(t)(x(10)-t).*(l1-t)/(E*I11); f1=(quad(ff0,0,s)+quad(ff1,s,s+x(7))+quad(ff2,s+x(7),l1))*P-. (quad(ff3,0,s)+quad(ff4,s,s+x(7))+quad(ff5,s+x(7),x(10)))*P2; k=2*P/f1; end 同样根据推导的合成簧刚度计算公式,建立合 成簧刚度的matlab程序,这里不再详细列明
2.3木模型的求解G2.3.2模型的Matlab求解然后,根据质量最小原理为目标函数的原则,编写适应度函数武溪理工大穿的程序如下:functiony=mhe(×)s=60;11=575:bb=60;row=7740ita=0.98s11=l1-S-x(7);s21=x(10)-S-x(8);s31=x(11)-s-x(9);yy=(x(1)+x(2)+x(3))*s+(x(1)+x(4)*x(7)/2+(x(2)+x(5)*x(8)/2+...(x(3)+x(6))*x(9)/2+x(4)*s11+x(5)*s21+x(6)*s31;y=2*bb*yy*row*10(-9)*ita;end变量的个数为11,建立的数学模型约束条件中包含非线性不等式函数,为此,编制相应的非线性不等式函数程序如下:function[c,ceg]=nonlinearf(x)sk1=stiffzhu1(x);sk=stiffhe1(x);[thg1,thg2,thg3]=thgema(x)k1=abs(sk1-45)/45)-2/45;k=abs(sk-67)/67)-3/67;thge1=thg1-1100;thge2=thg2-1100;thge3=thg3-1100c=[k1;k;thge1;thge2;thge3];ceq=;end2025/8/27
2025/8/27 2025/8/27 2.3 模型的求解 然后,根据质量最小原理为目标函数的原则,编写适应度函数 的程序如下: 2.3.2 模型的Matlab求解 function y = mhe( x ) s=60;l1=575;bb=60;row=7740;ita=0.98; s11=l1-s-x(7);s21=x(10)-s-x(8);s31=x(11)-s-x(9); yy=(x(1)+x(2)+x(3))*s+(x(1)+x(4))*x(7)/2+(x(2)+x(5))*x(8)/2+. (x(3)+x(6))*x(9)/2+x(4)*s11+x(5)*s21+x(6)*s31; y=2*bb*yy*row*10^(-9)*ita; end 变量的个数为11,建立的数学模型约束条件中包含非线性不等式函 数,为此,编制相应的非线性不等式函数程序如下: function [ c,ceq ] = nonlinearf( x ) sk1=stiffzhu1(x); sk=stiffhe1(x); [thg1,thg2,thg3]=thgema(x); k1=abs((sk1-45)/45)-2/45; k=abs((sk-67)/67)-3/67; thge1=thg1-1100; thge2=thg2-1100; thge3=thg3-1100; c=[k1;k;thge1;thge2;thge3]; ceq=[]; end
2.3模型的求解C2.3.2模型的Matlab求解模型中的长度数量关系是线性不等式,将这种关系写成矩阵的溪理工大学形式如下所示:Ax=[-1,0,0,1,0,0,0,0,0,0,0; 0,-1,0,0,1,0,0,0,0,0,0; 0,0,-1,0,0,1,0,0,0,0,0,.0,0,0,0,0,0,-1,1,0,0,0;0,0,0,0,0,0,1,0,0,-1,0; 0,0,0,0,0,0,0,-1,0,0,1;...0,0,0,0,0,0,0,1,0,-1,0; 0,0,0,0,0,0,0,0,1,0,-1;0,0,0,0,0,0,0,0,0,-1,1;];bx=[-1;-1;-1;-1;-55;55;-55;-55;0];将编制的目标函数、非线性不等式、线性不等式矩阵和区间范围,以及变量个数输入优化工具界面中,并设置初始种群大小取为100交又概率取值为0.8,迁移百分比为0.2,变异概率取值为0.01。根据输入的条件,工具箱将随机生成初始种群,根据初始种群进行一系列选代,最终所得结果图如图2-6到图2-9所示。2025/8/27
2025/8/27 2.3 模型的求解 模型中的长度数量关系是线性不等式,将这种关系写成矩阵的 形式如下所示: 2.3.2 模型的Matlab求解 Ax=[-1,0,0,1,0,0,0,0,0,0,0; 0,-1,0,0,1,0,0,0,0,0,0; 0,0,-1,0,0,1,0,0,0,0,0;. 0,0,0,0,0,0,-1,1,0,0,0; 0,0,0,0,0,0,1,0,0,-1,0; 0,0,0,0,0,0,0,-1,0,0,1;. 0,0,0,0,0,0,0,1,0,-1,0; 0,0,0,0,0,0,0,0,1,0,-1; 0,0,0,0,0,0,0,0,0,-1,1;]; bx=[-1;-1;-1;-1;-55;55;-55;-55;0]; ⚫ 将编制的目标函数、非线性不等式、线性不等式矩阵和区间范围, 以及变量个数输入优化工具界面中,并设置初始种群大小取为100, 交叉概率取值为0.8,迁移百分比为0.2,变异概率取值为0.01。 ⚫ 根据输入的条件,工具箱将随机生成初始种群,根据初始种群进行 一系列迭代,最终所得结果图如图2-6到图2-9所示