零基础学习数学建模——(二)数学建模的步骤

本篇博客将详细介绍数学建模的步骤。

文章目录

  • 引例:年夜饭的准备
  • 第一步:模型准备
  • 第二步:模型假设
  • 第三步:模型建立
  • 第四步:模型求解
  • 第五步:结果分析
  • 第六步:模型检验
  • 第七步:模型应用及推广
  • 数学建模步骤总结
  • 补充知识点——模型建立的方法
    • 机理分析法
    • 系统辨识建模法
    • 仿真建模法
    • 相似类比法

引例:年夜饭的准备

我们先来看一个例子。

假设小明家开始准备年夜饭,计划购买不同的食材和菜品。小明家希望尽量在有限的预算内,选择最佳的食材和菜品组合,以最大限度满足家庭成员的口味喜好,并提供充足的营养物质。

食材价格(元**/**斤)口味得分营养得分
牛肉404030
303015
鸡肉252512
鸡蛋8810
白菜10106
香菇15157
青菜12126
大米553

家庭预算为800元,家庭成员口味得分最低要求为40,家庭成员营养得分最低要求为50。

这道题比较结合实际,毕竟还有一个月的时间就要过年了。那么大家如果能看懂这个例子的话,等过年自己家需要准备年夜饭的时候,可以跟父母说自己会用数学建模的知识解决咱家过年需要买什么菜的问题。

下面将从数学建模的角度进行求解。

第一步:模型准备

作为数学建模的第一步,我们首先要了解问题的实际背景,明确其实际意义,将实际问题翻译成数学问题。如果问题比较专业,必要时需要预先学习相关背景知识。然后将问题进行分解,分解成几个层次或者部分。最后判断解决该问题属于哪一类别,可能需要建立什么样的模型。

针对这个问题,解决步骤如下:

1、翻译成数学问题:求口味得分的最大值。

2、将问题分为几个部分:

购买食材的费用≤800

购买的食材口味得分≥40

购买的食材营养得分≥50

3、判断问题需要建立什么模型:因为是求最大值,所以这个题目属于优化类问题。同时只有一个目标函数,所以建立单目标优化模型。

由于这道题目比较简单,第二步其实也是可以认为是将实际问题翻译数学问题。而正常的数学建模竞赛的题目是比较复杂的,题目里可能既有优化,又有预测,还可能有评价,因此,此时应该要对题目进行分解。

看到这里,可能有人就会问,这道题可以设置成是两个目标函数吗,即求口味得分最大值和求营养得分最大值?

答案是可以的。这个题目本身也并没有明确说以什么为目标,也就是没有明确告诉要求什么变量达到最优。这种题目风格其实就是有一点点像美赛的题目风格。同学们可以不用完全把自己的思维限定在单目标优化上,也就是只有一个目标函数,是可以放飞自己的思路,只要合理即可。

第二步:模型假设

模型假设是指根据实际对象的特征和建模的目的,对问题进行必要的简化,并用精确的语言提出一些恰当的假设,从而保证模型的严密性。

注意:假设必须合理!

针对这个题目,我们给出以下假设:

假设一:假设食材的价格、口味得分和营养得分不发生变化。

假设二:假设购买食材的价格不会超过预算。

第三步:模型建立

模型建立是指在假设的基础上,利用适当的数学工具来刻画各变量常量之间的数学关系,建立相应的数学结构。

针对这个题目,我们建立如下模型:

(1)设定决策变量

设x1表示购买牛肉的数量(斤),x2表示购买鱼的数量(斤),x3表示购买鸡肉的数量(斤),x4表示购买鸡蛋的数量(斤),x5表示购买白菜的数量(斤),x6表示购买香菇的数量(斤),x7表示购买青菜的数量(斤),x8表示购买大米的数量(斤)。

(2)确定决策变量

最大化口味和营养的总和得分,即

image-20240110223953942

其中, S i S_i Si代表第i个食材的口味得分。

(3)确定约束条件

image-20240110224140737

综上,最终建立的模型如下:

image-20240110224224791

第四步:模型求解

模型求解方法有解方程,图解,定理证明,逻辑推理,编程计算,统计分析等。本模型运用MATLAB进行求解,代码如下:

clear all
clc
%% 定义目标函数的系数
c = [-40,-30,-25,-8,-10,-15,-12,-5];
%% 定义不等式约束矩阵
A = [
	40,30,25,8,10,15,12,5; % 预算约束
	-40,-30,-25,-8,-10,-15,-12,-5; % 口味得分约束
	-30,-15,-12,-10,-6,-7,-6,-3 % 营养得分约束
];
%% 定义不等式约束右侧
b = [800;-40;-50];
%% 设置变量的边界
lb = zeros(8,1);
%% 使用linprog函数求解问题
options = optimoptions('linprog','Algorithm','interior-point'); % 选择算法
[x,fval,exitflag,output] = linprog(c,A,b,[],[],lb,[],options);
%% 输出结果
disp('最优解:');
disp(x);
disp('最优值(最大口味得分):');
disp(-fval);

第五步:结果分析

数学建模中常见的结果分析有:

(1)对结果进行误差分析,统计分析

(2)解释结果对实际问题的意义

(3)解释参数在实际问题中的作用

(4)对变量之间的依赖性、稳定性进行分析

(5)对模型进行评价、优化、甚至重新建模

针对本问题,运行MATLAB代码得到结果如下图所示:

image-20240110225311416

因此,模型结果为买1.80斤的牛肉,5.50斤的鸡肉,3.52斤的鸡蛋,21.76斤的香菇,10.58斤的青菜,21.81斤的大米。

结果分析:荤素搭配,种类齐全,符合实际。

实际在写论文的时候,可以多写一点,这里仅仅是简要对结果进行分析。

第六步:模型检验

模型检验:模型检验在于评估建立的数学模型对实际问题的适用性和准确性,确保模型在应用中能够产生合理的结果。针对不同的模型,有不同的检验方法:残差分析、统计假设检验、灵敏度分析和模型比较等等。

本题所建立的模型使用灵敏度分析进行检验,以判断模型的稳定性。

灵敏度分析:控制其他参数不变的情况下,改变模型中某个重要参数的值。观察随着参数值的变化而导致的结果变化情况,判断输出受变化参数影响大小。

鱼肉口味得分变化最优值变化最优值变动幅度
33(+10%)88010%
30(0%)8000%
27(-10%)8000%

由于最优值变动幅度不超过决策变量的变动幅度,所以该模型较为稳定。

第七步:模型应用及推广

模型的应用因问题的性质和建模的目的而异,而模型的推广就是在现有模型的基础上对模型有一个更加全面的考虑,建立更符合现实情况的模型。

针对本题,我们可以将模型推广应用到生活中企业采购问题上。

image-20240110225612477

预算约束可以引申到采购预算约束,口味和营养得分约束可以引申到企业要求约束,口味得分最大化可以引申到企业满意度最大化。

数学建模步骤总结

几乎每一个数学建模题目,都离不开这七步:

(一)模型准备

(二)模型假设

(三)模型建立

(四)模型求解

(五)结果分析

(六)模型检验

(七)模型应用及推广

在今后的数学建模的过程中,同学们可以按照这七个步骤进行建模。

补充知识点——模型建立的方法

模型建立的常见方法有机理分析法、系统辨识建模法、仿真建模法和相似类比法。

机理分析法

机理分析法:机理分析是指对某个系统或现象的内部机制进行深入研究和分析的过程。它通常包括对系统或现象的结构、功能、过程、原理等方面的探究,以及对其背后的物理、化学、生物等基本规律的理解和解释。其核心思想是通过深入理解问题的物理或逻辑机制,建立数学模型来描述这种机制。例如,假设我们想要建立一个弹簧-阻尼系统的数学模型,我们可以通过分析弹簧的胡克定律和阻尼的牛顿定律,建立弹簧-阻尼系统的微分方程。这一步是通过机理分析理解弹簧和阻尼之间的物理关系,然后转化成数学形式。

系统辨识建模法

系统辨识建模法:系统辨识建模法是指从一系列实验数据中获取系统的数学模型,以了解和描述系统的行为。这个过程涉及对系统的结构和参数进行推断,以便用数学方程或模型来近似系统的行为。

假设有一个热水箱系统,我们希望建立一个数学模型,以描述水箱中水温随时间的变化。

(1)获取数据并对数据进行预处理。

(2)选择一个适当的数学模型结构,例如选择一个具有热容量、热传导和加热元件的动力学模型。

(3)进行参数估计。利用数学方法或原理,对所选模型结构中的参数进行估计,使得模型输出与实际观测数据最为一致。

(4)使用未参与参数估计的额外数据验证建立的模型在未知数据上的预测性能,对模型进行验证。

(5)根据验证结果,对模型进行优化。如果所选择的模型合适,则辨识结束;如果不合适,则改变第(2)步的数学模型结构,再次向下执行,直到获得一个比较满意的模型为止。

仿真建模法

仿真建模法:仿真建模法是数学建模中一种通过计算机模拟系统行为的方法。它通过建立数学模型,并使用计算机程序对模型进行求解,模拟系统在不同条件下的动态行为。

假设我们希望模拟城市交通流,以评估不同交通策略的效果。

(1)设计一个包含道路、车辆、信号灯等元素的交通模型,描述它们之间的相互作用。

(2)使用编程语言(例如Python、MATLAB)或专门的仿真工具将交通模型翻译为计算机可执行的代码。

(3)选择合适的仿真算法,以模拟交通流的动态变化。

(4)设定城市地图、车辆初始位置、交叉口信号灯控制策略等初始条件。运行仿真模型,模拟城市交通在不同时间段内的变化,包括车辆流量、拥堵情况等。

(5)分析仿真输出,评估不同交通策略对交通流的影响,从而为城市交通管理提供决策支持。

相似类比法

相似类比法:相似类比法是数学建模中的一种方法,它通过将一个复杂的系统映射到一个相对简单的系统,从而使得建模和分析变得更加可行。这种方法基于相似性原理,即两个系统在某些方面具有相似的特征,可以在某些方面进行类比。

假设某地区的生态系统因污染而受到影响,我们希望了解污染对该生态系统的影响。

(1)确定研究问题,即污染对该生态系统的影响。

(2)在其他领域中找到具有相似性质的已知模型,例如热力学中的热扩散模型。

(3)将热扩散模型适应于生态系统,将热传导的概念类比为污染物在生态系统中的传播,建立类比模型。

(4)通过实验或观测数据验证建立的类比模型是否能够合理地描述实际污染影响。

(5)若验证成功,则分析模型结果以及对模型进行拓展;若验证失败,则更换其他模型。

本篇博客到此结束!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/308740.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式全局id

分布式全局id snowflake 算法是 twitter 开源的分布式 id 生成算法,采用 Scala 语言实现,是把一个 64 位的 long 型的 id,1 个 bit 是不用的,用其中的 41 bits 作为毫秒数,用 10 bits 作为工作机器 id,12 …

【C++进阶05】AVL树的介绍及模拟实现

一、AVL树的概念 二叉搜索树的缺点 二叉搜索树虽可以缩短查找效率 但如果数据有序或接近有序 二叉搜索树将退化为单支树 查找元素相当于在顺序表中搜索元素,效率低下 AVL树便是解决此问题 向二叉搜索树中插入新结点 并保证每个结点的左右子树 高度之差的绝对值不超…

【算法】不使用库函数,求解立方根

牛客原题:https://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca?tpId37&tqId21330&rp1&ru/exam/oj/ta&qru/exam/oj/ta&sourceUrl%2Fexam%2Foj%2Fta%3FtpId%3D37&difficultyundefined&judgeStatusundefined&tags&a…

【LeetCode】winter vacation training

欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:【LeetCode】winter vacation training 目录 👉🏻 有效的字母异位词&#x…

websocket介绍并模拟股票数据推流

Websockt概念 Websockt是一种网络通信协议,允许客户端和服务器双向通信。最大的特点就是允许服务器主动推送数据给客户端,比如股票数据在客户端实时更新,就能利用websocket。 Websockt和http协议一样,并不是设置在linux内核中&a…

monocle2 fibroblast silicosis inmt

gc() #####安装archr包##别处复制 .libPaths(c("/home/data/t040413/R/x86_64-pc-linux-gnu-library/4.2","/home/data/t040413/R/yll/usr/local/lib/R/site-library", "/usr/local/lib/R/library","/home/data/refdir/Rlib/")).libPa…

20、Kubernetes核心技术 - 基于Prometheus和Grafana搭建集群监控平台

目录 一、概述 二、监控平台架构图​编辑 三、部署 Prometheus 3.1、Prometheus简介 3.2、部署守护进程node-exporter 3.3、部署rbac 3.4、ConfigMap 3.5、Deployment 3.6、Service 3.7、验证Prometheus 四、部署Grafana 4.1、Deployment 4.2、Service 4.3、Ing…

二叉树及其实现

二叉树 一.树的概念及结构1.1树的概念1.2相关概念 2.二叉树的概念及结构2.1 概念2.2 特殊的二叉树 3.二叉树的遍历3.1 前序、中序以及后序遍历3.2 层序遍历3.3 判断二叉树是否是完全二叉树3.4 二叉树的高度3.5 二叉树的叶子节点个数3.6 二叉树的第k层的节点个数3.7 二叉树销毁3…

吃惯人血馒头的 VC 机构,是否还能在 Fair launch 的散户牛市中胜出?

“吃惯人血馒头的 VC 机构,在 Fair launch 革命中正在失去话语权,而散户、社区完全主导加密行业的时代,正在悄然而至。” LaunchPad 是代币面向市场的重要一环,将代币推向市场,加密项目将能够通过代币的销售从市场上募…

RK3568驱动指南|第十篇 热插拔-第114章 内核发送事件到用户空间的方法

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

java解析json复杂数据的第三种思路

文章目录 一、概述二、数据预览1. 接口json数据2. json转xml数据 三、代码实现1. pom.xml2. 核心代码3. 运行结果 四、源码传送 一、概述 接上篇 java解析json复杂数据的两种思路 我们已经通过解析返回json字符串得到数据,现在改变思路, 按照如下流程获取数据: #mermaid-svg-k…

【数据库原理】(11)SQL数据查询功能

基本格式 SELECT [ALL|DISTINCT]<目标列表达式>[,目标列表达式>]... FROM <表名或视图名>[,<表名或视图名>] ... [ WHERE <条件表达式>] [GROUP BY<列名 1>[HAVING <条件表达式>]] [ORDER BY <列名 2>[ASC DESC]];SELECT: 指定要…

springboot医院信管系统源码和论文

随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&#xf…

FastDFS之快速入门、上手

知识概念 分布式文件系统 通过计算机网络将各个物理存储资源连接起来。通过分布式文件系统&#xff0c;将网络上任意资源以逻辑上的树形结构展现&#xff0c;让用户访问网络上的共享文件更见简便。 文件存储的变迁&#xff1a; 直连存储&#xff1a;直接连接与存储&#xf…

Oracle regexp_substr

select regexp_substr(123|456|789, [^|], 1, 2) from dual;

暴雨信息发布算力网络应用平台打造零感知算网服务新模式

为进一步优化算力网络应用服务能力和降低算力网络使用难度&#xff0c;暴雨信息突破基于算力网络的实例跨域协同与迁移、基于测试评估的应用度量和解构等技术&#xff0c;研发并推出算力网络应用平台。该系统通过提供一种即开即用、按需付费的零感知算网应用服务&#xff0c;使…

Python基础语法(上)——基本语法、顺序语句、判断语句、循环语句(有C++基础快速掌握Python语言)

文章目录 0.python小技巧与易错点1.python 与 c 语法有哪些区别2.Python基本语法2.1python的变量类型2.2python中的运算符2.3python中的表达式2.4python中的输入输出 3.python判断语句3.1基本用法&#xff1a;3.2关于else if 的用法3.3关于pass语句3.4python变量的作用域3.5pyt…

THB6128两相四线步进电机PWM驱动控制

THB6128两相四线步进电机驱动控制模块&#xff0c;可以驱动57及以下两相四线步进电机。该模块有以下优点&#xff1a; 芯片使用双全桥MOSFET驱动&#xff0c;低导通电阻Ron 0.55Ω最高耐压36V&#xff0c;峰值电流2.2A&#xff0c;持续电流2A&#xff0c;电流设定通过拨码开关…

大模型LLM在 Text2SQL 上的应用实践

一、前言 目前&#xff0c;大模型的一个热门应用方向Text2SQL&#xff0c;它可以帮助用户快速生成想要查询的SQL语句&#xff0c;再结合可视化技术可以降低使用数据的门槛&#xff0c;更便捷的支持决策。本文将从以下四个方面介绍LLM在Text2SQL应用上的基础实践。 Text2SQL概…

常用注解/代码解释(仅个人使用)

目录 第一章、代码解释①trim() 方法以及(Arrays.asList(str.split(reg)));②查询字典项②构建后端镜像shell命令解释 第二章、注解解释①PropertySource注解与Configurationproperties注解的区别 第三章、小知识①Linux系统中使用$符号表示变量 友情提醒: 先看文章目录&#…