• Tidak ada hasil yang ditemukan

DAFTAR PUSTAKA. [5] Mathews, John.H dan Fink, Kurtis.D, Numerical Methods Using MATLAB, Prentice Hall, London, 1999.

N/A
N/A
Protected

Academic year: 2021

Membagikan "DAFTAR PUSTAKA. [5] Mathews, John.H dan Fink, Kurtis.D, Numerical Methods Using MATLAB, Prentice Hall, London, 1999."

Copied!
11
0
0

Teks penuh

(1)

DAFTAR PUSTAKA

[1]

Brown, Kermitt, “The Technology of Artificial Lift Methods Volume

4”,Tulsa,1982

[2]

Gen, Mitsuo. dan Cheng, Runwei., “Genetic Algorithms and Engineering

Design”, A Willey-Interscience Publication, Canada, 1997

[3]

Goldberg, D.E., “Genetic Algorithms in Search, Optimization and

Machine Learning”, Addison-Wesley, Canada, 1989.

[4]

Hinduan, Lukluk, ”Optimasi Diameter Jaringan Pipa Gas dengan

Memperhitungkan Kemiringan Pipa”, Tugas Akhir, Jurusan Matematika,

ITB, Bandung, 2002.

[5]

Mathews, John.H dan Fink, Kurtis.D, ”Numerical Methods Using

MATLAB”, Prentice Hall, London, 1999.

[6] Simarmata, Giorevinus, ”Algoritma Genetika dalam Penyelesaian Sistem

Persamaan Non Linier”, Tugas Akhir, Jurusan Matematika, ITB,

Bandung, 2003.

[7]

Susila, I Nyoman, “Diktat Kuliah Metoda Numerik”, Jurusan

Matematika, ITB, Bandung, 2005.

(2)

LAMPIRAN A

Program Runge Kutta Untuk Mencari Gradien Tekanan pada Pipa

Aliran Multifasa

Program Utama

clear; clc; %Input

p = input('Masukkan Tekanan di Outlet : '); P = input('Masukkan Panjang Pipa '); beda =P*10; h=0.1; L=0; result=[p]; length = [0]; for i=1:beda k1=inclined(p); k2=inclined(p+(h/2)*k1); k3=inclined(p+(h/2)*k2); k4=inclined(p+h*k3); p=p+(k1+2*k2+2*k3+k4)*h/6; result=[result;p]; L=L+h; length=[length;L]; end hasil=[length result] plot(length,result); xlabel('length (feet)'); ylabel('pressure (psia)');

title('Pressure Distribution Along Pipe');

Fungsi Untuk Mencari Koefisien Beggs Brills

function pd=inclined(p) % input data2 kecuali p awal gc=32.17

(3)

g=32.17 q_o=30000 q_g=2570000 d=2 T=90 API=20 gamma_g=0.7 GOR=360 Rs=55 Bo=1.015 mu_o=4.2 mu_g=0.0105 sigma_o=22.3 Zg=0.93 R=360 fo=1 Ap=0.785 gamma_o=141.5/(131.5+API) rho_o=53 rho_g=(0.0764*gamma_g*p*520)/(14.7*(T+460)*Zg) rho_l=rho_o*fo q_g=(0.000000327*Zg*q_o*(R-Rs)*(T+460))/p q_l=0.0000649*q_o*Bo vsl=q_l/Ap vsg=q_g/Ap vm=vsl+vsg Gl=rho_l*vsl Gg=rho_g*vsg Gm=Gl+Gg lambda=q_l/(q_l+q_g) Nfr=vm^2/(g*d) mu_l=mu_o*fo mu_m=0.000672*(mu_l*lambda+mu_g*(1-lambda)) sigma_l=sigma_o*fo N_rens=Gm*d/mu_m N_lv=1.938*vsl*(rho_l/sigma_l)^0.25 Hl0=0.98*lambda^0.4846/(Nfr^0.0868) C=(1-lambda)*log(0.011*(lambda^(-3.768))*(N_lv^3.539)*(Nfr^(-1.614))) psi=1+C*(0.094-(0.333*0.094^3)) Hl3=Hl0*psi rho_tp=rho_l*Hl3+rho_g*(1-Hl3) y=lambda/(Hl3^2) s=log(y)/(-0.0523+3.182*log(y)-0.8725*log(y)*log(y)+0.01853*log(y)^4) a=2*log10(N_rens/(4.5223*log10(N_rens)-3.8215)) fns=1/(a^2) b=exp(s) ftp=b*fns a1=g/gc*rho_tp*0.0523 a2=ftp*Gm*vm/(2*gc*d) a3=rho_tp*vm*vsg/(gc*p*144) dp=a1+a2/(1-a3) pd=dp/144

(4)

LAMPIRAN B

Program Algoritma Genetika

Program Utama

% Program utama GA clear; clc;

% fprintf('Program ini dibuat untuk menyelesaikan masalah optimasi berbentuk:\n'); % fprintf('Meminimumkan f(x1,x2)\n'); %fungsi biaya

% fprintf('terhadap a<x1<b\n'); %max allowable pressure % fprintf(' c<x2<d\n');

%Input

gen_max = input('Banyak generasi: '); pop_size = input('Ukuran populasi: ');

co_prob = input('Peluang persilangan: (masukan angka di [0,1])'); mut_prob = input('Peluang mutasi: (masukan angka di [0,1])'); segmen = input('Masukkan banyaknya segmen');

nilai_a = input('Masukkan nilai batas bawah dari x1:'); nilai_b = input('Masukkan nilai batas atas dari x1:');

presisi = input('Ketelitian yang dikehendaki berapa angka setelah tanda desimal? '); pj_bit = ceil((presisi*log(10)+log(nilai_b-nilai_a))/log(2))

range=[16,23;16,23]

% Jangan lupa range harus diubah kalu segmen berubah %Menentukan Populasi Random Awal

popu = rand(pop_size, pj_bit*segmen)>0.5;

% fprintf('===========Populasi Awal=========== \n'); % tulis(popu,pop_size,pj_bit*segmen);

for v=1:gen_max

% konversi dari string ke real diameter=zeros(pop_size,segmen); for m = 1:pop_size for k = 1:segmen diameter(m,k)=konversi(popu(m,(k-1)*pj_bit+1:k*pj_bit),range(k,:)); end end

%Fungsi utk mencari perubahan tekanan menggunakan RK %Mencari perubahan tekanan pd pipa untuk mencari biaya total eval=zeros(pop_size,1);

for j=1:pop_size

eval(j)=Biaya_total(diameter,j); end

% Evaluation:The process of evaluating the fittness of a chromosome biaya_max=eval(1);

(5)

d_max=1; for i=2:pop_size if eval(i)>=biaya_max biaya_max=eval(i); d_max=i; end end

% fprintf('Individu yang paling lemah adalah individu %d\n',d_max); biaya_min=eval(1); d_min=1; for i=2:pop_size if eval(i)<=biaya_min biaya_min=eval(i); d_min=i; end end

% fprintf('Individu yang paling kuat adalah individu %d\n',d_min); eval_new=zeros(pop_size,1); for j=1:pop_size eval_new(j)=biaya_max-eval(j); end eval=eval_new; fitness_max=eval(d_min); % % Selection F=0; for i=1:pop_size

F=F+eval(i);%menghitung total fitness end

P=zeros(pop_size,1); for i=1:pop_size

P(i)=eval(i)/F;

%menghitung peluang seleksi end q=zeros(pop_size,1); for j=1:pop_size A=0; for i=1:j A=A+P(i); end q(j)=A; end Sel_rand=rand(pop_size,1); dummy=zeros(pop_size,pj_bit*segmen); for i=1:pop_size j=1; while Sel_rand(i)>q(j) j=j+1; end if Sel_rand(i)<=q(j)

(6)

dummy(i,:)=popu(j,:); end

% fprintf('Nilai bilangan random %d\n',Sel_rand(i)); % fprintf('Nilai peluang kumulatif %d\n',q(j));

% fprintf('Jadi individu yang terpilih individu ke %d\n',j); end popubaru=dummy; %Crossover ortu=randperm(m); dummy1=popubaru; for k=1:floor(m/2)

mate=[ortu(2*k-1),ortu(2*k)]; %Indeks pasangan persilangan pap=popubaru(ortu(2*k-1),:); %Induk 1 mam=popubaru(ortu(2*k),:) ; %Induk 2 if rand<co_prob pos=randint(1,1,[1,pj_bit*segmen-1]); dummy1(ortu(2*k-1),:)=[pap(1:pos) mam(pos+1:segmen*pj_bit)]; dummy1(ortu(2*k),:)=[mam(1:pos) pap(pos+1:segmen*pj_bit)];

fprintf('Titik persilangan = %d \n', pos+1); fprintf('Induk 1\n'); fprintf('%d ',pap); fprintf('\n'); fprintf('Induk 2\n'); fprintf('%d ',mam); fprintf('\n'); fprintf('Keturunan 1\n'); fprintf('%d ',dummy1(ortu(k*2-1),:)); fprintf('\n'); fprintf('Keturunan 2 \n'); fprintf('%d ',dummy1(ortu(k*2),:)); fprintf('\n'); else pos=0; end end popubaru=dummy1; %Mutation mutant=rand(pop_size,pj_bit*segmen); for i=1:pop_size for j=1:pj_bit*segmen if mutant(i,j)<mut_prob

fprintf('Terjadi mutasi pada individu ke-%d \n', i); fprintf('Terjadi mutasi pada alel ke-%d \n ', j); if popubaru(i,j)==0 popubaru(i,j)=1; else popubaru(i,j)=0; end end end end

(7)

fprintf('=============Populasi baru setelah Seleksi, Crossover, dan Mutasi ===========\n'); for k=1:pop_size fprintf('Individu%2d: ' ,k); for j=1:segmen*pj_bit fprintf('%d',popubaru(k,j)) end;

for idx_segmen = 1:segmen

diameter(k,idx_segmen)=konversi(popubaru(k,(idx_segmen1)*pj_bit+1:idx_segmen*pj_bit),range (idx_segmen,:)); fprintf('%4d ',diameter(k,idx_segmen)); end fprintf('\n'); end

% konversi dari string ke real diameter=zeros(pop_size,segmen); for m = 1:pop_size for k = 1:segmen diameter(m,k)=konversi(popubaru(m,(k-1)*pj_bit+1:k*pj_bit),range(k,:)); end end

%Fungsi utk mencari perubahan tekanan menggunakan RK %Mencari perubahan tekanan pd pipa untuk mencari biaya total eval=zeros(pop_size,1);

for j=1:pop_size

eval(j)=Biaya_total(diameter,j); end

% Evaluation:The process of evaluating the fittness of a chromosome biaya_max=eval(1); d_max=1; for i=2:pop_size if eval(i)>=biaya_max biaya_max=eval(i); d_max=i; end end

% fprintf('Individu yang paling lemah adalah individu %d\n',d_max); biaya_min=eval(1); d_min=1; for i=2:pop_size if eval(i)<=biaya_min biaya_min=eval(i); d_min=i; end end

% fprintf('Individu yang paling kuat adalah individu %d\n',d_min); eval_new=zeros(pop_size,1);

for j=1:pop_size

(8)

end

eval=eval_new;

fitness_max=eval(d_min); fprintf(' Generasi Ke %d \n',v);

Diameter_yang_memaksimumkan_fitness=diameter(d_min,:) fprintf('Individu yang paling kuat adalah individu %d \n',d_min); fprintf('Nilai Fitnessnya: %d\n',fitness_max);

fprintf('%d \n',biaya_min');

fprintf('Individu yang paling lemah adalah individu %d\n',d_max); Diameter_yg_minimum=diameter(d_max,:)

popu=popubaru; %Kriteria konvergensi

if sum(popu) >= (0.90*pop_size) | sum(popu) <= (0.10*pop_size) fprintf('Sudah konvergen pada generasi ke:%d\n',v);

break; end end

Program Untuk Menampilkan populasi

function tulis(popu,up,pb) for i=1:up fprintf('K%3d ',i) for j=1:pb fprintf('%1d',popu(i,j)) end fprintf('\n') end fprintf('\n')

Program Untuk Mengonversi String Biner ke Bilangan Real

function bil=konversi(bit,range) %Konversi string biner ke bilangan real %Contoh : bit2bil([1 1 0 1], [0,15]) %POLYVAL Evaluate polynomial.

%Y = POLYVAL(P,X), when P is a vector of length N whose elements %are the coefficients of a polynomial, is the value of the

%polynomial evaluated at X. Y = P(1)*X^(N-1) + P(2)*X^(N-2) + ... + P(N-1)*X + P(N) integer=polyval(bit,2);

bil=integer+range(1);

Program Untuk Mencari Biaya Tiap Segmen

% Program ini untuk mencari perubahan tekanan menggunakan runge kutta % Kemudian dicari Biaya total optimum untuk tiga segmen

% SEGMEN ke-3

function Biaya_total=Biaya_total(diameter,j) % Tekanan awal di ujung pipa2

(9)

p=325; d=diameter(j,1); beda =36.48622; h=10000; L=0; result=[325]; length = [0]; for i=1:beda k1=horizontal(p,d/12); k2=horizontal(p+(h/2)*k1,d/12); k3=horizontal(p+(h/2)*k2,d/12); k4=horizontal(p+h*k3,d/12); p=p+(k1+2*k2+2*k3+k4)*h/6; result=[result;p]; L=L+h; length=[length;L]; end hasil=[length result]; p1=hasil(36,2); p1=p1*144/53; p01=p1/4; delta_p=p1-p01; rho=53; q=30000; Rp=1; Cp=875; t=0.375; r=0.12; n=20; booster_price=450; Hy=8760; Ce=1.1; Pop=1; Cfp=0.01; Hp=rho*q*0.00006498843*delta_p/550; pipa_inv1=(15.894*(1+Rp)*Cp*L*0.0003048*(d+t)*t*(r*(1+r)^n/((1+r)^n-1))); pompa_inv1=booster_price*Hp*(r*(1+r)^n/((1+r)^n-1)); Pompa_op1=Hp*0.746*Hy*Ce*(1+Pop); Pipa_op1=pipa_inv1*Cfp; Biaya_op1=Pompa_op1+Pipa_op1; Biaya_inv1=pipa_inv1+pompa_inv1; Biaya_total1=pipa_inv1+pompa_inv1+Pompa_op1+Pipa_op1; % SEGMEN ke-2 p=p01*53/144; d=diameter(j,2); beda =32.14895; h=10000; L=0;

(10)

result=[p]; length = [0]; for i=1:beda k1=horizontal(p,d/12); k2=horizontal(p+(h/2)*k1,d/12); k3=horizontal(p+(h/2)*k2,d/12); k4=horizontal(p+h*k3,d/12); p=p+(k1+2*k2+2*k3+k4)*h/6; result=[result;p]; L=L+h; length=[length;L]; end hasil=[length result]; p1=hasil(32,2); p1=p1*144/53; p2=p1/3; delta_p=p1-p2; rho=53; q=30000; Rp=1; Cp=875; t=0.375; r=0.12; n=20; booster_price=450; Hy=8760; Ce=1.1; Pop=1; Cfp=0.01; Hp=rho*q*0.00006498843*delta_p/550; pipa_inv2=(15.894*(1+Rp)*Cp*L*0.0003048*(d+t)*t*(r*(1+r)^n/((1+r)^n-1))); pompa_inv2=booster_price*Hp*(r*(1+r)^n/((1+r)^n-1)); Pompa_op2=Hp*0.746*Hy*Ce*(1+Pop); Pipa_op2=pipa_inv2*Cfp; Biaya_op2=Pompa_op2+Pipa_op2; Biaya_inv2=pipa_inv2+pompa_inv2; Biaya_total2=pipa_inv2+pompa_inv2+Pompa_op2+Pipa_op2; % SEGMEN ke-1 p=p2*53/144; d=diameter(j,3); beda =29.76706; h=10000; L=0; result=[p]; length = [0]; for i=1:beda k1=horizontal(p,d/12); k2=horizontal(p+(h/2)*k1,d/12);

(11)

k3=horizontal(p+(h/2)*k2,d/12); k4=horizontal(p+h*k3,d/12); p=p+(k1+2*k2+2*k3+k4)*h/6; result=[result;p]; L=L+h; length=[length;L]; end hasil=[length result]; p1=hasil(29,2); p1=p1*144/53; p2=p1/2; delta_p=p1-p2; rho=53; q=30000; Rp=1; Cp=875; t=0.375; r=0.12; n=20; booster_price=450; Hy=8760; Ce=1.1; Pop=1; Cfp=0.01; pipa_inv3=(15.894*(1+Rp)*Cp*L*0.0003048*(d+t)*t*(r*(1+r)^n/((1+r)^n-1))); pompa_inv3=0; Pompa_op3=0; Pipa_op3=pipa_inv2*Cfp; Biaya_op3=Pompa_op3+Pipa_op3; Biaya_inv3=pipa_inv3+pompa_inv3; Biaya_total3=pipa_inv3+pompa_inv3+Pompa_op3+Pipa_op3; Biaya_total=Biaya_total1+Biaya_total2+Biaya_total3;

Referensi

Dokumen terkait

Untuk perusahaan diharapkan sesuai dengan hasil penelitian ini dapat memberikan masukan terutama dalam hal menurunkan tingkat stres kerja pada karyawan yang

Perangkat lunak yang akan dikembangkan dalam Penelitian ini adalah perangkat lunak bernama Dio- StockAnalyzer yang melakukan analisis teknikal terhadap data historis

Pembayaran Imbalan dan/atau Nilai Nominal SBSN dilakukan pada tanggal jatuh waktu atau pada Hari Kerja berikutnya apabila tanggal jatuh waktu bertepatan dengan hari

Undang-Undang Nomor 17 Tahun 2014 tentang MPR, DPR, DPD, dan DPRD (UU MD3) menjelaskan lebih lanjut bahwa wewenang dan tugas DPD dalam menindaklanjuti hasil

Hasil penelitian tersebut menyatakan bahwa dengan memberikan pelatihan self-regulated learning siswa mampu mengatur dirinya dalam belajar, sehingga dapat mereduksi

Penelitian yang berjudul “Pembuatan Aplikasi Pemesanan Mobil Rental dengan Layanan web Berbasis Php &amp; Mysql”, Semakin bertambahnya popularitas internet, banyak bidang

Data tekstual yang berupa hasil alih aksara tersebut kemudian diterjemahkan ke dalam bahasa Indonesia sesuai ejaan yang disempurnakan pada bagian isi prasasti

Pelatihan PIC Indikator ditujukan kepada petugas yang bertanggung jawab untuk melakukan rekapitulasi, menganalisis, dan melaporkan data capaian indikator yang sudah diukur