Least Cost Program [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

RISET OPERASI PROGRAM APLIKASI BIAYA TERKECIL



Kelompok 5 I Wayan Aditya Setiawan



1208605057



Ni Luh Putu Ratna Sri Andi Yani



1208605061



PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS UDAYANA BUKIT JIMBARAN 2014



1



Metode Transportasi Pada umumnya masalah transportasi berhubungan dengan distribusi suatu produk tunggal dari beberapa sumber, dengan penawaran terbatas, menuju beberapa tujuan, dengan permintaan tertentu, pada biaya transport minimum. Karena hanya ada satu macam barang, suatu tempat tujuan dapat memenuhi permintaanya dari satu atau lebih sumber. Asumsi dasar model ini adalah bahwa biaya transport pada suatu rute tertentu proporsional dengan banyaknya unit yang dikirimkan. Unit yang dikirimkan sangat tergantung pada jenis produk yang diangkut. Yang penting, satuan penawaran dan permintaan akan barang yang diangkut harus konsisten. Ada beberapa metode yang digunakan dalam metode transportasi, yaitu : 1. Metode North West Corner 2. Metode Biaya Terkecil 3. Metode Aproksimasi Vogel Namun pada pembahasaan laporan ini kami hanya menggunakan metode transportasi biaya terkecil pada pembuatan program aplikasi ini. Metode Transportasi Biaya Terkecil Langkah-langkahnya adalah mengisi sel yang masih dapat diisi dengan biaya yang paling kecil. Jumlah yang dialokasikan pada sel kosong tidak boleh melebihi jumlah suplai pada supply dan demand. Contoh kasusnya: Sebuah perusahaan berkepentingan mengangkut beras dari tiga pabrik ke tiga pasar. Kapasitas penawaran ketiga pabrik, permintaan pada ketiga pasar dan biaya transport perunit adalah sebagai berikut:



2



1 2 3



Pabrik



Pasar 2 5 10 9 70



1 8 15 3 150



Permintaan



Penawaran



3 6 12 10 60



120 80 80 280



Kemudian Tabel Ttansportasi yang diperoleh:



Pabrik/Pasar 1 2 3



1



2



8 5 6



15



12 15 10



3 5



6



10



12



120 80



10



10 39



Permintaan



Penawaran



150



70



80



60



280



Langkah-langkahnya adalah sebagai berikut: 1. Pilih variable Xij (kotak) dengan biaya transport (cij) terkecil dan alokasikan sebanyak mungkin. Ini akan menghabiskan baris i atau kolom j. 2. Dari kotak-kotak sisanya yang layak (yaitu yang tidak terisi atau dihilangkan) pilih cij terkecil dan alokasikan sebanyak mungkin. 3. Lanjutkan proses ini sampai semua penawaran dan permintaan terpenuhi.



Pabrik/Pasar 1 2 3



1



8 5 6 10 12 15



(5)



1039



70 (1)



Permintaan



2



3



(2)



(3)



70



50 (4)



120 80



10 10



80 150



Penawaran



70



3



60



80 280



Dari table 1.3 diatas dapat diketahui bahwa biaya transport total adalah sebagai berikut: Z = (3 x 80) + (5 x 70) + (6 x 50) + (12 x 10) + (15 x 70) = 2060 Implementasi Program Algoritma Biaya Terkecil (inisialisasi biaya = 0) 1. (mencari sel dengan cost terkecil) i=0 j=0 min = cost[0][0] selama sel[i][j] != NULL dan i kebutuhan[kolom_terkecil], maka: → Sel[baris_terkecil][kolom_terkecil] = kebutuhan[kolom_terkecil] → Kebutuhan[kolom_terkecil] = 0 → Kapasitas[baris_terkecil]



=



kapasitas[baris_terkecil]



-



kebutuhan[kolom_terkecil] → Biaya = biaya + sel[baris_terkecil][kolom_terkecil] * cost[baris_terkecil] [kolom_terkecil] Jika kapasitas[baris_terkecil] = kebutuhan[kolom_terkecil], maka: → sel[baris_terkecil][kolom_terkecil] = kapasitas[baris_terkecil] → kapasitas[baris_terkecil] = 0 → kebutuhan[kolom_terkecil] = 0 → biaya = biaya + sel[baris_terkecil][kolom_terkecil] * cost[baris_terkecil] [kolom_terkecil] 3. (mengecek kapasitas dan kebutuhan apakah sudah saling memenuhi) Jika semua kapasitas[i] = 0 dan semua kebutuhan[j] = 0, maka: ke langkah 4. Jika tidak, kembali ke langkah 1 4. cetak biaya



5



Source Code Program /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package simpleleastcost;



import javax.swing.table.DefaultTableModel;



/** * * @author Suarbawa */ public class CostDialog extends javax.swing.JDialog {



/** * Creates new form CostDialog */ DefaultTableModel costModel; private int disposeStatus;



public CostDialog(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents();



6



this.costModel = new DefaultTableModel(); }



public void setCostModel(DefaultTableModel costModelIN) { this.costModel = costModelIN; this.jTable_costTable.setModel(costModel); }



private boolean isInputValid() { boolean valid = true; for (int i = 0; i < this.costModel.getRowCount(); i++) { for (int j = 1; j < this.costModel.getColumnCount(); j++) { if(this.costModel.getValueAt(i, j)==null) { valid = false; }else if ((!this.costModel.getValueAt(i, j).toString().matches("[0-9][09]*[.]?[0-9]*"))) { valid = false; } } } return valid; }



/** * This method is called from within the constructor to initialize the form.



7



* WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // private void initComponents() {



jScrollPane1 = new javax.swing.JScrollPane(); jTable_costTable = new javax.swing.JTable(); jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton();



setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOS E);



jTable_costTable.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" }



8



)); jScrollPane1.setViewportView(jTable_costTable);



jButton1.setText("OK"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } });



jButton2.setText("Cancel"); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } });



javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap(343, Short.MAX_VALUE)



9



.addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(21, 21, 21)) .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 532, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 309, Short.MAX_VALUE) .addGap(38, 38, 38) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(jButton1) .addComponent(jButton2)) .addGap(7, 7, 7)) );



pack(); }//



10



private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if (this.isInputValid() == true) { this.disposeStatus = 1; this.dispose(); } else { javax.swing.JOptionPane.showMessageDialog(rootPane, "One or more input is invalid", "Error", javax.swing.JOptionPane.ERROR_MESSAGE); } }



private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { this.disposeStatus = 0; this.dispose(); }



public int getDisposeStatus() { return this.disposeStatus; } public DefaultTableModel getCostModel() { return this.costModel; } /**



11



* @param args the command line arguments */ public static void main(String args[]) { /* Set the Nimbus look and feel */ // /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(CostDialog.class.getName()).log(java.util.log ging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(CostDialog.class.getName()).log(java.util.log ging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) {



12



java.util.logging.Logger.getLogger(CostDialog.class.getName()).log(java.util.log ging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(CostDialog.class.getName()).log(java.util.log ging.Level.SEVERE, null, ex); } //



/* Create and display the dialog */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { CostDialog dialog = new CostDialog(new javax.swing.JFrame(), true); dialog.addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent e) { System.exit(0); } }); dialog.setVisible(true); } }); }



// Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; 13



private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable_costTable; // End of variables declaration }



14



Pengujian Berikut ini adalah beberapa screenshoot ketika program dijalankan: Tampilan awal source code yang sudah dijalankan :



Pertama pada kali ini kita menggunakan compiler netbeans , dimana untuk menguji program ini berhasil atau tidak kita harus menjalankan source code yang telah diselesaikan, pertama inputkan jumlah supply yang anda jumlah demand yang anda inginkan , seperti gambar berikut :



15



inginkan dan



Inputkan nilai nilai supply dan demand sehingga seperti gambar dibawah ini :



16



Lalu masukan cost dari masing-masing sel seperti dibawah ini



Setelah penginputan cost berhasil muncullah gamabr seperti dibawah ini :



17



Sehingga di peroleh biaya yang dikeluarkan pada bagian bawah



18