MATLAB的线性规划工具

问题描述

某次考试,总分100分.分三种题型:

单选题13题,每题3分,共39分.
多选题10题,每题3.1分,共31分.
判断题12题,每题2.5分,共30分.

交卷之后,只知道分数为79.3,问:单选题、多选题、判断题分别做错了多少?

MATLAB meshz辅助求解

假设单选题、多选题、判断题做错数量分别为x,y,z.则可列方程:
3 x + 3.1 y + 2.5 z = 100 − 79.3 3x + 3.1y + 2.5z = 100-79.3 3x+3.1y+2.5z=100−79.3
3 x + 3.1 y + 2.5 z = 20.7 3x + 3.1y + 2.5z = 20.7 3x+3.1y+2.5z=20.7

上述函数是一个空间平面,如果不理解为什么是空间平面可以参考直线与平面方程的几何表达.

最直接的办法就是把平面绘制出来,找到上面的正整数解,脚本如下:

s = linspace(0, 10, 11);
t = linspace(0, 10, 11);
[ss, tt] = meshgrid (s, t);
x = tt;
y = ss;
z = -(3.*x + 3.1.*y  - 20.70)/2.5;
pbaspect ([1 1 1]);meshz(x, y, z);patch([0 10 10 0], [0 0 10 10], [0 0 0 0]) camproj('perspective')
xlabel('x');
ylabel('y');
set( gca, 'ydir', 'reverse' )

对应图像:

绿色平面之上的部分就是要搜索的区域.
脚本中x,y变量使用的都是正整数,所以只要确保z也是正整数就可以了,可以查看z的数值:

显然z只能取1,对应的x,y分别为4与2,所以这个问题的解是: x = 4 , y = 2 , z = 1 x = 4, y = 2, z = 1 x=4,y=2,z=1

MATLAB intlinprog函数求解

显然,上述的方法很难让人满意,因为这个解是靠肉眼观察出来的.
实事上MATLAB有专门函数求解,就是intlinprog().

上述问题可以写成下列条件:

x 1 , x 2 , x 3 x_1, x_2, x_3 x1​,x2​,x3​为整数

x 1 ≥ 0 x_1 \geq 0 x1​≥0

x 2 ≥ 0 x_2 \geq 0 x2​≥0

x 3 ≥ 0 x_3 \geq 0 x3​≥0

3 x 1 + 3.1 x 2 + 2.5 x 3 = 20.7 3x_1 + 3.1x_2 + 2.5x_3 = 20.7 3x1​+3.1x2​+2.5x3​=20.7

求 3 x 1 + 3.1 x 2 + 2.5 x 3 3x_1 + 3.1x_2 + 2.5x_3 3x1​+3.1x2​+2.5x3​的最小值.

编制脚本:

Aeq = [3,3.1,2.5];
beq = 20.7;
intcon = 1:3;
f = [3;3.1;2.5];A = [-1,0,0;0,-1,0;0,0,-1;];b = [0;0;0];x = intlinprog(f,intcon,A,b,Aeq,beq)

常见线性规划问题

甲乙两种溶液,要兑成另一个产品.
但有成本限制,不成超过15,甲的单价是3,乙的是5.
甲乙都含有害成分,对它浓度的要求不能超过2%,对于此成分,甲的浓度为5%,乙的浓度为1%.
现在想把这个产品尽可能地做重,问应该分别使用多少的甲与乙?

直观的观察是,要花更少的钱,做去更多的产品,只能尽量使用便宜的甲,但甲的有害成分又比较高,一味的选用甲也不行,这是问题所在.

这是一个典型的线性规划问题.假设甲乙两种溶液的质量分别是x,y,可以列出下面的约束不等式:

3 x + 5 y ≤ 15 ( 1 ) 3x + 5y \leq 15 \ \ \ \ (1) 3x+5y≤15    (1)

( 0.05 x + 0.01 y ) / ( x + y ) < 0.02 (0.05x + 0.01y)/(x+y) < 0.02 (0.05x+0.01y)/(x+y)<0.02

化简后:

3 x − y ≤ 0 ( 2 ) 3x-y \leq 0 \ \ \ \ (2) 3x−y≤0    (2)

所求为令目标函数x+y最大.

两个不等式边界直线为AB与CG,目标函数直线与EF平行:

显然G是所求的点,
求解线性方程得AB与CG交点为, ( 5 6 , 5 2 ) (\frac{5}{6}, \frac{5}{2}) (65​,25​)
最大值为 10 3 \frac{10}{3} 310​

linprog求解

编制脚本:

A = [3,5;3,-1;];
b = [15;0];
f = [-1;-1];
x = linprog(f,A,b)

结果与手工计算相同.

参考

  • 直线与平面方程的几何表达
  • https://www.mathworks.com/help/optim/ug/linprog.html
  • https://www.mathworks.com/help/optim/ug/intlinprog.html

MATLAB的线性规划工具相关推荐

  1. matlab 线性规划求最大值,MATLAB求解线性规划(含整数规划和01规划)问题.pdf

    MATLAB求解线性规划(含整数规划和01规划)问题 MATLAB 求解线性规划(含整数规划和0-1 规划)问题 线性规划是数学规划中的一类最简单规划问题,常见的线性规划是一个有约 束的,变量范围为有 ...

  2. matlab 矩阵线性规划,MATLAB求解线性规划(含整数规划和0-1规划)问题

    对于这类线性规划问题,数学理论已经较为完善,可以有多种方法求解此类问题.但写这篇文章的目的并不是为了介绍数学理论,我们这里主要讲解如果利用工具求解这一类线性规划问题. 最著名,同时也是最强大的数学最优 ...

  3. 利用matlab点云工具处理点云

    利用matlab处理点云 本文主要分享利用matlab点云工具的相关模块来处理点云,并通过点云轮廓对点云体积进行简单的估计测量. 目录 利用matlab处理点云 目录 主要的操作流程图 2具体流程 1 ...

  4. 线性规划单纯形法的matlab程序,线性规划单纯形法的MATLAB实现_数学专业.doc

    摘要:运筹学有着长远的发展历史,并且不断地发展变化出许多分支理论,线性规划是运筹学中专研较早,发展比较快速,对现实社会作用涵盖面广,理论系统趋于成熟的一个重要分支,虽然其只是运筹学的一小部分,但是作用 ...

  5. 基于MATLAB的线性规划解决方法——单纯形法

    基于MATLAB的线性规划解决方法--单纯形法 简介 基本思想 基本原理 具体实例 初等行变换 获取初始检验数 单纯形表原理函数 简介 本文主要介绍采用单纯形表解决线性规划问题(LP),将单纯形表中的 ...

  6. (转)Matlab深度学习工具试玩手册一:基本操作与迁移学习

    原贴博客:https://blog.csdn.net/zfrycw/article/details/80633979 目录 前言 一.利用现成网络进行分类 二.构建简单的分类网络 三.迁移学习 前言 ...

  7. 通过matlab的遗传算法工具求解规划问题

    matlab的Optimization工具中有遗传算法工具箱,可利用该界面工具求解规划问题. 界面定义: @fun            目标函数(最后小化问题)    A*x<=b       ...

  8. matlab作图局部放大工具

    matlab作图局部放大工具 一.前言 本文主要介绍一个在matlab中放大局部图的工具.ZoomPlot,其下载地址见:https://www.mathworks.com/matlabcentral ...

  9. 线性规划问题的数学建模matlab,数学建模讲座之三——利用Matlab求解线性规划问题(linprog函数).ppt...

    数学建模讲座之三--利用Matlab求解线性规划问题(linprog函数) 利用Matlab求解线性规划问题 线性规划是一种优化方法,Matlab优化工具箱中有现成函数linprog对如下式描述的LP ...

最新文章

  1. MyBatis批量插入几千条数据慎用foreach
  2. javascript创建对象
  3. canvas画布 带箭头的虚线_娇小女生只能走可爱风?No!带你解锁别样的高级穿搭法则...
  4. java面试题八 传值传引用
  5. Shell 中各种括号的作用
  6. windows7原版iso镜像_一定收藏,常用操作系统原版下载地址整理,Win7 Win10 Deepin...
  7. 指针运算符 * 说明
  8. 从武汉模式走向中国模式,打造人工智能产业发展的“中国样板”
  9. *福音*阿里云redis5.0.*集群搭建及java代码测试详细(终于不用ruby了)
  10. iOS UICollectionView的简单使用和常用代理方法
  11. mysql备份之lvm
  12. python不允许使用关键字_Python不允许使用关键字作为变量名,但是允许使用内置函数名作为变量名,不过这会改变函数名的含义,所以不建议这样做...
  13. R语言 聚类分析代码 系统聚类 K均值聚类 可视化
  14. 计算机键盘按键数量,电脑键盘有一百多个按键,有3个很少人会碰
  15. mysql 根据经纬度查询范围点
  16. 一级计算机无法正常评分,计算机一级评分标准
  17. 常见的网络营销技巧有哪些?
  18. javascript 的七种继承方式(三)组合继承
  19. 论文重复率超过多少不能发表?
  20. 电影网站站架构(第一版)

热门文章

  1. 51单片机 IIC OLED屏幕驱动+Proteus仿真+实物验证示例程序
  2. 05_SQL注入_功能语句报错注入盲注
  3. 聊一聊HTTPS双向认证的简单应用
  4. sudo no tty present and no askpass program specified
  5. 百度云虚拟主机详细使用流程
  6. 高通Linux Android 平台中的蓝牙功能学习 (4)-- Android Marshmallow 中的蓝牙 4.2
  7. 跑步适合戴哪种耳机不掉?专业跑步耳机推荐
  8. 天猫精灵,还缺点啥?
  9. 机器学习—正则化方法—L1正则化、L2正则化
  10. schema的基本使用