数学建模第三天:数学建模算法篇之线性规划及matlab的实现

news2024/11/18 13:50:29

目录

 一、前言

二、线性规划简介

1、线性规划模型介绍与特征

2、线性规划模型的一般形式

三、单纯形法

1、标准化

2、单纯形法解题

四、matlab解决问题1、matlab线性规划函数

2、解题代码


 一、前言

        数学建模,本意就是用来解决生活中的问题,我们今天想讲一讲装修的相关问题。没错,我们的伍老师通过自己赚的钱,斥巨资买了一套单身公寓。买完单身公寓后,伍老师发现,装修有杂七杂八的一系列问题,太麻烦了!此时伍老师的男朋友小李站出来了,对伍老师特别man的说:“别担心,这不是还有我吗,我来处理这些事情好了!”但是小李是一个四肢发达,头脑简单的人,对装修更是一窍不通。但是牛皮已经吹出去了,话再收回来就要被啪啪打脸了。所以,为了维护小李作为男人的尊严,我们今天就需要帮一下小李。

        引例:伍老师刚拿到毛坯房,觉得房子里面空气质量太差了,于是决定买一些花朵来改善一下房子里的空气。已知伍老师看中了满天星、向日葵、洋桔梗以及红玫瑰四个品种。其单价、功效与装饰效果如下:

A.洋桔梗:每平方米75元,一天能净化0.8千克空气,装饰效果评分为2颗星

B.满天星:每平方米130元,一天能净化0.72千克空气,装饰效果评分为7颗星

C.向日葵:每平方米105元,一天能净化0.75千克空气,装饰效果评分为6颗星

D.红玫瑰:每平方米200元,一天能净化0.65千克空气,装饰效果评分为10颗星

        已知,伍老师打算拿出一千块买花,预计拿出20平方米的空间放绿植,且希望装饰效果评分不低于45颗星,那么如何购买能使空气质量净化效果最佳?

二、线性规划简介

1、线性规划模型介绍与特征

         线性规划(Linear Programming,缩写为LP)通常研究资源的最优利用、设备最佳运行等问题。例如,当任务或目标确定后,如何统筹兼顾,合理安排,用最少的资源(如资金、设备、原标材料、人工、时间等)去完成确定的任务或目标;企业在一定的资源条件限制下,如何组织安排生 产获得最好的经济效益(如产品量最多 、利润最大)。

        线性规划的数学模型由决策变量 Decision variables 、目标函数Objective function 与约束条件Constraints 构成。称为线性规划三要素。

线性规划模型的特征是:

1.解决问题的目标函数是多个决策变量的线性函数,通常是求最大值或最小值;

2.解决问题的约束条件是一组多个决策变量的线性不等式或等式。

2、线性规划模型的一般形式

        一般地,假设线性规划数学模型中,有m个约束,有n个决策变量xj, j=1,2…,n,目标函数的变量系数用cj表示, cj称为价值系数。约束条件的变量系数用aij表示,aij称为工艺系数。约束条件右端的 常数用bi表示,bi称为资源限量。则线性规划数学模型的一般表达式可写成:

        由此,引例的线性规划模型可以写为:

        xjj=1,24)分别代表洋桔梗、满天星、向日葵以及红玫瑰所占面积(平方米),得到下列线性规划模型:

max\, \, z=0.8x_{1}+0.72x_{2}+0.75x_{3}+0.65x_{4}

\left\{\begin{matrix} 75x_{1}+130x_{2}+105x_{3}+200x_{4}\leq 1000 & \\ 2x_{1}+7x_{2}+6x_{3}+10x_{4}\geq 45& \\ x_{j}\geq 0 \, \, \, \, \, \, \, \, \, \, \, \, \, \, \, \, j=1,2,3,4 \end{matrix}\right.

     

三、单纯形法

        如何解出线性规划问题的解?很简单,学过高中数学的同学们应该知道:画图嘛,画二维平面图可以解决两个变量的线性规划问题,画空间涂可以解决三个变量的线性规划问题。那么四个变量、五个变量的呢?大家是想让自己变为高纬度生物,再解出题目呢,还是用其他方法解出来?诶嘿,还真有一种方法解决线性规划问题,叫做单纯形法,请听小编娓娓道来。

1、标准化

        在用单纯法求解线性规划问题时,为了讨论问题方便,需将线性规划模型化为统一的标准形式。 线性规划问题的标准型为:

        1.目标函数求最大值

        2.约束条件都为等式方程

        3.变量xj非负

        4.常数bi非负

        5.在≤左端加入松驰变量 (slack variable);在≥号左端减去剩余变量(Surplus variable)

        6.目标函数是最小值,为了化为求最大值,令Z′ =-Z,得到 max Z′ =-Z

        那么,例题的标准化模型为:

max\, \, z=0.8x_{1}+0.72x_{2}+0.75x_{3}+0.65x_{4}

\left\{\begin{matrix} 75x_{1}+130x_{2}+105x_{3}+200x_{4}+x_{5}= 1000 & \\ 2x_{1}+7x_{2}+6x_{3}+10x_{4}-x_{6} =45& \\ x_{j}\geq 0 \, \, \, \, \, \, \, \, \, \, \, \, \, \, \, \, j=1,2,3,4,5,6 \end{matrix}\right.

2、单纯形法解题

计算步骤:

1.求初始基可行解,列出初始单纯形表,求出检验数。其中

基变量的检验数必为零;

2.判断:

a)若λj0(j=1,2,n)得到最优解;

b)某个λk>0aik0(i=12,…,m)则线性规划具有无界解(见例1-18)

c)若存在λk>0aik (i=1,…,m)不全非正,则进行换基;

3.换基:

a)选进基变量 :设λk=maxλj | λj >0,xk为进基变量

b)选出基变量 ,求最小比值:

个比值最小 ,选最小比值对应行的基变量为出基变量, 若有相同最小比值,则任选一个。aLk为主元素。

(c)求新的基可行解:用初等行变换方法将aLk 化为1,k列其它元素化为零(包括检验数行)得到新的可行基及基本可行解,再判断是否得到最优解。

四、matlab解决问题
1、matlab线性规划函数

        其实单纯形法在数学建模里面只作为了解即可,因为我们更偏重于动手编程能力。在MATLAB里面,有一个专门解决线性规划的函数,叫做linprog,其函数与参数含义如下:

①x=linprog(c, A, b)

min Z=cX

s.t. AX\leq b

注意:A与b均为矩阵的形式

②x=linprog(c,A,b,Aeq,beq)

min Z=cX

s.t. \, \, \, \, \, \begin{matrix}AX\leq b\\ Aeq X=beq \end{matrix}

注意:1.若没有不等式:AX\leq b 存在,则令A=[ ],b=[ ]

        2.A、Aeq、b、beq均为矩阵的形式

③x=linprog(c,A,b,Aeq,beq, VLB,VUB)

min Z=cX

s.t. \, \, \, \, \, \begin{matrix}AX\leq b\\ Aeq X=beq \end{matrix}

VLB\leq X\leq VUB

注意:1.若没有等式约束: Aeq X=beq , 则令Aeq=[ ], beq=[ ]

        2. A、Aeq、b、beq、VLB、VUB均为矩阵的形式

2、解题代码

    c=[-0.8 -0.72 -0.75 -0.65];
    A=[-2 -7 -6 -10;75 130 105 200];
    b=[-45 ; 1000];
    Aeq=[];
    beq=[];
    vlb=[0,0,0,0];
    vub=[];             
    [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub);
   -fval,x

结果为:

        由此可见,洋桔梗买5.3125平方米,向日葵买5.7292平方米时,既能保证在预算之内,又能让房子更加温馨有氛围,同时也能净化最多的空气!看得出来,伍老师还有小李与向日葵以及洋桔梗是绝配,更可能是因为,伍老师就是小李的太阳,给予小李足够多的温暖,就和向日葵一样!

        好的,本期的算法课就到这里结束啦,感兴趣的小伙伴们给小编点一个小心心可好?

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

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

相关文章

二叉树的前中后序遍历写法归纳

如题,对应力扣题目如下: 144.二叉树的前序遍历145.二叉树的后序遍历94.二叉树的中序遍历 1.递归 1.1 先序遍历 根 -> 左 -> 右 所以,这个递归函数先打印根节点的值,然后递归地遍历左子树,最后递归地遍历右子树。如果传入的根节点是空,则直接返回…

Linux学习记录—— 이십일 进程间通信(3)信号量和消息队列

文章目录 1、消息队列2、信号量1、了解概念2、信号量理解 3、接口4、理解IPC 1、消息队列 两个进程ab之间系统维护一个队列结构,a进程往队列里放信息,信息编号为1,b进程往队列里放信息,信息编号为2;之后开始读取数据的…

HADOOP伪分布式安装步骤

HADOOP安装步骤 一.创建Hadoop用户 二.更新apt和安装vim编辑器 更新apt: sudo apt-get install update安装VIM编辑器: apt install vim在弹出的提示中输入yes(y) 三、安装SSH和配置SSH无密码登录 apt install openssh-serverssh登录: ssh localh…

Vue2组件通信专题

组件通信专题 一、vue2中常用的6中组件通信方式 1. props 适用于的场景:父子组件通信 注意事项: 如果父组件给子组件传递数据(函数):本质其实是子组件给父组件传递数据。 如果父组件给子组件传递数据&#xff08…

【致敬未来的攻城狮计划】— 连续打卡第七天:(电脑重装系统)学习RA产品家族选型手册

系列文章目录 1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下 2.开发环境的选择和调试(从零开始,加油) 3.欲速则不达,今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.…

大数据hadoop课程实验总结

1一.安装hadoop 本门课程使用的是centos7.2 64位操作系统,原生hadoop2.7.7,java1.7版本。 安装centos7.2系统: 创建系统的同时创建一个名为hadoop的账户。这一步不难,此处就不再详说。 没有hadoop用户可以创建一个Hadoop用户: …

ChatBox安装--ChatGPT的桌面客户端

ChatBox 是什么 是开源的 ChatGPT API (OpenAI API) 桌面客户端,Prompt 的调试与管理工具,支持 Windows、Mac 和 Linux。 > github地址 下载链接 支持的平台: Windows : 请下载.msi安装包 Mac:请下载.dmg(推荐…

【微服务笔记13】微服务组件之Config配置中心基础环境搭建

这篇文章,主要介绍微服务组件之Config配置中心基础环境搭建。 目录 一、Config配置中心 1.1、什么是配置中心 1.2、Config配置中心特点 二、搭建Config配置中心 2.1、配置Git仓库 2.2、创建ConfigServer服务端 (1)引入依赖 &#xff…

性能测试,监控磁盘读写iostat

性能测试,监控磁盘读写iostat iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出 CPU使用情况。同vmstat一样,ios…

【iOS-#import <> ““, @class和C- #include<> ““, 】

前言 寒假分享会的遗漏问题总结 引入 在C/CPP语言里&#xff0c;引入某个头文件的操作 #include<iostream> #include<string>也有 #include "string"同样在OC里面 引入某个类会用到 #import关键字 #import "LoginViewController.h" #im…

web开发HTML生成PDF的三种解决方案(服务器端mpdf、html2canvas.js、浏览器打印、PDF虚拟打印机)

系列文章目录 python数据可视化开发(4)&#xff1a;爬取对应地址的pdf文档并分类保存到本地文件夹&#xff08;爬虫&#xff09;php使用mPDF实战案例分析字符串太长时文本变小无法自动分页的解决方案web开发HTML生成PDF的三种解决方案&#xff08;服务器端mdf、h2pdf.js、浏览…

Nuxt.js - 超详细实现路由 “伪静态“,将浏览器网页路径 URL 链接后面加上 .html 后缀名称(可以自定义任何结尾后缀名称)详细示例教程

前言 正常的项目,路由都是 /index | /user/add 这种,但有一个办法可以让其后面带上 .html,比如:/index.html。 本文 在 Nuxt.js 项目中,描述了如何实现伪静态详细教程,让页面路由后面都跟上一段自定义后缀名,比如 .html / .asp, 你可以按照本文的教程,最终得到伪静态…

阿赵的MaxScript学习笔记分享十四《Struct结构体的使用和面向对象的思考》

MaxScript学习笔记目录 大家好&#xff0c;我是阿赵 之前写了一些MaxScript的学习笔记&#xff0c;里面实现的功能不算很复杂&#xff0c;所以都是使用了偏向于面向过程的方式去编写的。 我本人其实是比较习惯用面向对象的方式去编写代码。关于面向过程和面向对象之间的优缺点…

3.5 方程组的状态与解的迭代改善

学习目标&#xff1a; 如果我要学习方程组的状态与解的迭代改善&#xff0c;我会采取以下步骤&#xff1a; 学习迭代方法的基本理论&#xff1a;首先&#xff0c;我会学习迭代方法的基本概念、原理和公式&#xff0c;包括雅可比迭代法、高斯-赛德尔迭代法和逐次超松弛迭代法等…

融合CDN行为分析动态加速解决方案

网络延迟对电商企业产生了巨大的负面影响&#xff0c;延迟是电子商务的杀手&#xff0c;网站访客等待的时间越长&#xff0c;最终实现转化的可能性就越小&#xff0c;同时他们对你的网站品牌的认可度也就越低&#xff0c;快速的网站内容交付是具有全球意识的电商企业不可或缺的…

Qt优秀开源项目之十八:QtService

QtService是一个用于实现Windows服务或unix守护进程的开源项目 github地址&#xff1a;https://github.com/qtproject/qt-solutions/tree/master/qtservice 源码可以编译成动态库&#xff0c;也可以直接在项目中引用源码 源码目录qtservice/examples中包含了三个例子&#xff0…

【Linux】system V 消息队列 | system V 信号量(简单赘述)

文章目录 1 . system V 消息队列(了解)接口查看消息队列 2.system V 信号量 (了解)1.进程互斥等概念的理解2.认识信号量3. 接口 这两部分主要是了解即可&#xff0c;为后面学习做铺垫 1 . system V 消息队列(了解) 为了让两个进程间通信 创建一个队列queue 进程A可以通过消息队…

Python——第2章 数据类型、运算符与内置函数

目录 1 赋值语句 2 数据类型 2.1 常用内置数据类型 2.1.1 整数、实数、复数 2.1.2 列表、元组、字典、集合 2.1.3 字符串 2.2 运算符与表达式 2.2.1 算术运算符 2.2.2 关系运算符 2.2.3 成员测试运算符 2.2.4 集合运算符 2.2.5 逻辑运算符 2.3 常用内置…

Kubernetes 笔记(15)— 应用保障、容器资源配额、容器状态探针概念及使用

作为 Kubernetes 里的核心概念和原子调度单位&#xff0c;Pod 的主要职责是管理容器&#xff0c;以逻辑主机、容器集合、进程组的形式来代表应用&#xff0c;它的重要性是不言而喻的。 在上层 API 对象的基础上&#xff0c;一起来看看在 Kubernetes 里配置 Pod 的两种方法&…

dell t630服务器风扇控制笔记记录(耗时一天)

1、打开虚拟控制台得用IE&#xff1b; 2、Dell PowerEdge T640 加装显卡之后风扇狂转问题解决 - 知乎 感谢知乎Billy&#xff0c; 操作步骤&#xff1a; 1、查看iDrac版本&#xff0c;必须在3.30.30.30及以下&#xff0c;之后的版本关闭了手动控制风扇转速的权限&#xff0…