Luận văn thạc sĩ toán học: Phương pháp điểm trong và ứng dụng
Trang 1-57-
Phu Luc Một số thuật toán điểm trong giải bài toán quy hoạch tuyến tính ở dạng chính tắc
*%##%sk+okseksks+okkse£E+e£'Thuật toán tỷ lệ affine **** FFE EEREERRRAER ERE EERE
function[X,dem]=main(A,b,c)
x=timnghiemxuatphat(A,c,b);
[X,dem]=hamchinh2(A,c,x);
FCIAC ICI I AOR ICR ICR I CR Cf aC fe ak Fe fe fe € << C
function[x,y]=kiemtra(s,x,y)
%Xx,s la vec to cot
epsi=0.000001;
a=length(x);
T=ones(1,a);
X=diag(x);
hl=I*X*s;
h2=-X*X*s;
J=0;
for i=1:length(s)
if s(i)>=0
J=i*l;
bQ)=s();
end
end
bị
k1=length(b);
k2=length(s);
if(kl == k2)&(hl<epsi)
fprintf{(Nghiem hien hanh da toi uu.\n')
fprinf(x= %g',X);
fprinf(%g',y);
elseif (h2>=0)
fprinfCMuc tieu toi uu la am vo cuc)
else
return
end
SOIC đc Ác do CAC ACCA ECACC ACA CACC A A CACC OE
Trang 2function[x,T]=kiemtra2(x)
j=0;
b=0;
k=0.01;
:length(x)
J=l+l;
if (x(i)==0)I(x(i)<k)
Tels
for
break
else
b0)=x@);
end
end
b2=length(x);
if(length(b)==b2)
T=0;
end
2 Re c dị eof fe fe 2 fe 2k a Re 2 28 ok eo oe oc os ac os ae ok ae ok ake akc ae ae
function[y,s]=nghiemdoingau(A,x,c)
%x.¢ la vecto cot
X=diag(x);
yl=A*X*X*A';
y2=inv(y);
y3=A*X*X*%c;
y=y2"y3;
s=c-A'*y;
33K oe eo He A fe oR RC AC Rk ae ake 2 fe di k dể c eo ak a ae a ae
function[x2]=timnghiemxuatphat(A,c,b) M=1000;
[m,n]=size(A);
x=ones(n+1,1);
e=ones(n,1);
Al=b-A*e;
for i=1:(n+1)
if (i<=n)
cl(,1)=cŒ,1);
else
c1(,1)=M;
end
Trang 3- 59 -
end
c1;%vec to c khi them thanh phan
for i=1:m
for j=1:(n+1)
if j<=n
A2(,=AG,)s
else
A2(i,J=ALG,1)5
end
end
end
A2;%Matran A khi them thanh phan
(x1,d]=hamchinh2(A2,cl,x);
for i=1:(n+1)
if (i<=n)
x2(,1)=x1(,1);
end
end
x2;
3X đc đc 4444444444444 "huật toán Gidm the SERRE RR RAR AAA AAA ARR
function[x2,y2,s2]=nghiemtoiuu(A,c,b)
MI=100;
M2=200;
[m,n]=size(A);
e=ones(n,1);
for i=1:(n+2)
if (i<=n)
el (i,1)=c(i,1);
end
if i==n+1
cl(,1)=MI;
end
ifi==n+2
cl(i,1)=0;
end
end
cl%vec to c khi them thanh phan
%tim b gach
A2=b-A*e;
Trang 4:(m+l)
for j=1:(n+2)
if (j<=n)&&(i<=m)
A30j)=AG¡j);
end
if G==n+1)&&(i<=m)
A3(i,jJ=A2(i, 1)s
end
if G==n+2)&&(i<=m)
if ==m+1)&&(j<=n)
A3G,)=VG,D;
end
m+1)&&(j==n+1)
A3(i,j)=0;
end
ifG==m+1)&&(j==n+2)
A3G,)=1;
end
end
end
A3;%Matran A khi them thanh phan
for i=1:(n+2)
if (i<=n)
x(i,1)=1;
end
ifi==n+l
x(Œ,I)=l;
end
ifi==n+2
x(,1)=M2-(e-c)'*e;
yG,1)=0;
end
Trang 5we§T x
if i==m+1
yd,1)=-1;
end
end
if i==n+1
s(i,1)=M1;
end
ifi==n+2
sq,1)=l;
end
end
§S;
{[x1,y1,s1]=main(A3,x,y,s,c 1);
for i=1:(n+2)
if (i<=n)
x2(,1)=x1(,1);
end
end
x2
for i=1:(m+1)
if (i<=m)
y24,1)=y1,1);
end
end
y2;
for k=1:(n+2)
if (k<=n)
s2(k,1)=s1(k,1);
end
end
s2;
FICCI ACI AICI ICICI a A I a AC a GIR I OR Ia a a
function[x,y3,s]=main(A,x,y,s,c)
K=kt(x,s);
ep=0.00000001;
Trang 6while K>=ep
[D,U]=huong(A,x,s);
[x,y,s]=up(x,s,y,D,A,U),
K=kt(x,s);
end
yl=pinv(A’);
y2=c-s;
y3=y1*y2;
34OXEICOIECE XE CÁ 4X 4 đo ACE AR ACR SACI ACHR ACI ACHE function[D,U]=huong(A,x,s)
[m,n]=size(A);
q=n+sqrt(n);
Ro=0.28537;
X=diag(x);
A2=A*X;
A3=inv(A*X*X*A');
Al=A2*A3*A2;
UI=X%s;
U2=q/(s'*x);
e=ones(n,1);
T=eye(n);
U3=(U1*U2)-e;
U=(-A1)*(U3);
U4=norm(U);
D=-Ro*X*(U/U4);
Ee fe fe fee Re ake oe eo fe ake 2 2k eo a a a aa ak a aK a
function[x,y,s]=up(x,s,y,D,A,U)
[m,n]=size(A);
e=ones(n,1);
X=diag(x);
to=0.479056;
q=n+sqrt(n);
ul=norm(U);
K=inv(A*X*X*A‘);
if ul>=to
else
X=x;
s=((s'*x)/q)*(inv(X))*(U+e);
Trang 7-63-
yayt(K*A*X*(X*s-(((s'*x)/q)*e)));
end
FCIAC CIC IGICICI AGI AIO GR ICI II sÉ S‡ Ác 2% a
function[K]=kt(x,s)
K=s*x;
3⁄4eletetetexexesete+etctct©+£Thuật toán theo đường trung tâm gỐC ***#**#*###########e4exexese+ function[x,y,s]=capnhat(A,x,d,y,c)
s=c-A'*y;
x=x+d;
y=y;
S4 đc đc các CACR ACC ACCA AC ACACIA A CAC A
function[d,y]=doanNT(A,x,c,muy)
%c.x la vec to cot
[m,n]=size(A);
X=diag(x);
T=eye(n);
e=ones(n,1);
AI=A*X*X*A;
A2=inv(AI);
d4=X*X*A'*A2*A;
dI=(-d4);
d3=(X*X*c)*(1/muy);
d2=(X*e-d3);
d=d1*d2;
y=A2*A*(X*X*c-muy*X*e);
SRC ACR A ACCRA ACCC RR CR A A AC RR A CCE đc
function[x,y,s]=hchinh(A,x,y,s,c,muy)
Epsi=0.000001;
%muy=2;
K=kt(s,x);
while K>=Epsi
muy=0.92* muy;
[d,y]=doanNT(A,x,c,muy);
[x,y,s]=capnhat(A,x,d,y,c);
K=kt(s,x);
end
JESSE SI CSIC IGIO SIO ISIS ICICI IIIA IR
function[K]=kt(x,s)
Kes'*x;
JSS CSI CASIO ISIC ISIC SIO ICR ICICI AAA AIR
Trang 8function[x3,y2,s2]=nghiemxuatphat(A,c,b) M=100 ;
[m,n]=size(A);
% bai toan nhan tao goc
x=ones(n+2,1);
e=ones(n,1);
for i=1:(n+2)
if (i<=n)
el(i,1)=c(i,1);
end
ifi==n+l
cl(,1)=M;
end
if i==n+2
cl(i,1)=0;
end
end
cl;%vec to c khi them thanh phan
%im b gách
for i=l:m
for j=1:n
if A(i,j)<0
ALGj=-AGj)s
else
A1G,)=AG)s
end
end
end
Al;
for i=l:m
for j=l:n
U2=max(A1(i,j));
end
end
U2;
bl=max(abs(b));
c2=max(abs(©));
Ul=max(bl,c2);
U7=max(U2,U1);
U=U7;
Trang 9-65-
%U=100
rl=(m*U)^m ;
12=(n+2)/(n*r1);
r3=(n*r1)/(n+2);
b2=r2*b;
%b2 chinh la b gach
A2=b2-A*e;
for i=1:(m+1)
for j=1:(n+2)
if §<=n)&&(i<=m)
Dg,j)=Adj);
end
==n+l)&&(<=m)
Dúq,j)=A2(,1;
end
if G==n+2)&&(i<=m)
Dúj)=0;
end
1ƒ (==m+1)&&(j<=n)
Dúj)=1;
end
if (i==m+1)&&G==n+1)
DG,)=1;
end
if G==m+1)&&(j==n+2)
DGD=1;
end
end
end
D;%Matran A khi them thanh phan
h=norm(c);
muy=4*(sqrt(h^2+M^2));
for i=1:(m+1)
if (i<=m)
y(i,1)=0;
end
if i: +1
y(,1)=-muy;
end
end
ys
Trang 10d=c+muy*e;
for i=1:(n+2)
if (i<=n)
s(i,1)=d(i, 1);
end
if i==n+1
s(i, 1)=M+muy;
end
ifi==n+2
s(,1)=muy;
end
end
§
[x1,y1,sI]=hchinh(D,x,y,s,c1,muy);
for i=1:(n+2)
if (i<=n)
x2(i, =x 1(i,1);
end
end
x25
X3=137x2;
for i=1:(m+1)
if (i<=m)
y2,1)=y1đ,1);
end
end
y2;
for k=1:(n+2)
if (k<=n)
s2(k,1)=s1(k,1);
end
end
sy
esto eka a oe
“#Thuật toán đường trung tâm gốc-đối ngẫu***##%##%%#%
function[x,y,s]=chinh(A,b,c,x,y,s)
K=ktra(s,x);
epsi=0.00001;
[m,n]=size(A);
teta=0.5;
E1
Trang 11-67-
muy=(s'*x)/n;
while (K >=epsi)&&(t<=10)
[Dx,Dy,Ds]=doan_Newton(A,x,s,muy);
p=gtnn(x,Dx);
d=gtnn(s,Ds);
[xy,s]=up(x,y,s,Dx,Dy,Ds,p,d);
muy=(1-teta)*muy
K=ktra(s,X);
t=t+l;
end
đã đc đồ Xí 4cd CSIC ACR CAC AC ICR doc doc function[x,y,s,t]=chinh11(A,b,c,x,y,s)
K=ktra(s,x);
epsi=0.0000001;
to=3.186;
[m,n]=size(A);
teta=0.999;
muy=(s'*x)/n;
t=0;
while n*muy >=epsi
muy=(1-teta)*muy;
G=giatri(x,s,muy);
u=0;
while G>=to
[Dy,Dx,Ds]=NT(A,x,s,muy);
p=gtnn(x,Dx);
d=gtnn(s,Ds);
[x,y,s]=up(x,y,s,Dx,Dy,Ds,p,d);
G=giatri(x,s,muy);
u=u+l;
end
t=t+l;
end
EIS ISISISIOISSIO SIO ASIII ACR SACK SCA RICA AA A function[Gi]=giatri(x,s,muy)
%muy=(1-0.99)*muy;
for i=1:length(x)
w1(i)=sqrt(x(i)*s(i)/muy);
end
wl;
for i=1:length(x)
Trang 12w2(i)=sqrt(muy/(x(i)*s(i)));
end
w2;
Gi=0.5*norm(w1-w2);
TR RC fe Ae Re EE SE dị eo AE FE AE 2 EO AE EAR EE € ĐC
function[P]=gtnn(a,k)
anpha=0.995;
(h,g]=gtnn I (a,k);
if(length(g)==length(k))
PI=I;
end
if (length(h)<=length(k))
if h==
PI=l;
else
hl=-h;
bl=anpha*hl;
b2=min(b1);
P1=min(1,b2);
end
end
P=anpha*P1 ;
FICCI GCC IC ICICI ICICI I CR CR IR I eH 2k a 2k a i ake
function[{h,g]=gtnn1(a,k)
Yanpha=0.5;
%j=0;
t=0;
n=length(k);
h=0;
g=0;
for i=1:
Jj
%j=j+l;
if (k(i)<0)
j=i+l;
h@)=a()/k@);
else
t=t+l;
g(0=kQ);
Trang 13-69-
end
end
ke oe ko ae ok 2 2 2k ae ok 2 feo eof 2 ke a fe oe ae a ae a ae a ae ai a ak a
function[K]=ktra(s,x)
K=s*x;
S3 E đc Ác đ đc đe đo đe 4cđdcX đcđk
function[Dy,Dx,Ds]=NT(A,x,s,muy)
X=diag(x);
S=diag(s);
SI=inv(S);
[m,n]=size(A);
I=eye(n);
[m,n]=size(A);
e=ones(n, 1);
Al=inv(A*SI*X*A);
Dy=A1*A*S1*(X*S*e-muy*e);
Dx=-S1*(I-X*A'*A1*A*S1)*(X*S*e-muy*e);
Ds=-A'*Dy;
SEAR A ACI AC ACR A CCR RICCO RR
function[x,y,s]=up(x,y,s,Dx,Dy,Ds,p,d)
x=x+p*Dx;
y=y+d*Dy;
s=s++d*Ds;
**Thuat toán theo đường trung tâm gốc-đối ngẫu với hàm chắn tự chính quy#** function[x1,s1,y1]=main(A,b,c,x,y,s,t,k,v)
[m,n]=size(A);
muy=l;
teta=0.999;
ep=0.0000001;
to=3.2;
h=n+1;
jsh*muy;
while j >=ep
muy=(1-teta)*muy;
j=h*muy;
Gi=giatrihamchan(x,s,t,k,muy)
i=l;
while i<=10
Trang 14% while Gi>=to
[Dy,Dx,Dt,Dv,Ds,Dk]=huongNewton(A,b,c,x,y,s,t,k,v,muy);
[anpha]=dodaibuoc(x,Dx,s,Ds,y,Dy,t,Dt,k,Dk,v,Dv);
[x,y,s,k,v]=capnhat(x,y,s,t,k,v,anpha,Dx,Dy,Ds,Dt,Dk,Dv);
Gi=giatrihamchan(x,s,t,k,muy);
i=i+1; end
end
xl=x/t;
yl=y/t,
sl=s/t;
JOISISOISIS SSIES AISIOI SISO SISSIES AIK AIK
function[x1,y1,s1,t1,k1,v1]=capnhat(x,y,s,t,k,v,anpha,Dx,Dy,Ds,Dt,Dk,Dv) xl=x+anpha*Dx;
yl=y+anpha*Dy;
sI=s+anpha*Ds;
tl=t+anpha*Dt;
kl=k+anpha*Dk;
vl=v+anpha*Dvy;
FICCI CIC ICICIGI A I ICR ICICI HCH ACH Ci aki ak eae
function[anpha]=dodaibuoc(x,Dx,s,Ds,y,Dy,t,Dt, k,Dk,v,Dv)
T1=do(x,Dx);
MI=max(T1);
T2=do(s,Ds);
M2=max(T2);
T3=do(y,Dy);
M3=max(T3);
T4=do(t,Dt);
14=max(T4);
T5=do(v,Dv);
%MS5=mac(T5);
T6=do(k,Dk);
%M6=max(T6);
M7= max(M1,M2);
M8=max(M3,T4);
M9=max(T5,T6);
M10=max(M7,M8);
M11=max(M9,M10);
M12=-M11;
anpha=0.99995*M 12;
GN
DHE RA HCE A THC A ACHE RF TICE RR I ACCES dc
Trang 15291s
function[b]=do(x,s)
for i=1:length(x)
a(i)=x(i)/s(i);
end
jJ=*l;
ifa@)<0
bQ)=aQ);
else
b(j)=-100;
end
end
Fee fee Re CRC c dị fe fe Re aR ek a fe ae ea ae ake ae ake a aie ake ake ake
function[S]=giatrihamchan(x,s,t,k,muy) for i=1:length(x)
Z@)=xŒ)*s()/muy;
UI@)=sart());
end
Ul;
for i=1:length(x)
Z)=muy/(x()*s());
UQ)=sqrt(z0));
end
U;
U2=sqrt((t*k)/muy);
U3=((U2-1/U2)^2)*0.5;
t=U1;
for i=1:length(t)
T@)=(t)-1/t))*@@)-1⁄t))*0.5;
end
T;
$1=0;
for i=1:length(T)
$1=S1+T(i);
end
S1;
S=S1+U3;
FEO CC CC đc 4E đc dd ICICI I I A ACCC EI RoR
Trang 16function[Dy,Dx,Dt,Dv,Ds,Dk]=huongNewton(A,b,c,x,y,s,t,k,v,muy) [Rp.Rd,Rg,Beta]=saiso(A,b,c,x,y,s,L,k,V);
[Rtk,Rxs,RIxs]=saiso I(muy,x,s,t,k);
Dv=(R1xs+Rtk)/Beta;
Rp1l=Rp*Dv;
X=diag(x);
S=diag(s);
XI=inv(X);
Rd1=Rd*Dv+X1*Rxs;%sai so voi cong thuc la*Rxs
Rgl=Rg*Dv+Rtk/t;
D2=inv(X1*S);
a=-b-A*D2*c;
al=(b-c*D2*A;
G= k/t+(c *D2*c);
Rp12=Rp1-A*D2*Rd1;
Rg12=Rg1+(c'*D2*Rd1);
a3=a/G;
r=Rp12-Rg12*a3;
AI=A*D2*A;
11=pinv(A1)*r ;%gia nghịch dao
12=pinv(A1)*(-a3);
Dy=I1-12*((a1'*11)/(1+a1'*12));
Dt=(Rg12-al'*Dy)/G;
Dx=D2*Rd1+D2*A'*Dy-D2*c*Dt;
Ds=X1*(Rxs-S*Dx);
Dk=(Rtk-k*DUWt;
ĐI RR I CORR ARICA RCA RR a TM dd
functon[Rp, Rd,Rg,Beta]= saiso(A,b,c,x,y,s,t,k,v)
Rp=(A*x-b*0/V;
Rd=(c*t-A'*y-s)/v;
Rg=(-c'*x-k-b'*y)/v;
Beta=x'*s+t*k;
ACR RAH RF AR RA AA lO A OO
function[Rtk,Rxs,R1xs]=saiso1(muy,x,s,t,k)
%ham chan chon co dinh la ham T=((w-1/w)42)/2
%la ham chan tu-chinh quy
for i=1:length(x)
2(i)=(x(i)*s(i))/muy;
Ul(i=sqrt(a(i));
end
Trang 17“¡no
Ul:
U2=sqrt((t*k)/muy);
W1=hamchan(U1);
W2=hamchan(U2);
Rtk=-muy*(U2*W2);
for i=1:length(UI)
Rxs2(i)=-U 1(i)*W 1(i)*muy;
end
Rxs2;
RXS=Rxs2'*
R1xs=-muy*U1*W1';
Ae He Re A CRC Fee fe Re Re c c dc sự c dị fe ak ae ake ae ake ae ake ak ae ake
function [T2] =hamchan (u)
teu;
for i=1:length(t)
T2 (i) =(t (i) -1/t (i) ) * (1+1/t (i) *2) 7
end
%format long
T2;
3K 3€ dk sc tự ậc c dc Í€d €3 2k csỆ c sự Re eae a ake ae ake akc aie ak ake ae
function{anpha]=CPDgiam(A,b,c,x,y,s,dx,dy,ds,t,m) for i=1:length(x)
k1()=dx()/x();
end
kl;
hl=norm(k1);
for :length(s)
1Q)=ds()/s();
end
1;
k=norm(1);
w=sqrt(h1^2+k^2);
anpha=1/w-1/(w+4*t*t);
HR Re ee ae ok a fee €s eRe 2 sự sự aR a ake ak afc ake ke ak ae ake ae aie a aie
function[T]=CPDchan(x,s,m)
for i=1:length(x)
ul (i)=sqrt((x(i)*s(i))/m);
end
nls
for i=1:length(x)
u2(i)=sqrt(m/(x(i)*s(i)));
Trang 18end
u2;
T=0.5*norm(ul-u2);
Hee Re Re CR a Hee fe Re ak eR a ak a ae a ae a ea a ae 2K ae
function[Dx,Dy,Ds]=CPDbuoc(A,b,c,x,y,s,m) S=diag(s);
X=diag(x);
SI=inv(S);
for i=1:length(s)
s2(i,1)=1/s(i);
end
s2;
Dy=(nv(A*X*S1I*A'))*(b-m*A*s2);
Ds=-A'*Dy;
Dx=m*s2-x-x*s2'*Ds;
RS A eo Fe oe Ae € sự c dị Ee fe ae Ae fe € d3 s3 s3 s‡
function[x,y,s,dem1,x1,x2]=CPDchinh(A,b,c,x,y,s) [m,n]=size(A);
muy=x'*s/n;
ep=0.0001;
to=3.18671;
dem=0;
dem1=0;
while((n*muy)>ep)
muy=(1-0.999)*muy;
t=CPDchan(x,s,muy);
while (t>=to)
[dx,dy,ds]=CPDbuoc(A,b,c,x,y,s,muy); a=CPDgiam(A,b,c,x,y,s,dx,dy,ds,t,muy); x=x+a*dx;
s=s+a*ds;
y=yta*dy;
t=CPDchan(x,s,muy);
deml=dem1+1;
for i=dem1:dem1
x1(1,)=x(1,1);
x2(1,j)=x(2,1);
end
end
dem=dem+l;