欢迎来到天天文库
浏览记录
ID:45346513
大小:44.50 KB
页数:6页
时间:2019-11-12
《单纯形法C语言程序代码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、长春工业大学课程设计程序代码课程设计名称运筹学课程设计专业信息管理与信息系统班级130506班学生姓名于松南、张鑫蕊、赵改玲、赵海潮指导教师 王亚君、王忠吉2015年7月3日#include#includeintm;//记录约束条件方程组的个数intn;//记录未知量的个数floatM=1000000.0;floatA[100][100];//用于记录方程组的数目和系数floatC[100];//用于存储目标函数中各个变量的系数floatb[100];//用于存储常约束条件中的常数floatCB[100];//用于存储基变量的系数floatset
2、a[100];//存放出基与入基的变化情况floatcn[100];//存储检验数矩阵floatx[100];intnum[100];//用于存放出基与进基变量的情况floatZ=0;//记录目标函数值voidshuru();voidprint();intmincz();intfind_line(inta);voidexchange(inta,intb);intmain(){inti,j=0;intp,q,temp;//q:换入,p:换出shuru();printf("------------------------------------------------------
3、--------------------");printf("tCBtXBtbt");for(i=0;i4、);Z=Z+x[i]*C[i];}printf("Z=%.2f",Z);break;}print();p=find_line(q);printf("p=%d,q=%d",p,q);if(q==-1)break;exchange(p,q);}return0;}intmincz(){inti,k=0;intflag=0;//检验数标记floatmin=0;for(i=0;i=0)flag=1;else{flag=0;break;}if(flag==1)return-1;//进行到此处,说明存在<0的检验数//找到最小的检验数,作为换入变量for(i5、=0;icn[i]){min=cn[i];k=i;}}returnk;}intfind_line(inta){inti,k,j;intflag=0;floatmin;k=a;for(i=0;i0)seta[i]=b[i]/A[i][k];elseseta[i]=M;}min=M;for(i=0;i6、{if(min>=seta[i]){min=seta[i];j=i;}}num[j]=k+1;CB[j]=C[k];returnj;}voidexchange(intp,intq){inti,j,c,l;floattemp1,temp2,temp3;c=p;//行号,换出l=q;//列号,换入temp1=A[c][l];//A[c][l]主元b[c]=b[c]/temp1;for(j=0;j7、[i]-b[c]*temp2;//主元所在列,其余元素化为0for(j=0;j
4、);Z=Z+x[i]*C[i];}printf("Z=%.2f",Z);break;}print();p=find_line(q);printf("p=%d,q=%d",p,q);if(q==-1)break;exchange(p,q);}return0;}intmincz(){inti,k=0;intflag=0;//检验数标记floatmin=0;for(i=0;i=0)flag=1;else{flag=0;break;}if(flag==1)return-1;//进行到此处,说明存在<0的检验数//找到最小的检验数,作为换入变量for(i
5、=0;icn[i]){min=cn[i];k=i;}}returnk;}intfind_line(inta){inti,k,j;intflag=0;floatmin;k=a;for(i=0;i0)seta[i]=b[i]/A[i][k];elseseta[i]=M;}min=M;for(i=0;i6、{if(min>=seta[i]){min=seta[i];j=i;}}num[j]=k+1;CB[j]=C[k];returnj;}voidexchange(intp,intq){inti,j,c,l;floattemp1,temp2,temp3;c=p;//行号,换出l=q;//列号,换入temp1=A[c][l];//A[c][l]主元b[c]=b[c]/temp1;for(j=0;j7、[i]-b[c]*temp2;//主元所在列,其余元素化为0for(j=0;j
6、{if(min>=seta[i]){min=seta[i];j=i;}}num[j]=k+1;CB[j]=C[k];returnj;}voidexchange(intp,intq){inti,j,c,l;floattemp1,temp2,temp3;c=p;//行号,换出l=q;//列号,换入temp1=A[c][l];//A[c][l]主元b[c]=b[c]/temp1;for(j=0;j7、[i]-b[c]*temp2;//主元所在列,其余元素化为0for(j=0;j
7、[i]-b[c]*temp2;//主元所在列,其余元素化为0for(j=0;j
此文档下载收益归作者所有