当前位置:文档之家› 运筹学——解对偶单纯形法

运筹学——解对偶单纯形法

对偶单纯形法正是基于对称的想法,从一个基解X0开始,X0不是 基可行解,但它的检验数全部非正,对应的对偶问题的基解Y0二
CBB-1是基可行解从X0迭代到另一个基解X1,在迭代过程中保持它 对应的对偶问题的基解是基可行解,逐步消除原问题基解的不可行性,最终达到两者同时为可行解,也就同时是最优解了。这就是对偶单纯 形法的基本思想。
否则转向STEP4;
Step4确定换入变量xOk,其中 水0k=min ot [3lt; [3lt<0;1 <t<n+m ;
Step5取x0l为换出变量,x0k为换入变量进行迭代,然后重复上过程 直到得到最优解。
程序
#i nclude<stdio.h>
#in clude<math.h>
int m,n;
float M=1000000.0;
float A[100][100];
float C[100];
float b[100];
float seta[100];
int num[100];
float z=0;
void in put();
void prin t();
int duiouda nchu nxin g1();
给出一个线性规划问题:
Max z=CX
AX<b
X X)
其对偶问题是:
Min w = Yb
YAXC
YX)
单纯形法解决线性规划问题的思想是:
从问题(1)的一个基解X0开始迭代到另一个基解,在迭代过程中 保持基解的可行性,同时它对应的对偶问题 ⑵的基解Y0二CBB-1的 不可行性逐步消失,直到Y0是问题 ⑵的可行解时,X0就是问题(1)的 最优解了。
{
int i,j;
int flag=O;
float min;
for(j=0;j <n ;j++)
if(A[a][j]>=0)
flag=1;
else {flag=O;break;}
if(flag==1)
{printf("\n该线性规划无最优解!\n"); return -1;}
for(j=0;j <n ;j++)
for(i=0;i<m;i++)
sea nf("%f",&b[i]);
prin tf("\n请输入目标函数各个变量的系数所构成的系数阵
for(i=0;i <n ;i++)
sea nf("%f",&C[i]);
}
int duiouda nchu nxin g1()
{
int i,k;
int flag;
float min=0;
{
temp2=A[i][l];
b[i]=b[i]-b[c]*temp2;
for(j=0;j< n;j++)
A[i][j]=A[i][j]-A[c][j]*temp2;
}
}
temp3=C[l];
for(i=0;i <n ;i++)
C[i]=C[i]-A[c][i]*temp3;
z=z+b[c]*temp3;
{
int i,j,c,l;
float temp1,temp2,temp3;
c=q;
l=p;
temp仁A[c][l];
b[c]=b[c]/temp1;
for(j=0;j <n ;j++)
A[c][j]=A[c][j]/temp1;
for(i=0;i<m;i++)
{
if(i!=c)
if(A[c][l]!=0)
}
void prin t()
{
int i,j;
printf("\n
\n");
prin tf("\t");
for(i=0;i <n ;i++)
{
prin tf("%.3f\t",-C[i]);
}
prin tf("%.3f",z);
printf("\n
for(i=0;i<m;i++)
if(b[i]>=0)
flag=1;
else {flag=0;break;}
if(flag==1)
return -1;
for(i=0;i<m;i++)
{
if(mi n>b[i])
{mi n=b[i];k=i;}
}
return k;
} int duiouda nchu nxin g2(i nt a)
{
if(A[a][j]<0)
seta[j]=-C[j]/A[a][j];
else seta[j]=M;
}
mi n=M;
for(j=0;j <n ;j++)
{
if(min>=seta[j])
{mi n=seta[j];i=j;}
}
nu m[a]=i+1;
return i;
}
void duiouda nchunxin g3(i nt p,i nt q)
题目:对偶单纯形法解线性规划问题
小组成员:
摘要:
运筹学是辅助人们进行科学管理的一种数学方法.而对偶单纯形 法是线性规划中重要的数学方法,在简化运算,解决实际问题中具有 重要的应用。它是解决研究线性约束条件下线性目标函数的极值问题 的数学理论和方法,广泛应用于军事作战、经济分析、经营管理和工 程技术等方面。为合理地利用有限的人力、物力、财力等资源作出的 最优决策,提供科学的依据。在经济管理、交通运输、工农业生产等 经济活动中,提高经济效果是人们不可缺少的要求。关键词:对偶单纯形法线性规划最优解正文:单纯形法和对偶单纯形法的基本思想:
for(i=0;i<m;i++)
for(j=0;j <n ;j++)
sca nf("%f",&A[i][j]);
prin tf("\n请输入初始基变量的数字代码num矩阵:\n");
for(i=0;i<m;i++)
sca nf("%d",&n um[i]);
prin tf("\n请输入方程组右边的值矩阵b:\n");
算法:
用对偶单纯形法解决生产资i和人工变量为基变量的正则解X0,
若X0是可行的则X0是最优解,
停止,否则转向STEP2;
Step2确定换出变量xOI,其中x0l=min{xOr;xOr<O};
Step3如果对所有非基变量xOj,0jX),则该问题无可行解,运算停止,
int duiouda nchu nxin g2(i nt a);
void duiouda nchunxin g3(i nt a,i nt b);
void in put()
{printf("请输入方程组的系数矩阵维数,m行n列:\n");
sca nf("%d%d",&m,&n);
int i,j;
printf("请输入方程组的系数矩阵A(%d行%£列):\n",m,n);
相关主题