Matlab线性规划函数linprog-小白详解

这篇具有很好参考价值的文章主要介绍了Matlab线性规划函数linprog-小白详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Matlab线性规划linprog函数

最近开始想学一学数学建模的相关知识,也找了不少视频,感觉无论是PPT做的还是讲解内容没有看起来很舒服的,只能多找几个版本多看几遍然后做一下笔记,先从最基础的线性规划函数开始写。


假设需要解决以下这个线性规划问题
m a x z = 2 x 1 + 3 x 2 − 5 x 3 s . t . { x 1 + x 2 + x 3 = 7 2 x 1 − 5 x 2 + x 3 ≥ 10 x 1 + 3 x 2 + x 3 ≤ 12 x 1 , x 2 , x 3 ≥ 0 max\quad z = 2x_1+3x_2-5x_3\\s.t. \begin{cases} x_1+x_2+x_3=7 \\ 2x_1-5x_2+x_3\geq10 \\ x_1+3x_2+x_3\leq12 \\ x_1,x_2,x_3\geq0 \end{cases} maxz=2x1+3x25x3s.t. x1+x2+x3=72x15x2+x310x1+3x2+x312x1,x2,x30

z = x 1 + 2 x 2 + 5 x 3 z = x_1+2x_2+5x_3 z=x1+2x2+5x3就是目标函数,求解的目的就是求满足条件的 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3的这三个变量的值使 z z z的值最大,用到的理论其实是我研一上的一门课程优化方法里的单纯型法,是可以手算的,但是从应用角度讲用Matalb函数就可以直接得到结果,似乎参加数学建模不需要十分掌握原理。
那知道了规划问题那怎么将这些线性规划问题的系数输入到函数中呢
linprog函数的对应公式
x = l i n p r o g ( f , A , b ) x = linprog(f,A,b) x=linprog(f,A,b)
x = l i n p r o g ( f , A , b , A e q , b e q ) x = linprog(f,A,b,Aeq,beq) x=linprog(f,A,b,Aeq,beq)
x = l i n p r o g ( f , A , b , A e q , b e q , l b , u b ) x = linprog(f,A,b,Aeq,beq,lb,ub) x=linprog(f,A,b,Aeq,beq,lb,ub)
linprog参数的对应公式如下
m i n f x s . t . { A x ≤ b A e q ⋅ x = b e q l b ≤ x ≤ u b min\quad fx\\ s.t. \begin{cases} Ax\leq b \\ Aeq\cdot x=beq\\ lb\leq x \leq ub \end{cases} minfxs.t. AxbAeqx=beqlbxub
在变量数量大于1时 f , A , A e q , l b , u b f,A,Aeq,lb,ub f,A,Aeq,lb,ub这些参数都是矩阵 b , b e q b,beq b,beq这两个参数根据不等式和等式的数量可能是一个数也可能是一个矩阵。
在实际应用时就是将原规划转换成公式所需的的形式,然后将对应的系数参数提取出来,输入到函数中进行求解。
这里值得注意到的是 l i n p r o g linprog linprog函数只能求最小值,以及约束的条件只能是小于等于,所以需要对原来的线性规划进行一些转化,让线性规划的的目标变成求最小值,并且让约束条件都变成小于等于
让约束变成小于等于很简单左右两边都乘一个负号就行了那把 2 x 1 − 5 x 2 + x 3 ≥ 10 2x_1-5x_2+x_3\geq10 2x15x2+x310这个约束条件左右加一个负号变成 − 2 x 1 + 5 x 2 − x 3 ≤ − 10 -2x_1+5x_2-x_3\leq-10 2x1+5x2x310放到一起

m a x z = 2 x 1 + 3 x 2 − 5 x 3 s . t . { x 1 + x 2 + x 3 = 7 − 2 x 1 + 5 x 2 − x 3 ≤ − 10 x 1 + 3 x 2 + x 3 ≤ 12 x 1 , x 2 , x 3 ≥ 0 max\quad z = 2x_1+3x_2-5x_3\\s.t. \begin{cases} x_1+x_2+x_3=7 \\ -2x_1+5x_2-x_3\leq-10 \\ x_1+3x_2+x_3\leq12 \\ x_1,x_2,x_3\geq0 \end{cases} maxz=2x1+3x25x3s.t. x1+x2+x3=72x1+5x2x310x1+3x2+x312x1,x2,x30

接下来就是将求最大值转变为求最小值举个最简单的但是应该很有助于理解的例子
假设一个我们求函数 y = − x 2 + 5 y=-x^2+5 y=x2+5的最大值 y = − x 2 + 5 y=-x^2+5 y=x2+5函数图像如下,很明显最大值是 x = 0 x=0 x=0这一点此时最大值 y = 5 y=5 y=5
Matlab线性规划函数linprog-小白详解
那求最小值是把函数图像调过来求最小值吗?可以看到此时的函数 y 1 = x 2 − 5 y_1=x^2-5 y1=x25最小值是是 x = 0 x=0 x=0这一点此时最大值 y 1 = − 5 y_1=-5 y1=5
Matlab线性规划函数linprog-小白详解
但是我们求解的 y = − x 2 + 5 y=-x^2+5 y=x2+5函数的最大值是5实际上是 y = x 2 − 5 y=x^2-5 y=x25函数最小值的负数。那应该怎么理解呢
假设对于 y = − x 2 + 5 y=-x^2+5 y=x2+5最大值解为 x = x ∗ x=x^* x=x, y = y ∗ y=y^* y=y y ∗ = − x ∗ 2 + 5 y^*=-x^{*2}+5 y=x2+5 对两边取负值则 − y ∗ = x ∗ 2 − 5 -y^*=x^{*2}-5 y=x25 之前我们将 − y ∗ -y^* y看成 y 1 y_1 y1所以求得的 y 1 = x 2 − 5 y_1=x^2-5 y1=x25中的最小值 y 1 ∗ y_1^* y1其实是 − y ∗ -y^* y也就是 y = − x 2 + 5 y=-x^2+5 y=x2+5最大值解的负数
因此我们将原线性规划问题变为
m i n z 1 = − 2 x 1 − 3 x 2 + 5 x 3 s . t . { x 1 + x 2 + x 3 = 7 − 2 x 1 + 5 x 2 − x 3 ≤ − 10 x 1 + 3 x 2 + x 3 ≤ 12 x 1 , x 2 , x 3 ≥ 0 min\quad z_1 = -2x_1-3x_2+5x_3\\s.t. \begin{cases} x_1+x_2+x_3=7 \\ -2x_1+5x_2-x_3\leq-10 \\ x_1+3x_2+x_3\leq12 \\ x_1,x_2,x_3\geq0 \end{cases} minz1=2x13x2+5x3s.t. x1+x2+x3=72x1+5x2x310x1+3x2+x312x1,x2,x30

其中 z 1 = − z z_1=-z z1=z

好了我们已经将原问题转换为了符合使用linprog函数的形式接下来就是将函数所需要的每一个参数找出来然后放进函数里去求解,再把这个公式站过来,首先找 f f f
m i n f x s . t . { A x ≤ b A e q ⋅ x = b e q l b ≤ x ≤ u b min\quad fx\\ s.t. \begin{cases} Ax\leq b \\ Aeq\cdot x=beq\\ lb\leq x \leq ub \end{cases} minfxs.t. AxbAeqx=beqlbxub

f x = [ − 2 − 3 5 ] [ x 1 x 2 x 3 ] fx=\left[\begin{array}{c}-2 & -3 & 5 \end{array}\right]\left[\begin{array}{c}x_1 \\ x_2 \\ x_3 \end{array}\right] fx=[235] x1x2x3
所以
f = [ − 2 − 3 5 ] f=\left[\begin{array}{c}-2 & -3 & 5 \end{array}\right] f=[235]
然后再来找 A A A
A x = [ − 2 5 − 1 1 3 1 ] [ x 1 x 2 x 3 ] Ax=\left[\begin{array}{c}-2 & 5 & -1 \\1 & 3 & 1 \end{array}\right]\left[\begin{array}{c}x_1 \\ x_2 \\ x_3 \end{array}\right] Ax=[215311] x1x2x3
所以A为
A = [ − 2 5 − 1 1 3 1 ] A=\left[\begin{array}{c}-2 & 5 & -1 \\1 & 3 & 1 \end{array}\right] A=[215311]
b b b
b = [ − 10 12 ] b=\left[\begin{array}{c}-10 \\ 12 \end{array}\right] b=[1012]
然后是
A e q ⋅ x = [ 1 1 1 ] [ x 1 x 2 x 3 ] Aeq\cdot x=\left[\begin{array}{c}1 & 1 & 1 \end{array}\right]\left[\begin{array}{c}x_1 \\ x_2 \\ x_3 \end{array}\right] Aeqx=[111] x1x2x3
A e q = [ 1 1 1 ] Aeq=\left[\begin{array}{c}1 & 1 & 1 \end{array}\right] Aeq=[111]

这里由于等式约束只有一个所以 b e q = 7 beq=7 beq=7是一个数
因为原规划中 x 1 , x 2 , x 3 ≥ 0 x_1,x_2,x_3\geq0 x1,x2,x30只有下限没有上限 l b ≤ x ≤ u b lb\leq x \leq ub lbxub所以只需要输入 l b lb lb,这里的 l b lb lb就是
l b = [ 0 0 0 ] lb=\left[\begin{array}{c}0 \\ 0 \\0 \end{array}\right] lb= 000

[ x 1 x 2 x 3 ] ≥ [ 0 0 0 ] \left[\begin{array}{c}x_1 \\ x_2 \\ x_3 \end{array}\right]\geq\left[\begin{array}{c}0 \\ 0 \\0 \end{array}\right] x1x2x3 000
当分解出了所有的参数了之后用matlab进行编程

f = [-2 -3 5];
A = [-2 5 -1; 1 3 1];
b = [-10; 12];
Aeq=[1 1 1];
Beq=7;
lb = zeros(3,1);
[x,z1] = linprog(f,A,b,Aeq,Beq,lb);
z=-z1

最后的结果如下,最优解为
x ∗ = [ 6.4286 0.5714 0 ] x^*=\left[\begin{array}{c}6.4286 \\ 0.5714 \\0 \end{array}\right] x= 6.42860.57140
最优值 z ∗ = 14.5714 z^*=14.5714 z=14.5714
Matlab线性规划函数linprog-小白详解文章来源地址https://www.toymoban.com/news/detail-456842.html

到了这里,关于Matlab线性规划函数linprog-小白详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MATLAB 非线性规划

    ✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 非线性规划问题 仍是规划问题的一种,但是

    2024年02月05日
    浏览(45)
  • 数学建模| 线性规划(Matlab)

    线性规划:约束条件和目标函数都是线性的。简单点说,所有的决策变量在目标函数和约束条件中都是一次方。 Matlab函数: 参数解释: func 表示目标函数。 A 表示不等式约束条件系数矩阵,b 表示不等式约束条件常数矩阵。 Aeq 表示等式约束条件系数矩阵,beq 表示等式约束条

    2024年02月07日
    浏览(44)
  • MATLAB-数学建模-线性规划-1

    目录 1.1  线性规划模型的一般形式: 1.2  线性规划模型          minz=f(x)         s.t.     (i=1,2,···,m) 1和2组成的模型属于约束优化  f(x)称为目标函数,称为约束条件   决策变量 、 目标函数 、 约束条件 构成了线性规划的3个基本要素 min    u=cx s.t.      Ax b        

    2024年02月09日
    浏览(43)
  • 优化模型:MATLAB非线性规划

    1.1 非线性规划的定义 非线性规划(Nonlinear Programming,NLP) 是一种数学规划方法,用于解决含有非线性目标函数和/或非线性约束条件的优化问题。它是线性规划的一种扩展形式,更加广泛适用于复杂实际问题。 非线性规划的目标是最小化(或最大化)一个非线性目标函数,

    2024年02月04日
    浏览(45)
  • 整数线性规划实现(matlab分枝界定法)

    文章目录 一、本次问题 1.利用第一天所学知识求解: 2.本题理解: (1)分支界定法 背景: 基本理论(解题步骤): 求解实现1: 1.第一步 2.第二步 3.第三步 4.第四步 结论:综上,最优解:x1 = 4 ,x2 = 2 ;最优值:340  求解实现2: 结果2:最优解:x1 = 4 ,x2 = 2 ;最优值:

    2024年02月05日
    浏览(34)
  • 数学建模| 非线性规划(Matlab)

    非线性规划:约束条件和目标函数存在非线性函数。简单点说,约束条件和目标函数中至少一个决策变量不是一次方,例如三角函数、对数、多次方等。 线性规划和非线性在解决上的不同:线性规划可以有通用方法,但是非线性规划的求解是没有特定算的,只能用近似的算法

    2024年02月07日
    浏览(50)
  • MATLAB---线性规划问题求最优解(含例题)

    线性规划是运筹学的基础,在现实企业经营中,如何有效的利用有限的人力、财力、物力等资源。                    为方便大家理解,这里我们直接用一个例题为大家讲解使用matlab求解线性规划问题。 根据上图给出的线性规划问题。我们使用linprog函数解线性规划需要满

    2023年04月08日
    浏览(50)
  • 【MATLAB】线性规划问题中的绝对值问题

    在求解线性规划问题中碰到绝对值的情况: m i n z = ∣ x 1 ∣ + 2 ∣ x 2 ∣ + 3 ∣ x 3 ∣ + 4 ∣ x 4 ∣ , min z=|x_1|+2|x_2|+3|x_3|+4|x_4|, min z = ∣ x 1 ​ ∣ + 2∣ x 2 ​ ∣ + 3∣ x 3 ​ ∣ + 4∣ x 4 ​ ∣ , s . t . { x 1 − x 2 − x 3 + x 4 = 0 , x 1 − x 2 + x 3 − 3 x 4 = 1 , x 1 − x 2 − 2 x 3 + 3 x 4 = − 1 2

    2023年04月09日
    浏览(81)
  • 混合整数线性规划——选址问题(决策变量0-1问题)MATLAB

    问题: 某快餐连锁经营公司有7个地点(A1,A2,…,A7)可以设立快餐 店,由于地理位置因素,设立快餐店时必须满足以下要求: A1,A2,A3三个地点最多 可选两个,A4和A5至少选取一个,A6和A7至少选取一个 。已知各个地点设立快餐店 的投入和预计收益如表所示。   已知目前

    2024年02月13日
    浏览(40)
  • 【数学建模】《实战数学建模:例题与讲解》第二讲-线性规划(含Matlab代码)

    如果这篇文章对你有帮助,欢迎点赞与收藏~ 线性规划(Linear Programming,LP)是一种在数学规划领域中应用广泛的最优化问题解决方法。其基本思想是在一系列约束条件下,通过建立线性数学模型来描述目标函数,以求得使目标函数最大或最小的决策变量值。线性规划在运筹学

    2024年02月04日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包