Showing posts with label Domain Masalah::DSS. Show all posts
Showing posts with label Domain Masalah::DSS. Show all posts

Wednesday, August 05, 2009

Multi Method DSS dengan JGraph : Kasus Platform dan Plugin AHP



Artikel ini berhubungan dengan artikel sebelumnya tentang Mendesain Multi Agent System Agent dengan Prometheus.

Saya sudah download JGraph, dan segera implementasikan dengan menggunakan Platform yang sebelumnya, ke dalam Plugin AHP (Analytical Hierarchical Process).

Wah, ternyata memang mudah mengembangkan aplikasi yang sangat berfungsi dengan berbasiskan pada Java. Kunci kemudahannya terletak pada daya guna internal yang sudah dimiliki oleh komponen JGraph itu sendiri. Berikut hasil running PluginAHP :

Saya hanya menggunakan kode Hello World pada paket JGraphMX, berupa ini :


private MainAHP() {
initComponents();
mxGraph graph = new mxGraph();
Object parent = graph.getDefaultParent();

graph.getModel().beginUpdate();
try {
Object v1 = graph.insertVertex(parent, null, "Goal", 20, 150,
80, 30);
Object v2 = graph.insertVertex(parent, null, "Alternatif", 240, 150,
80, 30);
Object a1 = graph.insertVertex(parent, null, "Kriteria 1", 440, 50,
80, 30);
Object a2 = graph.insertVertex(parent, null, "Kriteria 2", 440, 150,
80, 30);
Object a3 = graph.insertVertex(parent, null, "Kriteria 3", 440, 250,
80, 30);
Object a4 = graph.insertVertex(parent, null, "Kriteria 4", 440, 350,
80, 30);

graph.insertEdge(parent, null, "AHP", v2, v1);
graph.insertEdge(parent, null, "Weighting", a1, v2);
graph.insertEdge(parent, null, "Weighting", a2, v2);
graph.insertEdge(parent, null, "Weighting", a3, v2);
graph.insertEdge(parent, null, "Weighting", a4, v2);
} finally {
graph.getModel().endUpdate();
}

mxGraphComponent graphComponent = new mxGraphComponent(graph);
graphComponent.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
graphComponent.setPageBackgroundColor(Color.WHITE);
pane.add(graphComponent);
}


Ya, pustaka JGraph ini berdasarkan pada teori Graph yang merupakan teori dasar pada Ilmu Komputer, tepatnya subjek Matematika Diskrit. Saya bercita2 menggunakan paket ini untuk berbagai keperluan modeling sistem yang bisa divisualkan dengan pustaka JGraph. Tapi, sejenak berpikir, saya rasa semua masalah modeling bisa divisualkan dengan berbasis pada struktur data Graph. Alasannya, tree sebagai kasus khusus Graph, merupakan dasar dari semua abstraksi permasalahan. Itu teori saya :) hehe (suka2 saya dunk! ) :p

Semoga bermanfaat!

NB:
  • Saya sertakan source code Platform + Plugin AHP. Itu bisa segera dibuka di Netbeans 6.5, namun ubahlah properties Run pada Project Platform, pada argument d:\plugin Saaty.xml, ubahlah d:\plugin ke tempat dimana file Saaty.xml berada. Saaty.xml merupakan definisi aplikasi berbasis Platform yang saya desain.
  • Keindahan Java terletak pada komunitas yang saling mendukung dengan sehat.
  • Nah, semoga sedikit kontribusi saya ini bisa memberikan sumbangsih yang berguna untuk temen2, untuk berbagai keperluan.

Monday, June 22, 2009

Prosedur Kalkulasi AHP



Ini dibuat oleh siswa yg saya bantu pengembangan program AHP-nya. Seperti pernah saya sampaikan, kalau aplikasi DSS, pasti sy minta buat file EXCEL perhitungannya. Pasti mudah solusinya.

Kasus di atas adalah pemilihan universitas terbaik, dengan beberapa kriteria. Semua penjelasan ada pada file EXCEL tersebut. Jika tepat kasusnya, maka file EXCEL tersebut tidak perlu banyak modifikasi. Namun, selama masih AHP, ya begitu2 saja. :) Kecuali kalao ANP ya, nanti arsitektur nya bertambah dengan cluster dan network, yang feedbacknya bisa bebas. Tidak seperti AHP yg memiliki hirarki linier.

Semoga bermanfaat!
NB:
  • Ya itulah, semoga bermanfaat saja :)

Sunday, March 15, 2009

Analisis, Desain dan Implementasi Basis Data bagi Kasus DSS/SPK

 

Baik, ini yang selalu saya perintahkan jika ada yang minta bantuan pembuatan program SPK : buat penyelesaian masalahnya dengan Microsoft Excel. Seperti kasus berikut:

image

Perhatikan bahwa terdapat data rekening, dan data biaya per tahun. Inti akhirnya adalah pembuatan software DSS/SPK untuk analisis biaya, tepatnya dari data biaya terdahulu, maka akan diusulkan (oleh software) rencana anggaran biaya yang akan datang, dengan berusaha untuk meminimalkan pengurangan resiko kegagalan proyek.

Oke, selanjutnya, ... pasti saya akan pakai Microsoft Access untuk desain databasenya. Perkara nanti akan di convert ke database apapun, pokoknya dalam tahap desain ini, kudu pakai Microsoft Access 2007 (tidak 2003). So, simple, ini visualisasi tabel2 yang tercipta:

db

Selanjutnya yang menjadi masalah adalah ini : saya harus bisa memanggil data biaya masing-masing rekening untuk tahun kapapun. Contoh, kapanpun, saya harus bisa memanggil data biaya untuk Rekening 11003 di tahun 2004,2003 dan tahun kapanpun.

Nah, bagaimana caranya?

Tentu, saya bisa melakukan sekedar operasi Basis Data SELECT dengan kriteria nomor rekening dan tahun tertentu. Tapi, tak terbayangkan kalau terus-menerus melakukan query ke basis data. Solusi yang paling terlihat, adalah menyimpan semua data biaya masing-masing rekening pada tiap tahun ke memori. Dengan struktur data yang memungkin pengaksesan secara langsung. Menggunakan Visual Basic.NET 2008.

Tanpa banyak penjelasan, ini kodenya:

image

 

Perhatikan saya menggunakan Array DaftarRekening yang tiap elemen array merupakan objek dari instan Kelas SortedList. Nah, kuncinya adalah SortedList. Kalau di Java yang idem adalah HashMap. Dengan SortedList kita bisa mengakses tiap elemen pada sorted list dengan KEY-nya, yang berupa nomor rekening. Tentu, tidak boleh ada item yang memiliki KEY yang sama. Jadi, data biaya tiap tahun disimpan pada array elemen ke - n, dengan tiap elemen array itu sendiri bisa diakses dengan pengaksesan langsung menggunakan KEY-nya.

Saya simpulkan, berikut adalah kode untuk menambah elemen ke sorted list :

DaftarRekening(i - TahunAwal).Add(dr.GetString(0), dr.GetDouble(1))

Dan ini untuk mengakses elemennya :

MessageBox.Show(DaftarRekening(2007 - TahunAwal).Item("1"))

Perhatikan bahwa kode penambahan adalah dengan ADD, dimana argumen pertama merupakan KEY dari item, dan argumen kedua merupakan OBJECT yang akan ditambahkan. OBJECT apapun bisa. Sekedar variabel primitif spt Integer, Float bisa. Atau yang kompleks Object dari sebuah kelas juga bisa. Ringan sekali mengimplementasikan ini di VB.NET

Kemudian, perhatikan bahwa kode pengaksesan adalah dengan menggunakan KEY-nya.

Terakhir, perhatikan bahwa indeks array memegang peranan penting. Kasus di sini adalah data dari tahun 2003 .. 2007. So, 2003 adalah indeks ke 0, 2004 adalah indeks ke 1, dst. Sehingga, tentu untuk mendapatkan indeks pertama, kita kurangkan dengan angka tahun awal tersebut : 2003.

Mudah kan?

Semoga bermanfaat dan memberi inspirasi!

NB:

  • Baru kemarin ini saya mulai (tp sudah ada 3 tabel tercipta sebelumnya) u bimbingan thesis ini, sy perkirakan (smoga) 3 hari lagi (dengan tiap hari pertemuan @4jam) semua kalkulasi selesai. Lebih bagus (tentu) dengan visualisasi Report yang berupa Grafik.
  • Untuk urusan input, saya pending dulu, cukup entri di Access 2007, dan langsung implementasikan proses SPK/DSS. Kalau semua Oke, baru input dikembangkan.
  • Senang sekali.
  • Alhamdulillah

Tuesday, April 29, 2008

Smarter DSS -- Sistem Pengambil Keputusan Yang Lebih Pintar

<<>>

.::. Tentang bagaimana membangun Sistem Pengambil Keputusan yang Lebih Cerdas dengan Artificial Intelligence (Kecerdasan Buatan).

Thursday, February 28, 2008

Migrasi ke Microsoft Visual Basic.NET via Aplikasi DSS/SPK Penilaian Perusahaan

Sebagai pengguna Microsoft Visual Basic 6 yang sangat menikmati kemudahan-kemudahan pengembangan di lingkungan ini, keberatan pindah ke lingkungan .NET adalah semata-mata karena keenganan mempelajari sesuatu yang baru dan susah, alih-alih tetap setia pada teknologi lama. Namun, kenyataan membuktikan, hal ini akan berdampak besar kepada investasi waktu. Anda tidak bisa kembali ke masa 2 tahun yang lalu, untuk memperbaiki apa-apa yang seharusnya Anda dapati sekarang. Anda harus siap dengan akibat pengambilan keputusan.

Setelah mempertimbangkan kenyamanan VB 6 dan keterkinian Visual Studio 2008, maka akhirnya saya berniat untuk total pindah ke lingkungan VB.NET. Mudah, karena sebelumnya saya sudah berjibaku dengan lingkungan VB.NET untuk Compact Framework di Windows Mobile. Dan itu saya lakukan di satu program DSS/SPK (Decision Support System/Sistem Pengambilan Keputusan) yang sedang saya kerjakan.

Sesungguhnya sistem yang dibangun mudah, hanya jika subsistem entry datanya tidak banyak. Namun karena banyaknya, maka subsistem entry data yang harus diselesaikan terlebih dahulu, sebelum inti dari aplikasi DSS ini bisa diimplementasikan. Hal seperti ini selalu terjadi jika proyek yang dikembangkan mencakup masalah entry data : Anda harus siap-siap menghabiskan 50% lebih waktu produksi untuk pengembangan subsitem entry data.

(draft)

KOREKSI: ternyata mudah dan cepat serta (sejauh ini) fungsional sekali subsistem data entry yang bisa dibangun hanya dengan menggunakan fitur bawaan VB.NET. Bagus sekali!