Professional Documents
Culture Documents
c
| !
J
"| !
"
#
$| !
$%
!"#
!
c!
!
!
clear all;clc;
%input
J=xlsread('data all TS.xlsx','Matriks jarak','B2:X24'); %matriks jarak dari
excel
D=xlsread('data all TS.xlsx','vol','D2:D24'); %data volume per cycle dari
excel
Dmax=24;
Amax=[9 15 0;18 10 5;18 6 19;18 8 21;13 11 16;13 4 12;14 17 23;14 3 7;22 2
20]; %solusi awal
[trip titik]=size(Amax);
for i=1:trip-1
for j=i+1:trip
L1=length(find(Amax(i,:)~=0));
L2=length(find(Amax(j,:)~=0));
A1=Amax(i,1:L1);
A2=Amax(j,1:L2);
%menghitung jarak awal
j1=J(1,A1(1));
for k=1:L1-1
j1=j1+J(A1(k),A1(k+1));
end
j1=j1+J(A1(L1),1);
j2=J(1,A2(1));
for k=1:L2-1
j2=j2+J(A2(k),A2(k+1));
end
j2=j2+J(A2(L2),1);
jold=j1+j2;
%melakukan pertukaran titik dan permutasi
A=[A1 A2];
B=perms(A);
%semua rute yang mungkin
A1=B(:,1:L1);
A2=B(:,L1+1:L1+L2);
D1=D(A1);
D1=sum(D1');
D2=D(A2);
D2=sum(D2');
%kendala (volume<=24)
y1=find(D1<=24);
y2=find(D2<=24);
y=intersect(y1,y2);
%rute yang memenuhi kendala
AA1=A1(y,:);
AA2=A2(y,:);
%menghitung jarak
iterasi=length(y);
for l=1:iterasi
j1=J(1,AA1(l,1));
for k=1:L1-1
j1=j1+J(AA1(l,k),AA1(l,k+1));
end
j1=j1+J(AA1(l,L1),1);
j2=J(1,AA2(l,1));
for k=1:L2-1
j2=j2+J(AA2(l,k),AA2(l,k+1));
end
j2=j2+J(A2(l,L2),1);
jnew(l)=j1+j2;
end
%update solusi awal dengan jarak minimum
jnewmin=min(jnew);
if jnewmin<jold
a=find(jnew==jnewmin);
Amax(i,1:L1)=AA1(a(1),:);
Amax(j,1:L2)=AA2(a(1),:);
end
A1=[];
A2=[];
B=[];
D1=[];
D2=[];
y1=[];
y2=[];
y=[];
AA1=[];
AA2=[];
jnew=[];
end
end
|
| %#!
| #&
| '#&
'
| ('#c
"| )
* * & '($( ) ( * + '
, & ( - '( . . ( *
(
*
("
*
$| !
*
*
(
*
("
*
+| %
( ,"+
(","+
%
-| !
.| /
0| %
,
1| 2
('#
c
(
"
$
+
-
.
0
1
3
"
3
1
1
1
$
$
+
+
""
$
-
4
.
1
+
0
$
"
+
-
3
"
.
"
"$
0
"4
- &
""0-113
3..
" -0-11
"$3
""$$".3
$ 3
""."$$
31
3 114.
"$"
"4."41-
.$0
"" 400
-4
"$3.$$3
0""
"41+-30
43
+
+
1
1
"
1
"$
- &
%
"$4.4-"
$$-
" ""$40
0+1
"403++3
-
""$1- -
+ +
"41+-30
401
" 1$.01
"-
" ..--
.0-
c
(
"
$
+
-
.
0
"
$
0
3
"
"4
4
-
$
$
+
-
.
""
"
3
1
3
-3
$
1
.
+
0
""1+--
" $-30+
$-
+.$