Source Code Algoritma Northwest Corner untuk Meminimalkan Biaya dengan Metode, Kelas, dan Konstruktor di Java
package transportasi;
import java.util.Scanner;
public class MetodeNorthwestCorner {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
TransportasiSolver solver;
int jumlahPabrik, jumlahPasar;
System.out.println("Metode Northwest Corner");
System.out.print("Masukkan banyaknya pabrik: ");
jumlahPabrik = input.nextInt();
System.out.print("Masukkan banyaknya pasar: ");
jumlahPasar = input.nextInt();
solver = new TransportasiSolver(jumlahPabrik, jumlahPasar);
solver.inputan();
if (solver.sup == solver.dem) {
solver.prosesNW();
} else if (solver.sup < solver.dem) {
solver.bentukTS1();
solver.prosesNW();
} else {
solver.bentukTS2();
solver.prosesNW();
}
solver.tampil();
solver.hasilNW();
input.close();
}
}
package transportasi;
import java.util.Scanner;
public class TransportasiSolver {
private final Scanner input = new Scanner(System.in);
private int s, d, sup, dem, hasil;
private final int[] supply = new int[10];
private final int[] demand = new int[10];
private final int[][] biaya = new int[10][10];
private final int[][] bil = new int[10][10];
public TransportasiSolver(int jumlahPabrik, int jumlahPasar) {
this.s = jumlahPabrik;
this.d = jumlahPasar;
}
void inputan() {
System.out.println("Masukkan biaya (dari setiap pabrik ke pasar):");
for (int i = 0; i < s; i++) {
for (int j = 0; j < d; j++) {
System.out.print("biaya[" + (i + 1) + "][" + (j + 1) + "] = ");
biaya[i][j] = input.nextInt();
}
}
System.out.println("Masukkan banyaknya penawaran pada setiap pabrik:");
sup = 0;
for (int i = 0; i < s; i++) {
System.out.print("penawaran[" + (i + 1) + "] = ");
supply[i] = input.nextInt();
sup += supply[i];
}
System.out.println("Masukkan banyaknya permintaan pada setiap pasar:");
dem = 0;
for (int i = 0; i < d; i++) {
System.out.print("permintaan[" + (i + 1) + "] = ");
demand[i] = input.nextInt();
dem += demand[i];
}
}
void prosesNW() {
System.out.println("Tabel transportasi:");
for (int i = 0; i < s; i++) {
for (int j = 0; j < d; j++) {
bil[i][j] = Math.min(supply[i], demand[j]);
supply[i] -= bil[i][j];
demand[j] -= bil[i][j];
}
}
}
void tampil() {
System.out.println("\nBentuk transportasi:");
for (int i = 0; i < s; i++) {
for (int j = 0; j < d; j++) {
System.out.print(" " + bil[i][j]);
}
System.out.println();
}
}
void hasilNW() {
hasil = 0;
for (int i = 0; i < s; i++) {
for (int j = 0; j < d; j++) {
hasil += biaya[i][j] * bil[i][j];
}
}
System.out.println("Minimum biaya transportasi = " + hasil);
}
void bentukTS1() {
supply[s] = dem - sup;
for (int i = 0; i < d; i++) {
biaya[s][i] = 0;
}
s++;
}
void bentukTS2() {
demand[d] = sup - dem;
for (int i = 0; i < s; i++) {
biaya[i][d] = 0;
}
d++;
}
}
- Gambar hasil program :
- Transportasi yang seimbang
Ketika Jumlah supply sama dengan jumlah demand, seperti contoh berikut :
Berikut adalah hasil ketika menggunakan program tersebut :
2. Transportasi tak seimbang
- Ketika jumlah supply kurang dari demand, seperti contoh berikut :
- Ketika jumlah supply lebih besar dari demand, seperti contoh berikut :
Berikut adalah hasil ketika menggunakan program tersebut :
mantap gan
BalasHapus