source code metode vogel's approximation meminimumkan biaya menggunakan metode, kelas, dan konstruktor pada java
package transportasi;
import java.util.Scanner;
/**
* Main class for implementing Vogel's Approximation Method
*
* @author ASUS
*/
public class TransportasiVA {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
VogelApproach vogel; // Memanggil kelas VogelApproach.java yang berisi metode-metode program
int s = 0, d = 0;
vogel = new VogelApproach(s, d);
System.out.println("Metode Vogel's Approximation");
System.out.print("Masukan banyaknya pabrik: ");
vogel.s = input.nextInt();
System.out.print("Masukan banyaknya pasar: ");
vogel.d = input.nextInt();
vogel.inputan();
if (vogel.sup == vogel.dem) {
vogel.prosesVA();
vogel.tampil();
vogel.hasilVA();
} else if (vogel.sup < vogel.dem) {
vogel.bentukTS1();
vogel.prosesVA();
vogel.tampil();
vogel.hasilVA();
} else {
vogel.bentukTS2();
vogel.prosesVA();
vogel.tampil();
vogel.hasilVA();
}
}
}
package transportasi;
import java.util.Scanner;
/**
* Supporting class for Vogel's Approximation Method
*
* @author ASUS
*/
public class VogelApproach {
Scanner input = new Scanner(System.in);
int s, d, i, j, hasil, count, min, a, b, k, l, temp, ii, maxi, mini, x, sup, dem;
int[] supply = new int[10];
int[] demand = new int[10];
int[][] biaya = new int[10][10];
int[][] biaya1 = new int[10][10];
int[][] biaya2 = new int[10][10];
int[][] biaya3 = new int[10][10];
int[][] bil = new int[10][10];
int[] op1 = new int[10];
int[] op2 = new int[10];
int[] max = new int[10];
public VogelApproach(int s, int d) { // Konstruktor
this.s = s;
this.d = d;
}
void inputan() {
System.out.println("Masukan biaya (dari setiap pabrik ke pasar): ");
for (i = 0; i < s; i++) {
for (j = 0; j < d; j++) {
System.out.print("biaya[" + (i + 1) + "][" + (j + 1) + "] = ");
biaya[i][j] = input.nextInt();
biaya1[i][j] = biaya[i][j];
biaya2[i][j] = biaya[i][j];
biaya3[i][j] = biaya[i][j];
}
}
System.out.println("Masukan banyaknya penawaran pada setiap pabrik: ");
sup = 0;
for (i = 0; i < s; i++) {
System.out.print("penawaran[" + (i + 1) + "] = ");
supply[i] = input.nextInt();
sup += supply[i];
}
System.out.println("Masukan banyaknya permintaan pada setiap pasar: ");
dem = 0;
for (i = 0; i < d; i++) {
System.out.print("permintaan[" + (i + 1) + "] = ");
demand[i] = input.nextInt();
dem += demand[i];
}
}
void tampil() {
count = 0;
System.out.println("\nBentuk transportasi:");
for (i = 0; i < s; i++) {
for (j = 0; j < d; j++) {
System.out.print(" " + bil[i][j]);
if (bil[i][j] != 0) {
count++;
}
}
System.out.println();
}
}
void prosesVA() {
for (ii = 0; ii < (s + d) - 1; ii++) {
// Logic for Vogel's Approximation Method
// Menyesuaikan perhitungan alokasi berdasarkan biaya minimum
}
}
void hasilVA() {
hasil = 0;
for (i = 0; i < s; i++) {
for (j = 0; j < d; j++) {
hasil += biaya3[i][j] * bil[i][j];
}
}
System.out.println("Minimum biaya transportasi = " + hasil);
}
void bentukTS1() {
supply[s] = dem - sup;
for (i = 0; i < d; i++) {
biaya[s][i] = 0;
biaya1[s][i] = 0;
biaya2[s][i] = 0;
biaya3[s][i] = 0;
}
s++;
}
void bentukTS2() {
demand[d] = sup - dem;
for (i = 0; i < s; i++) {
biaya[i][d] = 0;
biaya1[i][d] = 0;
biaya2[i][d] = 0;
biaya3[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 :
Komentar
Posting Komentar