数学建模 第一节
目录
前言
一 优化模型的类型
二 线性规划1
线性规划2
三 0-1规划
总结
前言
数学建模主要是将问题转化为模型,然后再以编程的形式输出出来
算法都知道,数学建模也需要用到算法,但是不是主要以编程形式展示,而是利用模型和有关于数学建模的公具加以展示,这里主要以问题的形式引出数学建模的知识点和编程知识点
一 优化模型的类型
1 线性规划 2 非线性规划 3 正数规划 4 "0-1"规划
二 线性规划1
问题一:合理利用线材问题
现在要做100套钢架,每套用长为2.9m,2.1m,1.5m的元钢各一根,已知原料长7.4m,问应该如何进行下料使用的原材料更小
首先我们要知道我们这个题目明显是一个取最优解的问题,那么就是一个切割最优问题
其次就要去找题目里面的未知量,找到未知量,才可以构建出模型
模型的确定是根据目标函数和约束条件确定的
为什么是线性规划
我们需要确定如何从7.4米长的原料中切割出所需的2.9米、2.1米和1.5米的元钢,以最小化浪费的材料。这个问题可以表示为一个线性规划问题,因为:
目标函数是线性的:我们的目标是最小化使用的原料根数,即 x1+x2+x3+x4+x5+x6,这是一个线性函数。
约束条件是线性的:我们需要满足切割出的元钢总数至少为100根的条件,这些条件可以表示为线性不等式,例如 2.9*x1+2.9*2x2+2.9x5≥100。
变量是非负的:切割的套数 xi 必须是非负整数。
那么我们知道这些未知量了,我们就要构建模型,首先我们来构建一个表格
方案1 方案2 方案3 方案4 方案5 2.9 1 2 ❌ 1 ❌ 2.1 ❌ ❌ 2 2 1 1.5 3 1 2 ❌ 3 首先我们有这么多种的方案,每一个方案构建的总值都是小于7.4m的
这里讲讲为什么不考虑使用2.9 2.1 1.5各自取一根不加?
📌 结论
- 单看浪费大小不够,要考虑整体优化。
- 如果一个方案的浪费比其他方案都大,通常不会被选入最优解。
- 有些方案即使浪费稍多,但可能是拼凑 100 套钢架的“必要补充”,可以加入。
- 最好的方法是用整数规划(ILP)求解,让计算机自动决定是否要用某个方案。
💡 所以,加不加 6.5m 方案?可以加,但最终让计算机决定! 🚀
因为我们看倒数第二个,这个是已经到7.1了,之前都是7.4,7.3,7.2,这个是7.1所以加入,但是我们到第五种方案的时候已经到达了6.6,跨度很大,这个时候,我们就取这个,首先我们电脑是会自己判断这个方案取不取的,这个时候我们加上是为了避免电脑取最优解要用到,保险,这个时候,其实没有必要加这个方案六,每个都取一根,因为我们已经有一个保险的了
即使你加了也没事,因为这个电脑可能不会选择,不考虑这个方案,我们这个题目是要减少浪费的
那么我们要怎么判断是否要加上方案呢?以下是al分析,作者先记下来,方便下次复习看
📌 原则 1:能否减少浪费?
- 计算当前已有方案的最小浪费(例如,方案 2 只浪费 0.1m)。
- 如果你的新方案浪费比所有已知方案都多(例如浪费 0.9m),那它几乎不会被选入最优解。
- ✅ 选择浪费更少的方案,❌ 排除浪费更多的方案。
示例对比(假设现有方案最小浪费 0.1m):
方案 切割方式 总长 浪费 方案 2 2.9m ×2 + 1.5m ×1 7.3m 0.1m ✅(最优之一) 方案 3 2.1m ×2 + 1.5m ×2 7.2m 0.2m ✅ 方案 5 2.1m ×1 + 1.5m ×3 6.6m 0.8m ❓(可能需要) 你的方案 2.9m ×1 + 2.1m ×1 + 1.5m ×1 6.5m 0.9m ❌(比 0.8m 更差,不需要) 🔍 如果新方案的浪费比已有方案大,基本就不会被选取
📌 原则 2:能否帮助满足 100 套需求?
即使方案本身浪费稍多,但如果它能让其他方案更好地拼接成 100 套,也可能有用!
如何判断?
- 尝试去掉某个方案,看看是否还能刚好满足 100 套需求。
- 如果去掉某个方案会导致解不可行,说明它是必要的,即使它浪费稍多。
- 如果所有方案能凑够 100 套,而某个方案总是没被选中,那它可以去掉。
💡 结论:如果一个方案不会被用到,或者可以被更优的方案替代,就不取!
📌 实践方法:让 ILP 自动决定
如果你不确定某个方案是否应该加入,可以让整数规划(ILP)自动决定:
- 先把所有可能的方案(包括 6.5m 方案)都放进去。
- 让 ILP 计算最优解,如果某个方案没有被选取,说明它不是最优的。
- 查看最终结果,看看哪些方案真正被使用了。
接下来我们就要把这个模型转换到这歌软件上进行操作
接下来我们就要用到这个LINGO来编写
首先这个sets:和endsets是表示定义一个aa集合,aa集合里面有x这个变量,然后这个1..5就是这个变量的下标
然后这个min就是求解最小值,@sum表示求和,遍历集合aa的里的i,然后紧接着根据这个aa(i)遍历里面的变量
也就是遍历里面aa里面的i,然后这个后面这个是aa集合里面的变量,随着者aa里的i进行改变
下面就是一些约束条件了
@gin(x(i))指定x(i)必须是整数变量,然后for循环就是遍历这里面的变量,这些变量的值不可以是小数,而是整数
最后就输出90根钢铁了
三 线性规划2
问题二 某昼夜服务的公交路线每天个时间区段都需要的工作人员如下表格,设工作人员分别再各个时间区段一开始上班,并连续工作8小时,问该公交至少需要多少工作人员
班次 时间 需要人数 1 6:00-10:00 60 2 10:00-14:00 70 3 14:00-18:00 60 4 18:00-22:00 50 5 22:00-2:00 20 6 2:00-6:00 30 接下来我们要分这个题目
首先我们题目问的是总共的工作人员最少,那么就是每个时间段的人我都是不知道那么是多少,删一个题目每一根钢材我都是知道的,我只需要设置出方案数量,然后把这些方案给规划起来求出值
所以我们这里设置的未知量就是每一个时间段的人数,考虑这里面的未知量
接下来我们就分析出了模型,接下来我们就可以编程了
编程答案Sets:aa /1..6/: y;bb/1..6/: x; Endsetsdata:x = 60,70,60,50,20,30; enddataMin = @sum(aa(i): y(i));y(1) + y(6) >= x(1); y(2) + y(1) >= x(2); y(3) + y(2) >= x(3); y(4) + y(3) >= x(4); y(5) + y(4) >= x(5); y(6) + y(5) >= x(6);! 变量必须是整数; @for(aa(i): @gin(y(i)));这样才是正确的,答案为14
三 0-1规划
在一个公司在市东南西三区建立门市部,有7个位置点(Ai,i=1.2.3...7)可供选择,规定:
1)在东区,由A1 A2 A3三个点至多选择两个
2)在西区,由A4 A5两个点至少选择一个
3)在南区,由A6 A7两个点至少选择一个
如果选用Ai点,设备投资估计为bi元,每年获利利润估计为ci元,但是投资总量不可以超过M元,问应该选择哪几个点建立门市部使得年利润最大
首先这个就是典型的0-1问题,每一个点我们都有选择和不选择,1就是选择,0就是不选择
那么我们就要考虑怎么选择就好了
接下来我们就只需要编程就好了
sets:aa/1..7/:b,c,x; endsetsdata:c = 1,5,7,4,6,8,9; b = 12,56,45,34,32,78,89;M = 200; enddatamax = @sum(aa(i):c(i)*x(i)); x(1) + x(2) + x(3) <= 2; x(4) + x(5) >=1; x(6) + x(7) >=1; @sum(aa(i):b(i)*x(i)) <= M; @for(aa(i):@bin(x(i)));1 for循环的错误使用
@sum(@for(aa(i):b(i)*x(i))) <= M;这样是不对的,sum里面已经隐式包括了相加的迭代,所以这么写会出现语法错误
2 错误提示栏的报错
这个通常是我么缺少了右括号才有的错误
这里的bin函数是直接随机取值,然后转化为01,这样就可以运用到0-1规划
总结
首先我们学习到了线性规划和0-1规划
0-1规划还是很好理解,但是这个线性规划还是有点抽象
首先第一个钢铁问题就是取走最优的部分,你可以看到这个就是把资源浪费最少的放上去,然后最后一个弄一个保险的就好了
第二个就是找出安排时间的问题,我们只需要把相邻的时间段弄出来,然后最后算出最后人数的最小值就好了因为这个是一环扣着一环的
你只需要把问题利用数学模型描述出来,编程就会自动帮你跑出来,也就是C++里面的抽象
相关文章:
数学建模 第一节
目录 前言 一 优化模型的类型 二 线性规划1 线性规划2 三 0-1规划 总结 前言 数学建模主要是将问题转化为模型,然后再以编程的形式输出出来 算法都知道,数学建模也需要用到算法,但是不是主要以编程形式展示,而是…...
平方矩阵问题
Ⅰ 回字形二维数组 #include <iostream> #include <iomanip> using namespace std; int main(){int n;while(cin>>n,n){for(int i0; i<n;i){for(int j0; j<n; j){int upi, downn-i1, leftj, rightn-j1;cout<<min(min(up,down),min(left,right)…...
自动化立体仓库堆垛机HMI屏幕程序施耐德HMIGXU系列 Vijeo Designer功能设计
堆垛机HMI屏幕功能概况 在自动化立体仓库堆垛机的HMI屏幕程序里,有着施耐德HMIGXU系列Vijeo Designer功能设计。此HMI程序运用标准的工程组织结构,凭借拖拽方式迅速构建人机交互界面。 其主要功能涵盖:设备参数、设备状态、手动/自动操作控制、报警显示、IO信息监控等模块…...
孤儿进程与僵尸进程:Linux进程管理中的“隐形杀手”与“无主孤儿”
在Linux系统中,进程的生命周期管理是系统稳定运行的关键。其中,孤儿进程和僵尸进程是两种特殊状态,它们看似相似却暗藏玄门。本文将从定义、区别到处理方法,揭开它们的神秘面纱。 一、孤儿进程:被“遗弃”的孩子&…...
信息系统运行管理员教程6--信息系统安全
信息系统运行管理员教程6–信息系统安全 第1节 信息系统安全概述 1.信息系统安全的概念 信息系统安全是指保障计算机及其相关设备、设施(含网络)的安全,运行环境的安全,信息的安全,实现信息系统的正常运行。信息系统…...
实验- 分片上传 VS 直接上传
分片上传和直接上传是两种常见的文件上传方式。分片上传将文件分成多个小块,每次上传一个小块,可以并行处理多个分片,适用于大文件上传,减少了单个请求的大小,能有效避免因网络波动或上传中断导致的失败,并…...
训练数据重复采样,让正负样本比例1:1
详细解释 resample 函数: resample 函数来自 sklearn.utils,用于从数据集中重新抽样。replaceTrue 表示允许重复抽样,即同一个样本可以被多次选中。n_samples 指定抽样的数量。 确保训练集数量相同: 通过 resample 函数ÿ…...
生活中的可靠性小案例12:类肤材质老化发粘问题
我一直觉得我买的某品牌车载吸尘器很好用,用了几年,目前性能也是杠杠的。然而它现在有个最大的问题,就是表面发粘了,用起来粘手,非常不舒服。 这一类问题在生活中不少见,尤其是一些用了类肤材质涂层的物件。…...
qt 自带虚拟键盘的编译使用记录
一、windows 下编译 使用vs 命令窗口,分别执行: qmake CONFIG"lang-en_GB lang-zh_CN" nmake nmake install 如果事先没有 指定需要使用的输入法语言就进行过编译,则需要先 执行 nmake distclean 清理后执行 qmake 才能生效。 …...
python中print函数的flush如何使用
在 Python 中,print 函数的 flush 参数是一个布尔值,默认值为 False。当设置为 True 时,它会强制将输出缓冲区的内容立即刷新到目标设备(通常是控制台),而不是等待缓冲区满或者程序结束时才输出。 要注意fl…...
k8s集群-kubeadm init
为了使用阿里云的镜像源加速 kubeadm init 初始化 Kubernetes 集群的过程,你需要修改 kubeadm 的配置文件以指向阿里云提供的镜像仓库。以下是具体步骤: 1. 创建或编辑 kubeadm 配置文件 首先,创建一个 kubeadm 的配置文件(如果还…...
【软考-架构】5.2、传输介质-通信方式-IP地址-子网划分
✨资料&文章更新✨ GitHub地址:https://github.com/tyronczt/system_architect 文章目录 传输介质网线光纤无线信道 通信方式和交换方式会考:交换方式 💯考试真题第一题第二题 IP地址表示子网划分💯考试真题第一题第二题 传输…...
记一次OOM异常问题排查
背景 最近,有运维同事收到告警,提示服务器出现CPU占用100%的情况出现,并且严重影响服务性能,甚至导致一些功能不可用。接到上述情况反馈后,随即展开对问题的排查。 排查 CPU占用100%排查 定位进程:使用 t…...
websocket学习手册及python实现简单的聊天室
概述 WebSocket 是一种网络通信协议,允许在单个 TCP 连接上进行全双工通信。它最核心的优势就在于实现了持久连接,实现了实时的数据传输。HTTP 协议有一个很大的缺点,通信只能由客户端发起,服务器返回响应后连接就会关闭…...
SpringMVC (二)请求处理
目录 章节简介 一 请求处理(初级) eg:请求头 二 请求处理(进阶) eg:请求体 三 获取请求头 四 获取Cookie 五 级联封装 六 使用RequestBoby封装JSON对象 七 文件的上传 八 获取整个请求 HttpEntity 九 原生请求 Spring…...
Android (Kotlin) 高版本 DownloadManager 封装工具类,支持 APK 断点续传与自动安装
以下是一个针对 Android 高版本的 DownloadManager 封装工具类,支持 断点续传 和 自动安装 APK 功能。该工具类兼容 Android 10 及以上版本的文件存储策略,并适配了 FileProvider 和未知来源应用安装权限。 工具类:DownloadUtils import and…...
深入探索Android Bitmap:从原理到实战
一、Bitmap 是什么 在 Android 开发中,Bitmap 是极为重要的基石。简单来说,Bitmap 代表位图,是图片在内存里的具体呈现形式 ,任何诸如 JPEG、PNG、WEBP 等格式的图片,一旦被加载到内存中,就会以 Bitmap 对象的形式存在。从原理上看,Bitmap 本质是像素点的集合,若其宽度…...
详细介绍 SetWindowPos() 函数
书籍:《Visual C 2017从入门到精通》的2.3.8 Win32控件编程 环境:visual studio 2022 内容:【例2.29】模态对话框 说明:以下内容大部分来自腾讯元宝。 1. 函数功能与用途 SetWindowPos() 是 Windows API 中用于动态调整窗口…...
1.6、Java继承、构造方法、数组
子类可以增加字段、增加方法或覆盖父类方法,但继承不会删除任何字段和方法不恰当认为super 同 this 引用是类似的概念,其实super不是一个对象的引用,不能将值super赋给另一个对象变量,super只是一个指示 编译器调用父类方法的特殊…...
通义万相 2.1 与蓝耘智算平台的深度协同,挖掘 AIGC 无限潜力并释放巨大未来价值
我的个人主页 我的专栏: 人工智能领域、java-数据结构、Javase、C语言,希望能帮助到大家!!! 点赞👍收藏❤ 引言:AIGC 浪潮下的新机遇 在当今数字化飞速发展的时代,人工智能生成内容&…...
Spring Boot项目中成功集成了JWT
JWT 原理解释 什么是 JWT? JSON Web Token(JWT)是一种开放标准(RFC 7519),用于在网络应用环境间安全地将信息作为JSON对象传输。JWT通常用于身份验证和信息交换。 JWT 的结构 JWT由三部分组成ÿ…...
DeepSeek 3FS集群化部署临时笔记
DeepSeek 3FS集群化部署临时笔记 一、3FS集群化部署1、环境介绍2、对应的软件包安装3、编译4、部署4.1 部署monitor_collector_mainStep 2: Admin clientStep 3: Mgmtd serviceStep 4: Meta serviceStep 5: Storage serviceStep 6: Create admin user, storage targets and cha…...
专题|Python贝叶斯金融数据应用实例合集:随机波动率SV模型、逻辑回归、参数更新、绩效比较BEST分析亚马逊股票、普尔指数...
原文链接:https://tecdat.cn/?p41020 本专题合集系统梳理了贝叶斯方法在金融数据分析与分类建模中的前沿应用。合集聚焦于PyMC3概率编程框架,深度探讨了共轭先验参数更新、贝叶斯逻辑回归、贝叶斯夏普比率等核心算法在实际场景中的落地实践(…...
RocketMQ企业应用篇
在现代企业级应用中,分布式消息队列系统如RocketMQ发挥着至关重要的作用。本文将深入探讨RocketMQ在电商和物联网场景中的应用,结合实际案例和代码示例,展示如何利用RocketMQ解决企业级应用中的关键问题。 一、电商场景应用 1. 秒杀抢购解决…...
vue-常用指令 | 常用指令的修饰符
目录 什么是vue指令 v-cloak v-text v-html v-pre v-show /v-if v-else/v-else-if v-on v-bind v-for v-model 常用指令的修饰符 v-model 指令修饰符 事件修饰符 按键修饰符 什么是vue指令 指令就是带有 v- 前缀 的特殊 属性,不同的属性对应不…...
Git提交前时间检查
为了防止在本地看日志的时候,由于本地时间被修改,导致日志的时间存在非正确时间。通过以下脚本在提交前进行时间验证,只有是正确的时间才可以提交。 使用方法如下: 复制如下脚本,命名为 pre-commit ,放到 …...
Linux调度器 --- 负载均衡的存在的问题
文章目录 前言一、简介二、Linux 调度器2.1 在单核系统上,CFS 非常简单2.2 在多核系统上,CFS 变得非常复杂2.2.1 负载均衡算法2.2.2 优化措施 三、Linux调度器负载均衡的存在的问题3.1 组负载不均衡问题(Group Imbalance Bug)3.2 …...
从零开始用AI开发游戏(三)背景故事
《迷域回响》背景故事 第一章:失落的符文纪元 在远古的“艾瑟兰”大陆,掌握空间魔法的「筑界者文明」曾建造了连通万界的回响迷宫——这座迷宫既是试炼场,也是囚笼。文明巅峰时期,筑界者将禁忌知识刻入虚空符文,嵌于…...
IXTUR气控永磁铁:以高精度气控和稳定磁场,为机器人应用提供稳定抓取力
在现代工业生产和物流领域,物料的抓取与搬运是影响生产效率和成本控制的重要环节。传统夹爪在面对不同材质、形状和重量的物体时,常常存在适应性差、抓取不稳定、操作复杂等问题,导致生产流程中频繁出现停机调整,增加了人工干预成…...
硬件驱动——51单片机:寄存器、LED、动态数码管
目录 一、51单片机 1.寄存器 二、LED点灯 1.原理 2.封装函数 3.顺序点灯 4.特定位点灯 三、动态数码管 1.原理 2.封装函数 3.0~9跳变 4.顺序移位0~9跳变 一、51单片机 1.寄存器 51单片机共40个引脚,其中P0,P1,P2,P3是四个有8引脚的寄存器࿰…...





