单纯形法程序.docx
- 文档编号:5731941
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:14
- 大小:15.54KB
单纯形法程序.docx
《单纯形法程序.docx》由会员分享,可在线阅读,更多相关《单纯形法程序.docx(14页珍藏版)》请在冰豆网上搜索。
单纯形法程序
/*单纯形法程序*/
/*p46--5
(2)*/
#include"stdio.h"
main()
{
inti,j,r,k,l,jj[4],m=4,n=7,maxjj,mini,count=0;
floata[4][7]={{0,2,-1,1,0,0,0},{60,3,1,1,1,0,0,},{10,1,-1,2,0,1,0},{20,1,1,-1,0,0,1}};
floatb[4][4],e[4][4],t[4][4],y[4],maxcj,tb[4],tp[4],cb[4],cj[7],theta,lk,z;
jj[1]=4;jj[2]=5;jj[3]=6;
for(i=0;i for(j=0;j b[i][j]=0.0; for(i=1;i printf("*********************************\n"); for(i=0;i {for(j=0;j printf("%6.1f",a[i][j]);printf("\n");} for(i=1;i for(j=1;j {y[j]=0.0; for(i=1;i for(j=1;j { for(r=1;r if(jj[r]==j){cj[j]=0.0;break;} cj[j]=a[0][j]; for(i=1;i } maxcj=cj[1];maxjj=1; for(j=2;j if(maxcj {maxcj=cj[j];maxjj=j;} k=maxjj; for(j=1;j while(maxcj>0) {count++; for(i=1;i {tb[i]=0.0; for(r=1;r for(i=1;i {tp[i]=0.0; for(r=1;r /*for(i=1;i for(i=1;i printf("tb--tp\n");*/ theta=1000.0; for(j=1;j {if(tp[j]>0) if(theta>tb[j]/tp[j]) {theta=tb[j]/tp[j];mini=j;} } /*printf("LLL=%dTheta=%f\n",mini,theta);*/ l=mini; lk=tp[l]; jj[l]=k; printf("*********************************\n"); for(i=0;i for(j=0;j e[i][j]=0.0; for(i=1;i for(i=1;i e[l][l]=1.0/lk; for(i=1;i {for(j=1;j /*for(j=1;j for(i=1;i for(j=1;j {t[i][j]=0.0; for(r=1;r for(i=1;i {for(j=1;j {b[i][j]=t[i][j]; printf("%6.1f",b[i][j]);} printf("x%d\n",jj[i]); } for(i=1;i for(j=1;j {y[j]=0.0; for(i=1;i for(j=1;j { for(r=1;r if(jj[r]==j){cj[j]=0.0;break;} cj[j]=a[0][j]; for(i=1;i } maxcj=cj[1];maxjj=1; for(j=2;j if(maxcj {maxcj=cj[j];maxjj=j;} k=maxjj; for(j=1;j } for(i=1;i {tb[i]=0.0; for(r=1;r z=0.0; for(i=1;i {cb[i]=a[0][jj[i]]; printf("x%d=%6.1f\n",jj[i],tb[i]); z+=tb[i]*cb[i];} printf("Max_z=%5.1fTHE_count=%d\n",z,count); }_ /*p37--li1-13*/ #include"math.h" #include"stdio.h" main() { inti,j,r,k,l,jj[4],m,n,maxjj,mini,count=0; floatb[4][4],e[4][4],t[4][4],y[4],maxcj,tb[4],tp[4],cb[4],cj[7],theta,lk,z; floata[4][6]={{0,700,1200,0,0,0},{360,9,4,1,0,0,},{200,4,5,0,1,0},{300,3,10,0,0,1}}; m=4;n=6; jj[1]=3;jj[2]=4;jj[3]=5; for(i=0;i for(j=0;j b[i][j]=0.0; for(i=1;i printf("*********************************\n"); for(i=0;i {for(j=0;j printf("%6.1f",a[i][j]);printf("\n");} for(i=1;i for(j=1;j {y[j]=0.0; for(i=1;i for(j=1;j { for(r=1;r if(jj[r]==j){cj[j]=0.0;break;} cj[j]=a[0][j]; for(i=1;i } maxcj=cj[1];maxjj=1; for(j=2;j if(maxcj {maxcj=cj[j];maxjj=j;} k=maxjj; for(j=1;j while(maxcj>0.0001) {count++; for(i=1;i {tb[i]=0.0; for(r=1;r for(i=1;i {tp[i]=0.0; for(r=1;r /*for(i=1;i for(i=1;i printf("tb--tp\n");*/ theta=1000.0; for(j=1;j {if(tp[j]>0) if(theta>tb[j]/tp[j]) {theta=tb[j]/tp[j];mini=j;} } /*printf("LLL=%dTheta=%f\n",mini,theta);*/ l=mini; lk=tp[l]; jj[l]=k; printf("*********************************\n"); for(i=0;i for(j=0;j e[i][j]=0.0; for(i=1;i for(i=1;i e[l][l]=1.0/lk; for(i=1;i {for(j=1;j /*for(j=1;j for(i=1;i for(j=1;j {t[i][j]=0.0; for(r=1;r for(i=1;i {for(j=1;j {b[i][j]=t[i][j]; printf("%6.1f",b[i][j]);} printf("x%d\n",jj[i]); } for(i=1;i for(j=1;j {y[j]=0.0; for(i=1;i for(j=1;j { for(r=1;r if(jj[r]==j){cj[j]=0.0;break;} cj[j]=a[0][j]; for(i=1;i } maxcj=cj[1];maxjj=1; for(j=2;j if(maxcj {maxcj=cj[j];maxjj=j;} k=maxjj; for(j=1;j }/*while--end*/ for(i=1;i {tb[i]=0.0; for(r=1;r z=0.0; for(i=1;i {cb[i]=a[0][jj[i]]; printf("x%d=%6.1f\n",jj[i],tb[i]); z+=tb[i]*cb[i];} printf("Max_z=%5.1fTHE_count=%d\n",z,count); } /*p47--6(5)*/ #include"math.h" #include"stdio.h" main() { inti,j,r,k,l,jj[4],m,n,maxjj,mini,count=0,ok=0; floatb[4][4],e[4][4],t[4][4],y[4],maxcj,tb[4],tp[4],cb[4],cj[8],theta,lk,z; floata[4][8]={{0,-1,-1,3,0,0,-1000,-1000},{11,1,-2,1,1,0,0,0},{3,2,1,-4,0,-1,1,0},{1,1,0,-2,0,0,0,1}}; m=4;n=8; jj[1]=4;jj[2]=6;jj[3]=7; for(i=0;i for(j=0;j b[i][j]=0.0; for(i=1;i printf("*********************************\n"); for(i=0;i {for(j=0;j printf("%6.1f",a[i][j]);printf("\n");} for(i=1;i for(j=1;j {y[j]=0.0; for(i=1;i for(j=1;j { for(r=1;r if(jj[r]==j){cj[j]=0.0;break;} cj[j]=a[0][j]; for(i=1;i } maxcj=cj[1];maxjj=1; for(j=2;j if(maxcj {maxcj=cj[j];maxjj=j;} k=maxjj; for(j=1;j while(maxcj>0.001&&count<5) {count++; for(i=1;i {tb[i]=0.0; for(r=1;r for(i=1;i {tp[i]=0.0; for(r=1;r /*for(i=1;i for(i=1;i for(i=1;i if(ok==-1) {printf("***z\030\354***\n"); return;}*/ theta=1000.0; for(j=1;j {if(tp[j]>0.01) if(theta>tb[j]/tp[j]) {theta=tb[j]/tp[j];mini=j;} } /*printf("LLL=%dTheta=%f\n",mini,theta);*/ l=mini; lk=tp[l]; jj[l]=k; printf("*********************************\n");/*getchar();*/ for(i=0;i for(j=0;j e[i][j]=0.0; for(i=1;i for(i=1;i e[l][l]=1.0/lk; for(i=1;i {for(j=1;j /*for(j=1;j for(i=1;i for(j=1;j {t[i][j]=0.0; for(r=1;r for(i=1;i {for(j=1;j