运筹学_单纯形表法_大M法/两阶段法_步骤

文章目录

  • 步骤
  • latex代码

步骤

运筹学_单纯形表法_大M法/两阶段法_步骤_第1张图片

latex代码

\begin{align}
目标函数&:\min z=\sum_{i=1}^{n}c_{i}*x_{i}\\

约束条件&
\left\{\begin{matrix}

&AX=B\\
&x_{1},x_{2},...,x_{n}>=0\\

\end{matrix}\right.\\
A&=\left [ e_{1}, e_{2},..., e_{m}, a_{m+1}, ..., a_{n}\right ]\\
X&=\left [ x_{1}, x_{2},..., x_{m}, x_{m+1}, ..., x_{n}\right ]'\\
B&=\left [ b_{1}, b_{2},..., b_{m}\right ]'\\
A&=\begin{bmatrix}
  1&  0&...&  0&a_{m+1}^{1}&...&a_{n}^{1}\\
  0&  1&...&  0&a_{m+1}^{2}&...&a_{n}^{2}\\
...&...&...&...&...&...&...\\
  0&  0&...&  1&a_{m+1}^{m}&...& a_{n}^{m}
\end{bmatrix}\\\\
单纯形表构造&:\\
& \begin{vmatrix}
       & c_{i}     &       & c_{1} & c_{2}&...&c_{m}& c_{m+1}    & ... & c_{n}    & \\
  C_{B}& X_{B}     &     b & x_{1} & x_{2}&...&x_{m}& x_{m+1}    & ... & x_{n}    & \theta \\
  c_{1}& x_{1}     & b_{1} & 1     & 0    &...&0    & a_{m+1}^{1}& ... & a_{n}^{1}&b_{1}/A_{i}^{1}\\
  c_{2}& x_{2}     & b_{2} & 0     & 1    &...&0    & a_{m+1}^{2}& ... & a_{n}^{2}&b_{2}/A_{i}^{2}\\
  ...  & ...       & ...   & ...   & ...  &...&...  &...         & ... &...       &... \\
  c_{m}& x_{m}     & b_{m} & 0     & 0    &...&1    & a_{m+1}^{m}& ... & a_{n}^{m}&b_{m}/A_{i}^{m}\\
       &c_{i}-z_{i}&       & c_{1}-z_{1}& c_{2}-z_{2}&...&...&...&...& c_{n}-z_{n}&
\end{vmatrix}&\\
求目标函数min
步骤:\\
&1、计算c_{i}-z_{i}值,若不存在负c_{i}-z_{i}值,则停止迭代,否则进入第2步\\
&2、设最小值为c_{i}-z_{i}\\
&3、计算\theta值,若不存在正\theta值,则停止迭代,否则进入第4步\\
&4、设最小的正\theta值为\theta^{j}\\
&5、将非基变量x_{i}换入,基变量x_{j}换出(步骤:将A_{j}行除以A_{i}^{j},再由A_{j}行进行行变换将A_{i}列其他元素置0,b列也随之变换)\\
&6、返回第1步\\

补充:\\
&1、c_{i}-z_{i}= c_{i}-C_{B}'*A_{i}&\\
&2、若求目标函数max,则将第1步求负的最小值变为求正的最大值
&\\\\
&大M法:\\
目标函数&:\min z=原目标函数+M*\sum 松弛变量\\
&使用普通变量将松弛变量换出\\\\
&两阶段法\\
&第一阶段:\\
目标函数&:\min z=\sum 人工变量\\
&将人工变量换出\\
&\min z=0, 则意味着原目标函数有解, 继续第二阶段, 否则原目标函数无解\\
&第二阶段:将松弛变量换出\\
&将第一阶段的单纯形表除去人工变量的列形成新的单纯形表\\
目标函数&:\min z=原目标函数+M*\sum 松弛变量\\
&将松弛变量换出\\
\end{align}

你可能感兴趣的:(运筹学代码实现,算法)