首页 > 其他分享 >线性规划

线性规划

时间:2024-08-06 21:07:12浏览次数:6  
标签:matrix .. 线性规划 text sum &&&&

目录

资料

2016-国家队论文

性质

线性规划的形式为 (松弛型)

\[\begin{matrix}\text{最大/小化} &&&&\sum\limits_{j=1}^nc_jx_j \\\text{满足约束} &&&&\sum\limits_{j=1}^{n+m}a_{i,j}x_j=b_i &&&,i\in[1..m] \\&&&& x_j\geqslant 0 &&&,j\in[1..n]\end{matrix} \]

也可以用矩阵表示

\[\begin{matrix} \text{最大/小化} &&&&c^Tx \\ \text{满足约束} &&&&Ax= b \\ &&&& x\geqslant 0 \end{matrix}\]

求解

单纯形法

前提

我们可以不加证明的给出

  1. 每个约束所形成的都是凸形区域
  2. 多个凸形区域求交也是凸形区域
    所以我们可以知道,线性规划的局部最优解有且仅有一个,也就是全局最优解。所以我们可以贪心的求最值。

算法描述

在这里,我们重新表示松弛型。

\[\begin{matrix} \text{最大化} &&&&\sum\limits_{j=1}^nc_jx_j \\ \text{满足约束} &&&&x_{i+n}=b_i-\sum\limits_{j=1}^na_{i,j}x_j &&&,i\in[1..m] \\ &&&& x_j\geqslant 0 &&&,j\in[1..n+m] \end{matrix}\]

我们定义:

  • 基变量:等式左边的变量
  • 非基变量:等式右边的变量
    此时我们可以获得一个可行解 ( \(b>0\) ): 所有基变量为 \(b\) 的值,非基变量全为 \(0\)
    并且目标函数一定可以使用非基变量表示。

单纯形法有三个主要操作: pivotsimplex,以及 initialization

转轴 (pivot)

在一个等式中,我们选择基变量 ( \(x_B\) )和一个非基变量( \(x_N\) ),将其地位互换。

具体来说,最开始有

\[x_{B}=b_i-\sum\limits_{j=1}^na_{i,j}x_j \]

那么,做完转轴操作

\[x_N=\frac{b_i-\sum\limits_{j\neq N}a_{i,j}x_j-x_B}{a_{i,N}} \]

此时,将 \(x_N\) 代换入其它等式即可。

simplex

在每次操作时,我们先在目标函数中找到一个系数 \(\geqslant 0\) 的非基变量 \(x_e\)。
然后我们再在约束中找到使 \(a_{l,e} \geqslant 0\) 并且最小化 \(\dfrac{b_l}{a_{l,e}}\) 的 \(l\),执行 pivot 即可。

终止贪心的标志是 \(\forall j\in[1..n], c_j\leqslant0\)

initialization

initialization 的作用是在 \(\exists i\in[1..m], b_i\leqslant 0\) 时,找到一组初始解。

具体来说,我们引入一个辅助线性规划

\[\begin{matrix}\text{最大化} &&&&-x_0 \\\text{满足约束} &&&&x_{i+n}=b_i-\sum\limits_{j=1}^na_{i,j}x_j+x_0 &&&,i\in[1..m] \\&&&& x_j\geqslant 0 &&&,j\in[1..n+m]\end{matrix} \]

如果原线性规划的一个可行解为 \((x^{'}_1,x^{'}_2,\dots,x^{'}_{n+m})\),那么辅助线性规划也有一个可行解: \((0,x^{'}_1,x^{'}_2,\dots,x^{'}_{n+m})\) ,并且也一定是辅助线性规划的最优解。

而辅助线性规划的解是容易构造的。
\(x_0\) 的系数在每一个约束中都是 \(+1\),我们找到最小的 \(b_l\leqslant 0\),将 \(x_0\) 在这个约束中换为基变量 (pivot操作 ),第 \(l\) 个约束就变为

\[\begin{matrix} x_0 = -b_l+\sum_{j=1}^na_{l,j}x_j+x_{n+l} &,-b_l\leqslant0 \end{matrix}\]

约束 \(i\neq l\) 变为

\[x_{n+i} = b_i-b_l+\sum_{j=1}^n(a_{l,j}-a_{i,j})x_j+x_{n+l} \]

此时 \(b_l\leqslant b_i \rightarrow b_i-b_l \geqslant0\),即求出了一组可行解。
再将 \(x_0\) 换为非基变量,即可求出最优解。

伪代码

\[\begin{align} &initialization(A,\ b,\ c)\\ &while\ \exists e\ that\ c_e\ >\ 0\ do\\ &\ \ \ \ find\ the\ index\ l\ that\ A_{le}\ >\ 0\ and\ minimizes\ \frac{b_l}{A_{le}}\\ &\ \ \ \ if\ \forall l,\ A_{le}\ \leqslant\ 0\ then\\ &\ \ \ \ \ \ \ \ return\ Unbounded\\ &\ \ \ \ else\ \\ &\ \ \ \ \ \ \ \ pivot(A,\ b,\ c,\ l,\ e)\\ &\ \ \ \ end\ if\\ &endwhile\\ \end{align}\]

时间复杂度

一次 pivot 是 \(\mathcal O(nm)\) 的,但是操作次数不是多项式的。

但是线性规划是有多项式算法的,如 椭球算法/内点算法
不过单纯形法的运行效率在实际应用中比较高,故大概率是够用了...吗

标签:matrix,..,线性规划,text,sum,&&&&
From: https://www.cnblogs.com/CloudDreamLake/p/18345906/linear-programming

相关文章

  • 蒙特卡洛模拟(3)————求解有约束的非线性规划问题
    目录前言一、问题提出二、蒙特卡罗模拟的大体思路1.求出每个变量的大致范围2.生成随机数进行模拟试验三、手动计算每个变量的大致范围1.处理等式问题————进行降维2.处理不等式问题————得到大致范围(1)先处理简单的约束,得到变量范围(2)对复杂的约束进行放缩,得到变量范围四、代......
  • 【算法】浅析线性规划算法【附完整示例】
    线性规划算法:优化资源配置,提升经济效益1.引言在现代社会,资源优化配置是提高经济效益的关键。线性规划算法作为一种优化工具,广泛应用于经济学、工程学、管理学等领域。本文将带你了解线性规划算法的原理、使用方法及其在实际应用中的意义,并通过代码示例和图示帮助大家更好......
  • 线性规划对偶与网络流
    线性规划对偶与网络流1https://ac.nowcoder.com/acm/contest/81598/KK-SlaytheSpire:GameDesign题目大意给定一个\(n\)个点\(m\)条边的有向无环图\(G=(V,E)\)以及一个整数\(k\),其中所有无入度的点为源点,所有无出度的点为汇点。要求选择最少数量的非源点和......
  • 线性规划的求解方法
    文章目录基于求解器求解基于问题求解利用Lindo求解0-1整数非线性规划转化为线性规划基于求解器求解问题:min⁡z=∣x1∣+2∣x2∣+∣x3∣+∣x4∣\mathop{\min}z=\left|x_1\right|+2\left|x_2\right|+\left|x_3\right|+\left|x_4\right|......
  • 线性规划(LP)问题
     约束最优化——线性规划(LP)问题1线性规划     1.1图解法(计算机不适用,便于理解)     1.2单纯形法     1.3计算几何的方法(待更新)1线性规划约束优化问题:给定约束条件和目标函数,计算约束条件下目标函数的最大(最小)值。目标函数和约束条件都是线性......
  • 线性规划模型复习总结
    线性规划(LinearProgramming,LP)是一种数学优化方法,用于在给定约束条件下最大化或最小化目标函数。线性规划广泛应用于经济、工程、管理等领域,通过建立数学模型,帮助决策者找到最优解决方案。一、线性规划数学模型1.1模型三要素目标函数(ObjectiveFunction)目标函数是线性规划......
  • Lingo学习(二)——线性规划基础、矩阵工厂
    一、线性规划基础(一)方法①一个线性规划中只含一个目标函数。(两个以上是多目标线性规划,Lingo无法直接解)②求目标函数的最大值或最小值分别用max=…或min=…来表示。③以!开头,以;结束的语句是注释语句;④线性规划和非线性规划的本质区别是目标函数是否线性......
  • 6.12(1)线性规划应用案例的求解
    (1)线性规划应用案例的求解1、基本要求通过一个农业生产计划优化安排的实例求解,培养学生解决实际线性规划问题的初步能力;熟悉线性规划的建模过程;掌握Matlab优化工具箱中线性规划函数的调用。2、主要内容某村计划在100公顷的土地上种植a、b、c三种农作物。可以提供的劳力、粪肥和......
  • 线性规划对偶学习笔记
    对于一个线性规划问题,若其有最优解,那么其对偶问题也有最优解,且最优值相等。如果对于一个困难的线性规划问题,其对偶形式比较简单,此时就可以通过线性规划对偶,解决其对偶问题,从而解决原问题。线性规划的原问题与对偶问题的变化规则:对于一个标准型线性规划:\[\max\quadC^Tx\\s.t......
  • 运筹学习题Python精解——线性规划
    题1某企业有三个车间生产同一种产品。每件产品由四个零件1和三个零件2组成。两个零件需耗用两种原材料A和B。已知这两种原材料的供应量分别为300kg和500kg。由于三个车间拥有的设备及工艺条件不同,每个工班原材料耗用量和零件产量也不同。见下表(三个车间每班用料和生产......