运筹学解对偶单纯形法Word格式文档下载.docx

上传人:b****1 文档编号:15005108 上传时间:2022-10-26 格式:DOCX 页数:9 大小:137.56KB
下载 相关 举报
运筹学解对偶单纯形法Word格式文档下载.docx_第1页
第1页 / 共9页
运筹学解对偶单纯形法Word格式文档下载.docx_第2页
第2页 / 共9页
运筹学解对偶单纯形法Word格式文档下载.docx_第3页
第3页 / 共9页
运筹学解对偶单纯形法Word格式文档下载.docx_第4页
第4页 / 共9页
运筹学解对偶单纯形法Word格式文档下载.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

运筹学解对偶单纯形法Word格式文档下载.docx

《运筹学解对偶单纯形法Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《运筹学解对偶单纯形法Word格式文档下载.docx(9页珍藏版)》请在冰豆网上搜索。

运筹学解对偶单纯形法Word格式文档下载.docx

YAXC

YX)

单纯形法解决线性规划问题的思想是:

从问题

(1)的一个基解X0开始迭代到另一个基解,在迭代过程中保持基解的可行性,同时它对应的对偶问题⑵的基解Y0二CBB-1的不可行性逐步消失,直到Y0是问题⑵的可行解时,X0就是问题

(1)的最优解了。

对偶单纯形法正是基于对称的想法,从一个基解X0开始,X0不是基可行解,但它的检验数全部非正,对应的对偶问题的基解Y0二

CBB-1是基可行解从X0迭代到另一个基解X1,在迭代过程中保持它对应的对偶问题的基解是基可行解,逐步消除原问题基解的不可行性,最终达到两者同时为可行解,也就同时是最优解了。

这就是对偶单纯形法的基本思想。

算法:

用对偶单纯形法解决生产资料分配问题的步骤:

Stepl找出一组以定基元素xOi和人工变量为基变量的正则解X0,

若X0是可行的则X0是最优解,

停止,否则转向STEP2;

Step2确定换出变量xOI,其中x0l=min{xOr;

xOr<

O};

Step3如果对所有非基变量xOj,0jX),则该问题无可行解,运算停止,

否则转向STEP4;

Step4确定换入变量xOk,其中水0k=minot[3lt;

[3lt<

0;

1<

t<

n+m;

Step5取x0l为换出变量,x0k为换入变量进行迭代,然后重复上过程直到得到最优解。

程序:

#include<

stdio.h>

#include<

math.h>

intm,n;

floatM=1000000.0;

floatA[100][100];

floatC[100];

floatb[100];

floatseta[100];

intnum[100];

floatz=0;

voidinput();

voidprint();

intduioudanchunxing1();

intduioudanchunxing2(inta);

voidduioudanchunxing3(inta,intb);

voidinput()

{printf("

请输入方程组的系数矩阵维数,m行n列:

\n"

);

scanf("

%d%d"

&

m,&

n);

inti,j;

printf("

请输入方程组的系数矩阵A(%d行%£

列):

m,n);

for(i=0;

i<

m;

i++)

for(j=0;

j<

n;

j++)

%f"

A[i][j]);

printf("

\n请输入初始基变量的数字代码num矩阵:

%d"

num[i]);

\n请输入方程组右边的值矩阵b:

seanf("

b[i]);

C:

\n请输入目标函数各个变量的系数所构成的系数阵

i<

C[i]);

}

intduioudanchunxing1()

{

inti,k;

intflag;

floatmin=0;

if(b[i]>

=0)

flag=1;

else{flag=0;

break;

if(flag==1)

return-1;

if(min>

b[i])

{min=b[i];

k=i;

returnk;

}intduioudanchunxing2(inta)

intflag=O;

floatmin;

if(A[a][j]>

else{flag=O;

\n该线性规划无最优解!

return-1;

if(A[a][j]<

0)

seta[j]=-C[j]/A[a][j];

elseseta[j]=M;

min=M;

if(min>

=seta[j])

{min=seta[j];

i=j;

num[a]=i+1;

returni;

voidduioudanchunxing3(intp,intq)

inti,j,c,l;

floattemp1,temp2,temp3;

c=q;

l=p;

temp仁A[c][l];

b[c]=b[c]/temp1;

A[c][j]=A[c][j]/temp1;

if(i!

=c)

if(A[c][l]!

temp2=A[i][l];

b[i]=b[i]-b[c]*temp2;

j<

n;

A[i][j]=A[i][j]-A[c][j]*temp2;

temp3=C[l];

C[i]=C[i]-A[c][i]*temp3;

z=z+b[c]*temp3;

voidprint()

\n

\n"

\t"

%.3f\t"

-C[i]);

%.3f"

z);

x(%d)\t"

num[i]);

A[i][j]);

%.3f\n"

b[i]);

}main()

inti,j=0;

intp,q;

input();

if(A[i][num[i]-1]<

b[i]=-b[i];

jvn;

A[i][j]=-A[i][j];

X(%d)\t"

i+1);

printf("

RHS\n"

while

(1)

q=duioudanchunxing1();

if(q==-1)

\n所得解已经是最优解!

print();

{printf("

x(%d)=%.3f\t"

num[i],b[i]);

z=%.3f"

p=duioudanchunxing2(q);

if(q==-1)break;

duioudanchunxing3(p,q);

流程图:

duioudanchunxing1();

duioudanchunxing2(inta);

duioudanchunxing3(inta,intb);

Ali][iFAE]貼也:

方:

伽於.

i=i+l

参考文献:

[1]胡运权,甘应爱.运筹学教程[M].北京:

清华大学出版社,2009.

[2]王周宏.运筹学基础[M].北京:

清华大学出版社,北京交通大学出

版社,2010.

[3]何钦铭,颜晖.C语言程序设计[M].浙江:

浙江科学技术出版社,

2003.

[4]吕凤煮.C++语言程序设计教程[M].北京:

人民邮电出版社

.2009.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 信息与通信

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1