Rabu, 25 Mei 2011

Northwest Corner Aplication

Sekilas NorthWest Corner Method

Metode NorthWest Corner (NWC) adalah salah satu metode transportasi yang paling mudah dilakukan, tetapi hasilnya belum tentu optimal. Dalam NWC diasumsikan tiap lokasi sumber dan lokasi tujuan diurutkan dari sisi kiri ke kanan dan dari atas ke bawah dalam peta data matriks. Cara penghitungan biaya transportasi dengan menggunakan metode NWC sesuai dengan namanya dimulai dari sisi kiri atas, kemudian bergerak ke kiri atau ke bawah sesuai dengan kapasitas produksi sumber (supply) dan atau permintaan tujuan (demand).

Aturan yang berlaku pada metode NWC ini ialah sebagai berikut :

1. Menghabiskan persediaan di tiap baris sebelum bergerak menuju ke baris selanjutnya yang berada di bagian bawahnya.

2. Memenuhi syarat permintaan di tiap kolom sebelum bergerak menuju ke kolom selanjutnya yang berada di sebelah kanannya.

3. Melakukan cek agar semua persediaan dan permintaan sesuai jumlahnya.


Cara Pemakaian Aplikasi dan Tampilan

Aplikasi NWC ini dibuat dengan menggunakan bahasa java melalui Neatbeans 6.8 berbasis console sehingga diharapkan spesifikasi komputer yang akan dipakai bisa menjalankan program Neatbeans 6.8. Dan aplikasi NWC ini menggunakan 2 file java dimana terdapat satu class NorthWestCorner.java dengan class Main.java untuk menunjang jalannya program aplikasi pencarian biaya optimal minimum dalam pengiriman barang dari suatu lokasi ke lokasi yang lain.

Cara pemakaian aplikasi ini pindahkan folder TRO yang sudah disediakan ke dalam NetBeansProjects yang ada pada drive komputer berisi Neatbeans 6.8, kemudian jalankan aplikasi.



Kemudian kita masukkan nilai bobot/cost dari setiap lokasi matriks dan tampilannya akan seperti berikut.




Setelah itu kita masukkan juga nilai dari supply dan demand dimana jikalau terjadinya suatu dummy dalam kasus yang ada, maka input dummy tersebut secara manual.




Kemudian selanjutnya akan muncul tampilan dari matriks yang berisi data-data yang telah dimasukkan tadi beserta nilai pada setia supply dan demand.




Tampilan tersebut akan terus terlihat seiring dengan proses yang terdapat pada alokasi matriks hingga proses selesai dan ditemukan solusi biaya optimal minimum dari kasus yang diberikan.





Untuk source code sendiri bisa dilihat sebagai berikut :

NorthWestCorner.java

/*

* TRO - Kurniawan 0800427

* 22 Mei 2011

* NorthWest Corner

* Ilmu Komputer

* Universitas Pendidikan Indonesia

*/

package tro;

import java.io.*;

//import org.omg.PortableInterceptor.SYSTEM_EXCEPTION;

/**

*

* @author Kurniawan

*/

public class NorthWestCorner {


public static int size = 20;//besar matriks total

public static int bobot[][] = new int [size][size];//instansiasi matriks buat bobotnya

public static int solusi[][] = new int [size][size];//instansiasi matriks buat solusinya

public static int supply[] = new int [size];//instansiasi matriks supply

public static int demand[] = new int [size];//instansiasi matriks demand

public static int sumber, tujuan; //variable untuk menyimpan sumber dan tujuan

public static BufferedReader b=new BufferedReader(new InputStreamReader(System.in));


public NorthWestCorner(){

//konstruktor

}

public static void gambargaris(){//untuk memberikan garis batas

int i;

int end=(8*(sumber+2))+1;

System.out.printf("\n");

for(i=0;i<end;i++)

System.out.printf("-");

}

public static void tampil (int arr[][], int row, int col){

//menampilkan proses yang sedang berlangsung

int g,k;

System.out.printf("\n\t\tTujuan");

gambargaris();

System.out.printf("\nSumber\t|");


for (k=0;k<col;k++)

System.out.printf(" D%d\t|",k+1);

System.out.printf(" Supply");

gambargaris();

for (g=0;g<row;g++){

System.out.printf("\n S%d \t|",g+1);

for(k=0; k<col; k++)

System.out.printf(" %d\t|",arr[g][k]);

System.out.printf(" %d",supply[g]);

}

gambargaris();

System.out.printf("\nDemand\t|");

for(k=0; k<col; k++)

System.out.printf(" %d\t|",demand[k]);

gambargaris();

}

public static void masukan(int row,int col) throws IOException{

//untuk proses masukan data

int g, k;

for(g=0;g<row; g++)

{

for(k=0;k<col;k++)

{

System.out.printf("\nMasukan Bobot[%d][%d]: ",g+1,k+1);

bobot[g][k]=Integer.parseInt(b.readLine());

}

}

System.out.printf("\n\nMasukan Jumlah Supply: \n");

for(g=0; g<row; g++)

{

System.out.printf("\nSupply[%d]: ",g+1);

supply[g]=Integer.parseInt(b.readLine());

}

System.out.printf("\n\nMasukan Jumlah Demand: \n");

for(k=0; k<col; k++)

{

System.out.printf("\nDemand[%d]: ",k+1);

demand[k]=Integer.parseInt(b.readLine());

}

}

public static int alokasi(int sumber, int tujuan)throws IOException{

//untuk proses alokasi matriks data

int g=0;

int k=0;

int total_biaya=0;

while(g<sumber && k<tujuan){

if (supply[g] < demand[k]){

solusi[g][k] = supply[g];

demand[k] -= supply[g];

supply[g] = 0;

total_biaya += (bobot[g][k] * solusi[g][k]);

g++;

}else{

solusi[g][k]=demand[k];

supply[g] -= demand[k];

demand[k] = 0;

total_biaya += (bobot[g][k] * solusi[g][k]);

k++;

}

tampil(bobot,sumber,tujuan);

System.out.printf("\n\n\n\nAlokasi Matriks:\n\n");

tampil(solusi,sumber,tujuan);

b.readLine();

}

return total_biaya;

}

}

Dan untuk source code Main.java ialah sebagai berikut:

/*

* TRO - Kurniawan 0800427

* 22 Mei 2011

* NorthWest Corner

* Ilmu Komputer

* Universitas Pendidikan Indonesia

*/

package tro;

import java.io.*;

/**

*

* @author Kurniawan

*/

public class Main {

public static int sumber, tujuan;

public static int total_biaya;

static BufferedReader b=new BufferedReader(new InputStreamReader(System.in));


public Main()

{

header();

}

void header()

{

//header

System.out.printf("\n***************************************\n");

System.out.printf("\nTugas Besar TRO\n");

System.out.printf("Ilmu Komputer\n");

System.out.printf("Universitas Pendidikan Indonesia 2011\n");

System.out.printf("Aplikasi Transportasi NorthWest Corner\n");

System.out.printf("\n******************************************************\n");

System.out.printf("\nDisusun oleh:\n");

System.out.printf("\n***************************************\n");

System.out.printf("\nKurniawan 0800427\n");

System.out.printf("\n***************************************\n");

}


static void metode(int sumber,int tujuan)throws IOException{

System.out.println("\nMetode NorthWest Corner");


//proses

NorthWestCorner n=new NorthWestCorner();

NorthWestCorner.masukan(sumber,tujuan);

NorthWestCorner.tampil(NorthWestCorner.bobot,sumber,tujuan);

System.out.printf("\n\n\n\nAlokasi Matriks:\n\n");

NorthWestCorner.tampil(NorthWestCorner.solusi,sumber,tujuan);

b.readLine();

//biaya minimum

total_biaya=NorthWestCorner.alokasi(sumber,tujuan);

System.out.printf("\n\n\n\t\tBiaya Minimum: Rp.%d",total_biaya);

b.readLine();

}

public static void main(String[] args) throws IOException{

// TODO code application logic here

Main m=new Main();

//inputan

System.out.printf("\n\nMasukan Banyaknya Daerah Sumber: ");

sumber=Integer.parseInt(b.readLine());

System.out.printf("\n\nMasukan Banyaknya Daerah Tujuan: ");

tujuan=Integer.parseInt(b.readLine());

Main.metode(sumber,tujuan);

}

}

Kesimpulan

Setelah melalui beberapa proses dalam aplikasi NorthWest Corner ini kita dapat menemukan solusi dari biaya optimal minimum yang kita butuhkan dalam suatu transaksi pengiriman barang dari suatu lokasi ke lokasi lainnya. Namun hasil yang diberikan melalui NWC ini bukanlah hasil yang begitu sempurna, tergantung dari kebutuhan yang kita inginkan. Ada banyak metode yang dapat dipakai dalam media pemecahan masalah transportasi ini diantaranya least cost, vogel dan salah satunya NorthWest Corner ini.

Tentang Penyusun

Penyusun ialah seorang mahasiswa yang tenhttp://www.blogger.com/img/blank.gifgah menuntut ilmu di sebuah perguruan tinggi negeri di kota Bandung. Universitas Pendidikan Indonesia ialah tempat penyusun menuntut ilmu, dan di sanalah penyusun mendapatkan sebuat tugas aplikasi NorthWest Corner ini guna menunjang pembelajaran mata kuliah TRO.

Data diri penyusun,

Nama : Kurniawan

NIM : 0800427

Jurusan : Ilmu Komputer C. UPI Bandung

Tempat, tanggal lahir : Bandung, 16 Oktober 1990


Untuk aplikasi dan document selengkapnya silahkan klik disini.

Sebagai tambahan saja, apabila kita ingin menjalankan aplikasi ini melaui cmd, silahkan lakukan perintah seperti berikut sesuai dengan apa yang diberitahukan oleh program neatbeans (misal):

To run this application from the command line without Ant, try:
java -jar "C:\Users\Kurniawan\Documents\NetBeansProjects\TRO\dist\TRO.jar"