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

news2024/12/29 9:17:30

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

文章目录

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

引例:年夜饭的准备

我们先来看一个例子。

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

食材价格(元**/**斤)口味得分营养得分
牛肉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)若验证成功,则分析模型结果以及对模型进行拓展;若验证失败,则更换其他模型。

本篇博客到此结束!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kubernets(K8S)启动和运行01 快速入门

简介 Kubernetes is an open source orchestrator for deploying containerized applications. It was originally developed by Google, inspired by a decade of experience deploying scalable, reliable systems in containers via application-oriented APIs. Kubernete…

C语言基础语法跟练 day2

题源&#xff1a;牛客网 16、BoBo写了一个十六进制整数ABCDEF&#xff0c;他问KiKi对应的十进制整数是多少。 #include <stdio.h>int main() { //创建变量char arr[] "ABCDEF";int i;int sum0,c; //依次转换十六进制为十进制for(i0; arr[i]!\0; i){char b …

SENet实现遥感影像场景分类

今天我们分享SENet实现遥感影像场景分类。 数据集 本次实验我们使用的是NWPU-RESISC45 Dataset。NWPU Dataset 是一个遥感影像数据集&#xff0c;其中 NWPU-RESISC45 Dataset 是由西北工业大学创建的遥感图像场景分类可用基准&#xff0c;该数据集包含像素大小为 256*256 共计 …

CentOS本地部署SQL Server数据库无公网ip环境实现远程访问

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现&#xff0c;利用GeoServer可以方便地发布地图数据&#xff0c;允许用户对要素数据进行更新、删除、插入…

23种设计模式精讲,配套23道编程题目 ,支持 C++、Java、Python、Go

关于设计模式的学习&#xff0c;大家应该还是看书或者看博客&#xff0c;但却没有一个边学边练的学习环境。 学完了一种设计模式 是不是应该去练一练&#xff1f; 所以卡码网 针对 23种设计&#xff0c;推出了 23道编程题目&#xff0c;来帮助大家练习设计模式&#xff0c;地…

oracle基本用户管理和权限分配

1.用户与模式的关系&#xff0c;一一对应的关系 2.创建与管理用户 2.1创建用户语法 CREATE user wdf IDENTIFIED by tiger--创建用户wdf,密码tiger DEFAULT tablespace users--用户的默认表空间 quota 10M on users;--在表空间的占用最大空间 注意&#xff1a;用户创建以后…

C练习——N个水手分椰子

题目&#xff1a; 五个水手在岛上发现一堆椰子&#xff0c;先由第1个水手把椰子分为等量的5堆&#xff0c;还剩下1个给了猴子&#xff0c;自己藏起1堆。然后&#xff0c;第2个水手把剩下的4堆混合后重新分为等量的5堆&#xff0c;还剩下1个给了猴子&#xff0c;自己藏起1堆。以…

2023-12-30 买卖股票的最佳时机 II和跳跃游戏以及跳跃游戏 II

122. 买卖股票的最佳时机 II 思路&#xff1a;关键点是每一次利用峰值来计算【画图好理解一点&#xff0c;就是计算陡坡的值】&#xff01;每一次累加和的最大! 或者可以这样理解&#xff0c;把利润划分为每天的&#xff0c;如假如第 0 天买入&#xff0c;第 3 天卖出&#xf…

Mybatis之逆向工程

目录 一、逆向工程概述 二、逆向工程的实现 1、创建一个java工程 2、 第一步&#xff1a;mapper生成配置文件&#xff1a; 3、第二步&#xff1a;使用java类生成mapper文件&#xff1a; 4、第三步&#xff1a;拷贝生成的mapper文件到工程中指定的目录中 5、第四步Mapper接…

控制el-table的列显示隐藏

控制el-table的列显示隐藏&#xff0c;一般的话可以通过循环来实现&#xff0c;但是假如业务及页面比较复杂的话&#xff0c;list数组循环并不好用。 在我们的页面中el-table-column是固定的&#xff0c;因为现在是对现有的进行维护和迭代更新。 对需要控制列显示隐藏的页面进…

C语言可变参数输入

本博文源于笔者正在学习的可变参数输入&#xff0c;可变参数是c语言函数中的一部分&#xff0c;下面本文就以一个很小的demo演示可变参数的编写 问题来源 想要用可变参数进行多个整数相加 方法源码 #include<stdio.h> #include<stdlib.h> #include<stdarg.h…

Git 实战指南:常用指令精要手册(持续更新)

&#x1f451;专栏内容&#xff1a;Git⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、Git 安装过程1、Windows 下安装2、Cent os 下安装3、Ubuntu 下安装 二、配置本地仓库1、 初始化 Git 仓库2、配置 name 和 e…

Java微服务系列之 ShardingSphere - ShardingSphere-JDBC

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 系列专栏目录 [Java项…

通过两台linux主机配置ssh实现互相免密登入

一 1.使用Xshell远程连接工工具生成公钥文件 2.生产密钥参数 3.生成公钥对 4.用户密钥信息 5.公钥注册 二 1.关闭服务端防火墙 ---systemctl stop firewalld 2.检查是否有/root/.ssh目录&#xff0c;没有则创建有则打开/root/.ssh/authorized_keys文件将密钥粘贴创建/ro…

麻省理工、Meta开源:无需人工标注,创新文生图模型

文生图领域一直面临着一个核心难题,就是有条件图像生成的效果&#xff0c;远超无条件的图像生成。有条件图像生成是指模型在生成图像的过程中,会额外使用类别、文本等辅助信息进行指导,这样可以更好的理解用户的文本意图&#xff0c;生成的图像质量也更高。 而无条件图像生成完…

【MYSQL】MYSQL 的学习教程(十一)之 MySQL 不同隔离级别,都使用了哪些锁

聊聊不同隔离级别下&#xff0c;都会使用哪些锁&#xff1f; 1. MySQL 锁机制 对于 MySQL 来说&#xff0c;如果只支持串行访问的话&#xff0c;那么其效率会非常低。因此&#xff0c;为了提高数据库的运行效率&#xff0c;MySQL 需要支持并发访问。而在并发访问的情况下&…

【LLM的概念理解能力】Concept Understanding In Large Language Models: An Empirical Study

大语言模型中的概念理解&#xff1a;一个实证研究 摘要 大语言模型&#xff08;LLMs&#xff09;已经在广泛的任务中证明了其卓越的理解能力和表达能力&#xff0c;并在现实世界的应用中显示出卓越的能力。因此&#xff0c;研究它们在学术界和工业界的值得信赖的性能的潜力和…

buuctf[极客大挑战 2019]BabySQL--联合注入、双写过滤

目录 1、测试万能密码&#xff1a; 2、判断字段个数 3、尝试联合注入 4、尝试双写过滤 5、继续尝试列数 6、查询数据库和版本信息 7、查询表名 8、没有找到和ctf相关的内容&#xff0c;查找其他的数据库 9、查看ctf数据库中的表 10、查询Flag表中的字段名 11、查询表…

C++学习笔记——对象的指针

目录 一、对象的指针 二、减少对象的复制开销 三、应用案例 游戏引擎 图像处理库 数据库管理系统 航空航天软件 金融交易系统 四、代码的案例应用 一、对象的指针 是一种常用的技术&#xff0c;用于处理对象的动态分配和管理。使用对象的指针可以实现以下几个方面的功…

Python GIL 一文全知道!

GIL 作为 Python 开发者心中永远的痛&#xff0c;在最近即将到来的更新中&#xff0c;终于要彻底解决了&#xff0c;整个 Python 社群都沸腾了 什么是GIL&#xff1f; GIL是英文学名global interpreter lock的缩写&#xff0c;中文翻译成全局解释器锁。GIL需要解决的是线程竞…