📄 ipp.m
字号:
clc
clear all
format rat
disp('ALL IPP PROBLEM');
m=input('Enter the dimension : ');
disp('1.Minimisation 2.Maximization ');
ch=input('Entre your choice : ');
disp('Enter the coefficients of the objective function : ');
b(1)=0;
for i=2:1:m+1
b(i)=input('');
if(ch==2)
b(i)=b(i)*(-1);
end
end
n=input('Enter the number of constrains : ');
for i=1:1:n
disp(sprintf('Enter the coefficients of <= constrain No %d : ',i));
for j=2:1:m+1
a(i,j)=input('');
end
disp('Enter the constant in the constrain : ')
a(i,1)=input('');
end
aa=[a; b];
ey=eye(n);
ey1=zeros(1,n);
ey=[ey;ey1];
for i=1:1:n
if(aa(i,1)<0)
for j=1:1:m+1
aa(i,j)=aa(i,j)*(-1);
end
end
end
%clc
aa=[aa ey];
flag=1;
ite=0;
many=0;
basis=m+1:1:m+n;
while(flag==1) %
disp(sprintf('ITERATION NO :%d',ite))
disp(aa)
ite=ite+1;
y=1;
[aa basis]=phase1(m,n,aa,y,basis);
flag=basis(n+1);
end %while loop ends
inte=0;
while(inte==0)
basis=basis(1:n);
cons=aa(1:n,1);
%fracpart=double(frac(sym(cons)));
fracpart=cons-floor(cons);
[maxi maxpos]=max(fracpart);
if maxi==0
flag=0;
inte=1;
else
flag=1;
disp(sprintf('Gomory constrained formed using x%d ',basis(maxpos)));
%eq=double(frac(sym(aa(maxpos,:))));
eq=aa(maxpos,:)-floor(aa(maxpos,:));
p=[aa(1:n,:) zeros(n,1)];
q=[aa(n+1,:),0];
eq=[-eq 1];
n=n+1;
aa=[p;eq;q];
basis(n)=m+n;
while(flag==1)
disp(sprintf('ITERATION NO :%d',ite))
disp(aa)
ite=ite+1;
[aa basis]=duall(m,n,aa,basis);
flag=basis(n+1);
end
cons=aa(1:n,1);
fracpart=double(frac(sym(cons)));
[maxi maxpos]=max(fracpart);
if maxi==0
inte=1;
end
end
end
disp('Final Iteration : ');
disp(aa)
disp('')
disp('The Solution is : ');
for i=1:1:n
disp(sprintf('x%d =',basis(i)))
disp(rats(aa(i,1)))
end
disp('The Optimum value is ')
if ch==1
disp(rats(-aa(n+1,1)))
else
disp(rats(aa(n+1,1)))
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -