运筹学通论实验课ppt对于一个标准形式的线性规划,利用单纯形法把它的基变量转化为非基变量,把一个线性规划

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运筹学通论实验课
2008.9.11
1 单纯形法对线性 规划的解法
实验原理: 实验原理
对于一个标准形式的线性规划, 对于一个标准形式的线性规划 利用单纯形法把它的基变量转化 为非基变量,把一个线性规划化 为非基变量 把一个线性规划化 为一个表格后,进行初等变换 进行初等变换. 为一个表格后 进行初等变换 使表格形成有单位子块,右侧 使表格形成有单位子块 右侧 元素非负,底行的单位子块所对 元素非负 底行的单位子块所对 应的元素为0,底行其它元素非负 底行其它元素非负, 应的元素为 底行其它元素非负 我们把单位子块1所对应的右列 我们把单位子块 所对应的右列 值称为最优解,右下端元素的相 值称为最优解 右下端元素的相 反数为最优值. 反数为最优值
-1b 最优值为: 最优值为:z=CBB
单纯形表的构造

CB XB x1 ,x2 …………..xn
β
θ
0 σ ,ZB

A cj
bi 0

检验条件: 检验条件:
小 则 *最 θ规 : b i =m in aik > 0 aik
*检验系数:δ j = cj − CBPj θi
最终单纯形表

CB XB xB
CB 3 2 2
XB x3 X4 X5
x1 -1 1 3 -2
x2 1 2 1 -3
X3 1 0 0 0
X4 0 1 0 0
x5 0 0 1 0
β
2 10 15 0
θ
-
σ ,ZB
A[M][N]={-1,1,1,0,0,1,2,0,1,0,3,1,0,0,1,2,-3,0,0,0}; B[M]={2,10,15,0};
实验原理: 实验原理
min z = C X AX = b X≥0 min z = [CB,CN] s.t. [B , N] =b
XB, XN ≥0
实验原理: 实验原理
min s .t . Z = CB X B + CN X N BX B + NX N = b XB, XN ≥ 0
min Z = CB XB + CN XN s.t. XB = B−1b− B−1NXN (1.4) XB, XN ≥ 0
如用单纯形表求如下线 性规划: 性规划
min Z=-2x1-3x2 s.t. -x1+x2≤2 x1+2x2≤10 3x1+x2≤15 xi>0,i=1பைடு நூலகம்2 划为标准形为: 划为标准形为 min Z=-2x13x2+0x3+0x4+0x5 s.t. -x1+x2+x3=2 x1+2x2+x4=10 3x1+x2+x5=15 xi>0,i=1,2,3,4,5
………..xN
β
θ
0 σ ,ZB

E 0
B-1N CN-CBB-1N
B-1b
检验条件: 检验条件:
-CBB-1 C b 小 则 *最 θ规 :
*检验系数:δ j = cj − CBPj θi
b i =m in aik > 0 aik
单纯形法步骤: 单纯形法步骤:
单纯形法 典式对应原规划的 基本解是可行的 所有Qj≥0? 否 计算 minQi|Qi<0 是 所有 aik≤0? 否
while(i<M)
{
if(i==a)
{
i++;
continue;
}
else
{
t=A[i][b]; for(j=0;j<N;j++) A[i][j]=A[i][j]t*A[a][j]; B[i]=B[i]-t*B[a]; i++;
} } }
#include <stdio.h> #define M 4; #define N 5 float A[M][N]={-1,1,1,0,0,1,2,0,1,0,3,1,0,0,1,-2,-3,0,0,0}; float B[M]={2,10,15,0}; main() {int i,j,k,p,a1,b; for(a1=0;a1<M-1;a1++) for(b=0;b<N;b++) printf("a1[%d][%d]=%f\n",a1,b,A[a1]); p=danchun4(); while(p==0) { j=danchun1(); k=danchun2(j); danchun3(k,j); p=danchun4(); } for(i=0;i<M;i++) printf("\nX[%d]=%f\t",i+1,B[i]); printf("\nZ=%f\n",-B[M-1]); }
min Z = CBB b+(CN −CBB N)XN s.t. XB = B b− B NX (1.5) N XB, XN ≥ 0
−1 −1
−1
−1
结论: 结论:
可行条件: 优化条件: 优化条件:
XB X ≥ 0 N
CN-CBB-1N≧0
−1
CBB X= 0
小 则 计算 *最 θ规 :
对偶单纯形法 典式对应原规划的 基本解的检验数 是 得到 最优解 停 没 有 最 优 解 没 有 最 优 解 是 所有 否 计算 是 所有 否 计算
θi = m in
bi aik > 0 aik
以为中心元素进行迭代
以为中心元素进行迭代
用C语言实现: 语言实现: 软件环境:TC2.0 :TC2.0或 1 软件环境:TC2.0或VC++6.0 2 矩阵的表示用二维数组
判断A[i][j]是否非负 没有最优解 跳出 是否非负?没有最优解 判断 是否非负 没有最优解,跳出 迭代. 迭代 int danchun1() { int j; for(j=0;j<N;j++) if(A[M-1][j]<0) { break; } return j; }
把选定的主元素进行初等行变换,变为单 把选定的主元素进行初等行变换 变为单 位矩阵,底行对应元素变为 底行对应元素变为0 位矩阵 底行对应元素变为 void danchun3(int a,int b) { int i,j; float p,t; p=A[a][b]; for(i=0;i<N;i++) { A[a][i]=A[a][i]/p; } B[a]=B[a]/p; i=0;
相关文档
最新文档