工程优化问题之三杆桁架设计研究(Matlab代码实现)

news/2024/10/20 13:48:26/

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

三杆桁架是一种常见的结构形式,广泛应用于桥梁、建筑物和机械设备等领域。三杆桁架的设计优化是指通过调整杆件的尺寸、形状和连接方式等参数,使得结构在满足一定约束条件下,具有最佳的性能和经济性。

本文目标函数和约束条件如下:

\begin{aligned} & \text{Fuction} \\ & minf(x)=(2\sqrt{2}x_1+x_2)\times l \\ & \text{Subject to} \\ & g_1(x)=\frac{\sqrt2x_{1}+x_{2}}{(\sqrt2x_{1}^{2}+2x_{1}x_{2})}P-\sigma\leq0 \\ & g_2(x)=\frac{x_{2}}{\sqrt{2}x_{1}^{2}+2x_{1}x_{2}}P-\sigma\leq0 \\ & g_3(x)=\frac{1}{\sqrt{2}x_{2}+x_{1}}P-\sigma\leq0 \\ & 0\leq x_i\leq1,i=1,2 \\ & \text{Parameter: } \\ & l=100\mathrm{cm};P=2\mathrm{kN/(cm^2)};\sigma=2\mathrm{kN/(cm^2)}\end{aligned}

三杆桁架设计优化的目标主要包括以下几个方面:

1. 结构强度和刚度:三杆桁架的设计需要满足一定的强度和刚度要求,以确保结构在使用过程中不会发生失稳或破坏。优化设计可以通过调整杆件的截面积和长度等参数,使得结构在承受外载荷时具有最佳的强度和刚度。

2. 结构重量:三杆桁架的重量直接影响到结构的成本和运输安装的方便性。优化设计可以通过减少杆件的重量,使得结构在满足强度和刚度要求的前提下具有最轻的重量。

3. 结构稳定性:三杆桁架在受到外载荷作用时需要保持稳定,避免发生失稳和塑性变形。优化设计可以通过调整杆件的尺寸和形状,使得结构在承受外载荷时具有最佳的稳定性。

4. 结构的经济性:三杆桁架的设计需要考虑到材料成本、制造成本和维护成本等因素,以使得结构在满足性能要求的前提下具有最低的总成本。

为了实现三杆桁架设计的优化,研究者们采用了多种方法和技术。其中包括传统的数学优化方法,如线性规划、非线性规划和整数规划等,以及现代的优化算法,如遗传算法、粒子群算法和模拟退火算法等。这些方法和技术可以帮助研究者在设计过程中快速搜索最优解,提高设计效率。

此外,研究者们还通过建立数值模型和进行仿真分析,对三杆桁架的性能进行评估和优化。这些模型和分析方法可以帮助研究者更好地理解结构的行为和响应,指导优化设计的过程。

总之,三杆桁架设计优化是一个复杂而重要的工程问题,涉及到多个目标和约束条件。通过合理选择优化方法和技术,并结合数值模型和仿真分析,可以实现三杆桁架设计的高效优化,提高结构的性能和经济性。

📚2 运行结果

部分代码:

function [lb,ub,dim,fobj] = Engineering_Problems(type)
% type:问题类型
% 不同数字 对应 不同问题
% 比如,type = 1 : 选择优化 Tension/compression spring design problem
% type = 2 : 选择优化 Pressure vessel design problem
switch type
    case 1 % Tension/compression spring design problem
        fobj = @spring;       % 函数
        lb = [0.05 0.25  2];   % 下限
        ub = [2    1.3   15];   % 上限
        dim = length(lb);     % 维度
    case 2 % Pressure vessel design problem
        fobj = @ pvd;
        lb =[0 0 10 10];
        ub = [99 99 200 200];
        dim = length(lb);
    case 3 % Three-bar truss design problem
        fobj = @ three_bar;
        lb = [0 0];
        ub = [1 1];
        dim = length(lb);
        
end

    function fitness = spring(x)
        x1 = x(1);
        x2 = x(2);
        x3 = x(3);
        f = (x3+2)*x2*(x1^2);
        panaty_factor = 10e100; % 按需修改
        %
        g1 = 1-((x2^3)*x3)/(71785*(x1^4));
        g2 = (4*(x2^2)-x1*x2)/(12566*(x2*(x1^3)-(x1^4))) + 1/(5108*(x1^2))-1;
        g3 = 1-(140.45*x1)/((x2^2)*x3);
        g4 = ((x1+x2)/1.5)-1;
        panaty_1 = panaty_factor*(max(0,g1))^2; % g1的惩罚项
        panaty_2 = panaty_factor*(max(0,g2))^2; % g2的惩罚项
        panaty_3 = panaty_factor*(max(0,g3))^2; % g3的惩罚项
        panaty_4 = panaty_factor*(max(0,g4))^2; % g4的惩罚项
        fitness  = f + panaty_1+panaty_2+panaty_3+panaty_4;
    end

    function fitness = pvd(x)
        x1= x(1);x2 = x(2);x3 = x(3);x4 = x(4);
        f = 0.6224*x1*x3*x4 + 1.7781*x2*x3^2+3.1661*x1^2*x4+19.84*x1^2*x3;
        panaty_factor = 10e100; % 按需修改
        %
        g1 = -x1+0.0193*x3;
        panalty_1 = panaty_factor*(max(0,g1))^2;
        g2 = -x2+0.00954*x3;
        panalty_2 = panaty_factor*(max(0,g2))^2;
        g3 = -pi*x3^2*x4 - (4/3)*pi*x3^3 + 1296000;
        panalty_3 = panaty_factor*(max(0,g3))^2;
        g4 = x4 - 240;
        panalty_4 = panaty_factor*(max(0,g4))^2;
        fitness = f + panalty_1 + panalty_2 + panalty_3 + panalty_4;
    end

    function fitness = three_bar(x)
        l = 100; P = 2; q = 2;
        x1= x(1);
        x2 = x(2);
        f = l*(2*sqrt(2)*x1+x2);
        panaty_factor = 10e100; % 按需修改
        %
        g1 = P*(sqrt(2)*x1+x2)/(sqrt(2)*x1^2+2*x1*x2)-q;
        penalty_g1 = panaty_factor*(max(0,g1))^2;
        g2 = P*(x2)/(sqrt(2)*x1^2+2*x1*x2)-q;
        penalty_g2 = panaty_factor*(max(0,g2))^2;
        g3 = P/(sqrt(2)*x2+x1)-q;
        penalty_g3 = panaty_factor*(max(0,g3))^2;
        fitness = f+penalty_g1+penalty_g2+penalty_g3;
    end

end

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]叶友东,王雅.基于ANSYS分析的三杆桁架优化设计[J].煤矿机电, 2004(5):5.DOI:10.3969/j.issn.1001-0874.2004.05.039.

[2]朱钦,杨海霞.基于粒子群-布谷鸟搜索算法的桁架结构优化设计[J].三峡大学学报(自然科学版), 2017(1).DOI:10.13393/j.cnki.issn.1672-948X.2017.01.014.

🌈4 Matlab代码实现

 


http://www.ppmy.cn/news/1026270.html

相关文章

【Rust】Rust学习 第十章泛型、trait 和生命周期

泛型是具体类型或其他属性的抽象替代。我们可以表达泛型的属性,比如他们的行为或如何与其他泛型相关联,而不需要在编写和编译代码时知道他们在这里实际上代表什么。 之后,我们讨论 trait,这是一个定义泛型行为的方法。trait 可以…

【leetcode】151. 反转字符串中的单词(medium)

给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在前导空格、尾随…

【项目】聊翻天—基于TCP的聊天系统

文章目录 项目演示1.初步认识2.数据库管理模块3.用户管理模块4.消息队列模块5.服务端模块6.消息格式7.客户端8.源码 项目演示 注册界面: 数据库插入数据: 登录界面: 登录成功跳转到聊天界面: 同样的有显示未读消息数的功能 …

python系列教程212——函数式编程

朋友们,如需转载请标明出处:https://blog.csdn.net/jiangjunshow 声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享…

C++ 线性群体的概念

线性群体中的元素次序与其位置关系是对应的。 在线性群体中,可以按照访问元素的不同方法分为直接访问、顺序访问和索引访问。 (1)直接访问 对可直接访问的线性群体,我们可以直接访问群体中的任何一个元素,而不必首先访…

37.二叉树的最近公共祖先

题目:给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。 import java.util.*;/** public class TreeNode {* int val 0;* TreeNode left null;* TreeNode right null;* }*/public cl…

在idea运行python文件

在idea运行python文件 如果在idea运行python文件而没有弹出run的选项,则点击File->Settings…->Plugins,在里面搜索python,如果没有显示则在Maketplace进行搜索, 接着Install,然后restart

Vue.js从入门到精通:软件开发视频大讲堂

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 前言 随着Web应用程序的…