【数学建模】天然肠衣搭配问题衍生问题/线性规划限制条件建立问题

news/2024/5/20 23:45:36

线性规划限制条件建立问题

  • 前景回顾/提出问题
    • 回顾1
    • 回顾2/问题提出
    • 解决前提
  • 解决方法
    • 坐标轴(区间)法
      • 总结

前景回顾/提出问题

回顾1

首先回顾一下DVD在线租赁问题
在 question2中,需要保证每个人都不会收到自己不喜欢的DVD,即客户在线订单数为0时候,不可以租给他。我直接给出答案了:
x i j ≤ o r d e r i j , i = 1 , 2 , 3 , . . n , j = 1 , 2 , 3 , . . m x_{ij} \le order_{ij} ,i=1,2,3,..n , j= 1,2,3,..m xijorderij,i=1,2,3,..n,j=1,2,3,..m

实际思路其实是
如果 o r d e r i j = 0 order_{ij} = 0 orderij=0,那么 x i j = 0 x_{ij} = 0 xij=0, 也就是说客户不喜欢我决定不租
反之 o r d e r i j > 0 order_{ij} \gt 0 orderij>0,那么 x i j = 0 / 1 x_{ij} = 0/1 xij=0/1,也就是说客户喜欢我自己决定租还是不租。

列表找规律还是尝试不同的不等式都可以在比较短的时间内想出正确答案。

回顾2/问题提出

接下来回顾一下天然肠衣搭配问题
其中手动进行局部最优解的时候,还有一个附带问题:
已知原料能捆137个成品三,那么用到最少种配方数是多少?
例如我用到了73种配方我就可以完成137个成品三,那么同样是做137个成品三,就比用到100种配方少。

当时求最多能捆多少个成品三的模型为:
设使用方案 i i i的次数为 y i y_i yi,原料按长度由小到大的总个数依次为 d 1 d 2 , . . . , d n d_1 d_2 ,...,d_n d1d2,...,dn
方案总数为 a a a;方案 i i i使用第 j j j种原料数量为 z i j z_{ij} zij
对于每一个原料我们都得
d i ≥ ∑ 1 ≤ j ≤ a y j ∗ z j i , 1 ≤ i ≤ n d_i \ge \sum_{1 \le j \le a} y_j*z_{ji} , 1\le i \le n di1jayjzji,1in
max ⁡ ∑ 1 ≤ i ≤ a y i \max \sum_{1\le i \le a}y_i max1iayi

现在 max ⁡ ∑ i = 1 a y i \max \displaystyle\sum_{i=1}^{a}y_i maxi=1ayi变成了 ∑ i = 1 a y i = 137 \displaystyle\sum_{i=1}^{a}y_i = 137 i=1ayi=137
求解问题也变成了求 max ⁡ ∑ i = 1 a y i > 0 \max \displaystyle\sum_{i=1}^{a}y_i\gt 0 maxi=1ayi>0
如果借鉴DVD在线租赁问题的思路就是, f i f_i fi为0/1变量
如果 y i > 0 y_i \gt 0 yi>0,那么 f i = 1 f_i = 1 fi=1 ,用了这种配方就
反之 y i = 0 y_i = 0 yi=0,那么 f i = 0 / 1 f_i = 0/1 fi=0/1 , 没用这种配方
min ⁡ ∑ i = 1 a f i \min \displaystyle\sum_{i=1}^{a} f_i mini=1afi
因为是求最小值( f i f_i fi自动取最小的那一个),所以实际上如果 y i = 0 y_i = 0 yi=0,那么 f i = 0 f_i = 0 fi=0是绝对成立的

但这一次就没那么简单了,不是简单的 y i ≤ f i y_i\le f_i yifi 或者 y i ≥ f i y_i\ge f_i yifi,所以不能轻易的得出答案
所以问题就是这个限制条件怎么写?

解决前提

1.不能破坏线性规划模型,即不能出现变量和变量相乘的情况
2.
如果 y i > 0 y_i \gt 0 yi>0,那么 f i = 1 f_i = 1 fi=1 ,用了这种配方就
反之 y i = 0 y_i = 0 yi=0,那么 f i = 0 / 1 f_i = 0/1 fi=0/1 , 没用这种配方
解决上面描述很容易想到用 i f if if语句,这里也不可以,也就是下面这种模型
f i = { 1 , y i > 0 1 , y i = 0 f_i = \begin{cases}1,y_i \gt 0\\1,y_i = 0\end{cases} fi={1,yi>01,yi=0

解决方法

坐标轴(区间)法

线性规划中 a ≤ b a\le b ab a ≥ b a\ge b ab是最常用的,也是能很好的约束
基本概念
≤ a \le a a ≥ a \ge a a分别是蓝色线和红色线表示的区间
在这里插入图片描述

解决天然肠衣搭配问题
那么变形一下上面的判断描述
如果 y i > 0 y_i \gt 0 yi>0,那么 f i = 1 f_i = 1 fi=1 ,用了这种配方就
反之 y i ≤ 0 y_i \le 0 yi0,那么 f i = 0 / 1 f_i = 0/1 fi=0/1 , 没用这种配方
如果定义 ≥ y \ge y y, y y y y 1 > 0 y_1\gt 0 y1>0 y 2 = 0 y_2 = 0 y2=0
就会出现以下两个区间,红色: ≥ y 2 \ge y_2 y2 , 蓝色: ≥ y 1 \ge y_1 y1
在这里插入图片描述

通过画图分析发现蓝色区间不包含0,也就是说只要我 y i > 0 y_i \gt 0 yi>0 时候,要求 f i > y i f_i \gt y_i fi>yi就能限制住 f i > 0 f_i \gt 0 fi>0,即 f i f_i fi不可能有0的取值了
而红色区间,带入同样的限制 f i > y i f_i \gt y_i fi>yi,得到 f i ≥ 0 f_i \ge 0 fi0,即 f i = 0 / 1 f_i = 0/1 fi=0/1和我们描述相符
现在问题就来了,虽然 y i > 0 y_i \gt 0 yi>0 时候 f i f_i fi不可能有0的取值了但也不能取1!
也就是说我 f i f_i fi还必须落在蓝色区域里,如果 y i ≤ + ∞ y_i\le +\infin yi+那就完蛋了,满足的式子只有 f i y i > y i f_iy_i \gt y_i fiyi>yi或者 y i ≤ + ∞ f i y_i \le +\infin f_i yi+fi,分别不满足解决前提2和不现实
但已知还有一个条件 ∑ i = 1 a y i = 137 \displaystyle\sum_{i=1}^{a}y_i = 137 i=1ayi=137,可以得出 y i ≤ 137 y_i \le 137 yi137
那么 137 f i > y i 137f_i \gt y_i 137fi>yi 这个限制条件就可以让, f i f_i fi取1。
综上所述, 137 f i 137f_i 137fi f i = 1 f_i=1 fi=1落在蓝色和红色区间,但当 f i = 0 f_i=0 fi=0只落在红色区间,也就完成了线性的限制约束条件。

这时候同样的方法重做DVD在线租赁问题
已知:
如果 o r d e r i j = 0 order_{ij} = 0 orderij=0,那么 x i j = 0 x_{ij} = 0 xij=0, 也就是说客户不喜欢我决定不租
反之 o r d e r i j > 0 order_{ij} \gt 0 orderij>0,那么 x i j = 0 / 1 x_{ij} = 0/1 xij=0/1,也就是说客户喜欢我自己决定租还是不租。
改变加简化为
如果 o r i ≤ 0 or_i \le 0 ori0,那么 x i = 0 x_i = 0 xi=0, 也就是说客户不喜欢我决定不租
反之 o r i > 0 or_i \gt 0 ori>0,那么 x i = 0 / 1 x_i = 0/1 xi=0/1,也就是说客户喜欢我自己决定租还是不租。

因为限制 o r i ≤ 0 or_i \le 0 ori0时候 x i x_i xi不能取1,所以在数轴上画出0坐标,考虑如果区间是往右延申是不会包括1的,所以定义 ≤ o r i \le or_i ori
在这里插入图片描述

注意:定义和最终限制往往是同号!

通过图分析可得 x i ≤ o r i x_i \le or_i xiori是满足条件的约束,并且也不存在说如果 o r i ≤ + ∞ or_i\le +\infin ori+那就完蛋了因为 x i ≤ o r i ≤ + ∞ x_i \le or_i \le +\infin xiori+

而上面的是需要 y i ≤ f i y_i \le f_i yifi ,只能 y i ≤ + ∞ f i ≤ + ∞ y_i \le +\infin f_i \le +\infin yi+fi+,明显是无法求解的

总结

线性规划的条件可以利用区间来表示范围,数轴则是更加清晰
0/1变量两个取值实际上就是数轴上的两个点
例如 a f i + b af_i+b afi+b,当 f i f_i fi取0/1实际上就是b和a+b两个点
≤ \le ≥ \ge 表示是区间
一般分析过后适当做线性变化即可得到想要的线性限制条件


http://www.mrgr.cn/p/14210166

相关文章

C#/.NET/.NET Core优秀项目和框架2024年4月简报

前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项…

c#word文档:3.向Word文档中插入表格/4.读取Word文档中表格

--向Word文档中插入表格-- (1)在OfficeOperator项目的WordOperator类中定义向Word文档插入换页的函数NewPage (2)在WordOperator类中定义向Word文档插入表格的函数InsertTable using Microsoft.Office.Interop.Word;// 引入Mic…

30分钟彻底了解Flutter整个渲染流程(超详细)

30分钟彻底了解Flutter整个渲染流程[超详细] 从运行第一行代码出发WidgetsFlutterBinding初始化了一堆娃 三个中流砥柱SchedulerBindingRendererBindingWidgetsBinding 申请Vsync流程下发Vsync承接Vsync 从运行第一行代码出发 void main() {runApp(const MyApp()); }void runA…

linux中进程相关概念(一)

什么是程序,什么是进程,有什么区别? 程序是静态的概念,当我们使用gcc xxx.c -o pro进行编译时,产生的pro文件,就是一个程序。 进程是程序的一次运行活动,通俗点就是说程序跑起来了就是进程。 …

C++反汇编,指针和内存分配细节,面试题05

文章目录 20. 指针 vs 引用21. new vs malloc 20. 指针 vs 引用 指针是实体,占用内存空间,逻辑上独立;引用是别名,与变量共享内存空间,逻辑上不独立。指针定义时可以不初始化;引用定义时必须初始化。指针的…

Vue自定义封装音频播放组件(带拖拽进度条)

Vue自定义封装音频播放组件(带拖拽进度条) 描述 该款自定义组件可作为音频、视频播放的进度条,用于控制音频、视频的播放进度、暂停开始、拖拽进度条拓展性极高。 实现效果 具体效果可以根据自定义内容进行位置调整 项目需求 有播放暂停…

localhost 重定向次数过多

在完成javaweb作业时出现了错误初始页面只有两个功能, 但是无论是点击登录还是注册,都会跳转到login.jsp页面从网上找到的答案是代码陷入死循环,因为总是跳转到login.jsp, 所以我查看了所有servlet类中跳转到login.jsp页面的代码,逻辑上并没有问题;然后我又查看了过滤器以…

Windows平台使用CMake+MinGW64编译OpenCV

Windows平台使用CMake+MinGW64编译OpenCV (注:2年前写的笔记, 可能有些地方过时了) 目录Windows平台使用CMake+MinGW64编译OpenCV1.安装及配置环境1.1 MinGW-w641.2 CMake1.3 OpenCV源码2.CMake配置及生成2.1 新建目录2.2 CMake-GUI2.3 编译配置2.4 生成2.5 Make编译和安装3.配…

【大模型赋能开发者】海云安入选数世咨询LLM驱动数字安全2024——AI安全系列报告

近日,国内知名数字产业领域第三方调研咨询机构数世咨询发布了LLM驱动数字安全2024——AI安全系列报告。报告通过调研、公开信息收集等方式对目前十余家已具备LLM相关的应用能力安全厂商对比分析出了这一领域当前的产业现状并进行了各厂商的能力展示。 海云安凭借近…

金融业开源软件应用 评估规范

金融业开源软件应用 评估规范 1 范围 本文件规定了金融机构在应用开源软件时的评估要求,对开源软件的引入、维护和退出提出了实现 要求、评估方法和判定准则。 本文件适用于金融机构对应用的开源软件进行评估。 2 规范性引用文件 下列文件中的内容通过文中的规范…

介绍适用于 Node.js 的 Elastic OpenTelemetry 发行版

作者:来自 Elastic Trent Mick 我们很高兴地宣布推出 Elastic OpenTelemetry Distribution for Node.js 的 alpha 版本。 该发行版是 OpenTelemetry Node.js SDK 的轻量级包装,可以让你更轻松地开始使用 OpenTelemetry 来观察 Node.js 应用程序。 背景 …

x64dbg中类似于*.exe+地址偏移

在CE和xdb中,形如*.exe数字偏移形式的地址被称为模块地址,CE附加到进程后点击查看内存,显示如下图 这种地址学名叫做模块地址,在x64dbg中显示如下图: CE中可以关闭,从而显示绝对的虚拟地址,如下…

时间复杂度空间复杂度 力扣:转轮数组,消失的数字

1. 算法效率 如何衡量一个算法的好坏?一般是从时间和空间的维度来讨论复杂度,但是现在由于计算机行业发展迅速,所以现在并不怎么在乎空间复杂度了下面例子中,斐波那契看上去很简洁,但是复杂度未必如此 long long Fib…

【JavaEE网络】HTTP响应详解:状态码、报头与正文的全面解析

目录 HTTP响应(Response)认识 "状态码" (status code)认识响应 “报头”(header)认识响应 “正文”(body) HTTP响应(Response) 响应: 首行响应头空行正文 认…

MySQL#MySql表的操作

目录 一、创建表 二、查看表结构 三、修改表 1.修改表的名字 2.新增一个列 3.修改列 4.删除列 5.修改列的名称 四、删除表 一、创建表 语法: CREATE TABLE table_name (field1 datatype,field2 datatype,field3 datatype ) character set 字符集 collate 校…

一键实现在VS Code中绘制流程图

VS Code是一款常用的IDE,受到许多用户的欢迎和喜爱。而其较为出众的一点,就是较好的可拓展性,即丰富的插件应用,这些应用可以极大地提高生产效率,并优化日常使用。 流程图是一种直观的图示方法,可以用简明…

jsp 实验12 servlet

一、实验目的 掌握怎样在JSP中使用javabean 二、实验项目内容&#xff08;实验题目&#xff09; 编写代码&#xff0c;掌握servlet的用法。【参考课本 上机实验1 】 三、源代码以及执行结果截图&#xff1a; 源代碼&#xff1a; inputVertex.jsp&#xff1a; <% page lang…

[转帖]TLAB(Thread Local Allocation Buffer)

https://www.cnblogs.com/Chary/p/18034613 TLAB是虚拟机在堆内存的eden划分出来的一块专用空间,是线程专属的。在虚拟机的TLAB功能启动的情况下,在线程初始化时,虚拟机会为每个线程分配一块TLAB空间,只给当前线程使用,这样每个线程都单独拥有一个空间,如果需要分配内存,…

【前端】CSS基础(1)

文章目录 前言一、CSS基础1、 CSS是什么2、 CSS基本语法规范3、 代码风格3.1 样式格式3.2 样式大小写3.3 空格规范 4、 CSS引入方式4.1 内部样式表4.2 行内样式表4.3 外部样式 前言 这篇博客仅仅是对CSS的基本结构进行了一些说明&#xff0c;关于CSS的更多讲解以及HTML、Javasc…

YOLOv5改进 | 独家创新篇 | 利用MobileNetV4的UIB模块二次创新C3(全网独家首发)

一、本文介绍 本文给大家带来的改进机制是利用MobileNetV4的UIB模块二次创新C3&#xff0c;其中UIB模块来自2024.5月发布的MobileNetV4网络&#xff0c;其是一种高度优化的神经网络架构&#xff0c;专为移动设备设计。它最新的改动总结主要有两点&#xff0c;采用了通用反向瓶…