/*单纯形法程序*/
/*p46--5(2)*/
#include "stdio.h"
main()
{
int i,j,r,k,l,jj[4],m=4,n=7,maxjj,mini,count=0;
float
a[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}};
float
b[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 { 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=%d Theta=%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 { 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; 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.1f THE_count=%d\n",z,count); } /*p37--li1-13*/ #include "math.h" #include "stdio.h" main() { int i,j,r,k,l,jj[4],m,n,maxjj,mini,count=0; float b[4][4],e[4][4],t[4][4],y[4],maxcj,tb[4],tp[4],cb[4],cj[7],theta,lk,z; float a[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(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(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=%d Theta=%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 { t[i][j]=0.0; 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.1f THE_count=%d\n",z,count); } /*p47--6(5)*/ #include "math.h" #include "stdio.h" main() { int i,j,r,k,l,jj[4],m,n,maxjj,mini,count=0,ok=0; float b[4][4],e[4][4],t[4][4],y[4],maxcj,tb[4],tp[4],cb[4],cj[8],theta,lk,z; float a[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=%d Theta=%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 { 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