单纯形法例题讲解

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例1

max z=2x1+3x2

(标准形式即所有的变量均为负、所有约束条件为等式、所有的右端项系数非负)

a=(2,3) b1=(80,160,120) A2=NULL b2=NULL A3=NULL b3=NULL n.iter=n+2*m maxi=TRUE ●

simplex(a=a,A1=A1,b1=b1,maxi=TRUE): m1=3,m2=0,m3=0

m=3,n=2 a.o=a=(2,3)

if(maxi) a=-a(-2,-3) if(m2+m3==0) a=(-2,-3,0,0,0) b=(80,160,120) init=(0,0,0,80,160,120) basic=(3,4,5) eps=1e -10

out1<-simplex1(a=a,A=A,b=b,init=init,basic=basic,eps=eps) ⏹ simplex1(a=a,A=A,b=b,init=init,basic=basic,eps=eps):

N=5,M=3

nonbasic=(1,2)

if(stage==2) obfun=(-2,-3)

it=1

◆ while(!all(obfun > -eps) && (it <= n.iter))循环 pcol=3

if(stage==2) neg=(1,3)

x1+2x2<=80

4x1<=160 4x2<=120 x1,x2>=0

A1= 1 2 4 0 0 4

A= 1 2 1 0 0 4 0 0 1 0 0 4 0 0 1

tableau= 80 -1 -2 160 -4 0 120 0 -4

tableau= 80 -1 -2 160 -4 0

120 0 -4

0 -2 -3

转化为标准形式

x1+2x2+x3=80 4x1+x4=160 4x2+x5=120

x1,x2,x3,x4,x5>=0

ratios=(40,30)

prow=3

pivot(tableau,prow ,pcol) 换基迭代 pv=tableau[3,3]=-4

pcv=tableau[,3]=(-2,0,-4,-3)

tableau[-3, ] = tableau[-3, ] - (tableau[-3, 3]/pv) %o% tableau[3,]

tableau[3, ] = tableau[3, ]/(-pv)=(30,0,-1)

tableau[3,3]=1/pv=-1/4

tableau[-3, 3]=pcv[-3]/(-4)

if(stage==1) else temp=basic[3]=5 basic[3]=nonbasic[2]=2 nonbasic[2]=5 obfun =tableau[4, -1L]=(-2,3/4) it=it+1=2

至此进行了一次换基迭代(basic=(3,4,2) nonbasic=(1,5)) 再从while 循环头部开始,判断循环条件是否满足 pcol=2

if(stage==2) neg=(1,2) ratios=(20,40)

prow=1

pivot(tableau,prow ,pcol) 换基迭代 pv=tableau[1,2]=-1

pcv=tableau[,2]=(-1,-4,0,-2)

tableau[-1, ] = tableau[-1, ] - (tableau[-1, 2]/pv) %o% tableau[1,]

tableau[1, ] = tableau[1, ]/(-pv)=(20,-1,0)

tableau= 20 -1 0 160 -4 0 120 0 -4 -90 -2 0

tableau= 20 -1 0

160 -4 0

30 0 -1/4

-90 -2 0

tableau= 20 -1 0 160 -4 0 30 0 -1 -90 -2 0

tableau= 20 -1 1/2 160 -4 0

30 0 -1/4

-90 -2 3/4

tableau= 20 -1 1/2 80 0 -2 30 0 -1/4 -130 0 -1/4

tableau= 20 -1 1/2 80 0 -2 30 0 -1/4 -130 0 -1/4

tableau[1,2]=1/pv=-1/1

tableau[-1,2]=pcv[-1]/(-1)

if(stage==1) else temp=basic[1]=3 basic[1]=nonbasic[1]=1 nonbasic[21=3 obfun =tableau[4, -1L]=(2,-1/4) it=it+1=3

至此进行了两次换基迭代(basic=(1,4,2) nonbasic=(3,5)) 再从while 循环头部开始,判断循环条件是否满足 pcol=3

if(stage==2) neg=(2,3) ratios=(40,120) prow=2

pivot(tableau,prow ,pcol) 换基迭代

pv=tableau[2,3]=-2

pcv=tableau[,3]=(1/2,-2,-1/4,-1/4)

tableau[-2, ] = tableau[-2, ] - (tableau[-2, 3]/pv) %o% tableau[2,]

tableau[2, ] = tableau[2, ]/(-pv)=(40,2,-1)

tableau[2,3]=1/pv=-1/2

tableau[-2,3]=pcv[-2]/(-2)

if(stage==1) else temp=basic[2]=4 basic[2]=nonbasic[2]=5 nonbasic[21=4

tableau= 20 -1 1/2 80 0 -2 30 0 -1/4 -130 0 -1/4 tableau=

20 -1 1/2 80 4 -2 30 0 -1/4 -130 2 -1/4

tableau= 40 0 0

80 4 -2

20 -1/2 0

-140 3/2 0 tableau=

40 0 0

40 2 -1

20 -1/2 0

-140 3/2 0

tableau=

40 0 0 40 2 -1/2 20 -1/2 0 -140 3/2 0 tableau= 40 0 -1/4 40 2 -1/2 20 -1/2 1/8

-140 3/2 1/8

相关文档
最新文档