#include< stdio.h>
#include< conio.h>
#include< alloc.h>
#include< math.h>
void cnvrttozro(float **x, float *ob,float *c, float* zj, float* zc, int nc, int nv,float *a)
{
int i,j;
for(i=0;i
if(fabs(c[i])==0)
c[i]=0;
if (fabs(a[i])==0)
a[i]=0;
for(j=0;j
if(fabs(x[i][j])==0)
x[i][j]=0;
}
}
for(i=0;i
if(fabs(ob[i])==0)
ob[i]=0;
if(fabs(zj[i])==0)
zj[i]=0;
if(fabs(zc[i])==0)
zc[i]=0;
}
}
void read(int nv,int nc,float **x, float *ob, int *b, float *c)
{
int i,j;
for(i=0;i
printf("constant\n");
for(i=0;i
for(j=0;j
scanf("%f",&c[i]);
}
printf("enter the obj function:\n");
for(i=0;i
for(i=nv;i<(nv+nc);i++)
ob[i]=0;
for(i=0;i
for(j=nv;j<(nv+nc);j++)
{
x[i][j]=0;
}
}
for(i=0;i
for(i=0;i
}
void display(int nc,int nv,float **x,float *ob,float *c,float *zj,float *zc,int *b,float *a)
{
int i,j;
printf("\n-----------------------------------------------------------\n");
printf("B\tCB\tXB\t ");
for(i=0;i<(nc+nv);i++)
printf("X%d \t",i);
printf("\n-------------------------------------------------------------\n");
for(i=0;i
printf("X%d %5.2f %5.2f",b[i],ob[b[i]],c[i]);
for(j=0;j<(nc+nv);j++)
{
printf(" %5.2f",x[i][j]);
}
printf("%5.2f",a[i]);
printf("\n");
}
printf("\n-------------------------------------------------------------\n");
printf("\t\tZj");
for(i=0;i
printf("\t%5.2f",zj[i]);
}
printf("\n\t\tdj");
for(i=0;i
printf("\t%5.2f",zc[i]);
}
}
void cal(int *b,int nc,int nv, float *ob, float *zj,float *zc, float **x,float *c)
{
float a[10], min,key,val,k;
int i,j,flag=0,rw,col;
void dis( int nc, float *c, float *ob, int *b);
for(i=0;i
zj[i]=0;
for(j=0;j
zj[i]=zj[i]+(ob[b[j]]*x[j][i]);
}
}
j=0;
for(i=0;i
cnvrttozro(x,ob,c, zj, zc, nc,nv,a);
display(nc,nv,x,ob,c,zj,zc,b,a);
getch();
for(i=0;i
if(zc[i]<0)
flag=1;
}
if(flag==0)
{
dis(nc,c,ob,b);
getch();
exit(0);
}
k=zc[0];
col=0;
for(i=1;i
k=zc[i];
col=i;
}
for(i=0;i
a[i]=-1;
else a[i]=c[i]/x[i][col];
cnvrttozro(x,ob,c, zj, zc, nc,nv,a);
min=999;
for(i=0;i
{
min=a[i];
rw=i;
}
key=x[rw][col];
for(j=0;j
c[rw]=c[rw]/key;
for(i=0;i
if(i==rw)
continue;
c[i]=c[i]-c[rw]*x[i][col];
val=x[i][col];
for(j=0;j
x[i][j]=x[i][j]-x[rw][j]*val;
}
}
b[rw]=col;
cnvrttozro(x,ob,c,zj, zc,nc,nv,a);
}
void dis( int nc, float *c, float *ob, int *b)
{
int i;
float a;
for(i=0;i
a=a+(c[i]*ob[b[i]]);
}
printf("\n\nMaximized value is z=%f",a);
}
void main()
{
int nc,nv;
float **x;
float *ob;
float *c;
int *b;
float i;
float *zj;
float *zc;
clrscr();
printf("\t\t***Simplex Method***\n\n");
printf("Enter the number of constraints:");
scanf("%d",&nc);
printf("Enter the number of variables:");
scanf("%d",&nv);
x=(float**)malloc(nc*sizeof(float*));
for(i=0;i
x[i]=(float*)malloc((nc+nv)*sizeof(float));
}
ob=(float*)malloc((nc+nv)*sizeof(float));
c=(float *)malloc(nc*sizeof(float));
b=(int *)malloc(nc*sizeof(int));
zj=(float *)malloc((nc+nv)*sizeof(float));
zc=(float *)malloc((nc+nv)*sizeof(float));
read( nv,nc,x,ob,b,c);
do
{
getch();
cal(b,nc,nv,ob, zj,zc,x,c);
getch();
}while(1);
getch();
}
No comments:
Post a Comment