Saturday, May 13, 2017

Membuat Kode Pendaftaran atau Penomoran Id Otomatis Dengan Codeigniter

Assalamualaikum sis bro kakak adek cantip dimanapun dirimu berada. Setelah lama kagak nulis di blog ini, akhirnya, muncul juga kesadaran bahwa di luar ambisi nyari duit di internet, ternyata membagi pengalaman yang di dapat di dunia nyata kemudian menuangkan pengalaman tersebut ke dalam bentuk tulisan sangat berkhasiat menambah ilmu, wawasan dan  kegantengan kita dengan sendirinya. hahaha

So, what's next? saya memulainya dengan komitmen kecil dalem ati aja untuk membagi semua ilmu yang saya pelajari, tujuannya simple, selain untuk keperluan dokumentasi, sayang juga kalau ilmu pengetahuan di biarain mojok dalem kepala yaa kan yaa kan yaa kan.

Okay cukup dah basa-basinya. let to the point.

Here we go, seperti biasa, di codeigniter kita mainnya di bagian model, view, dan controllernya. Tapi untuk tutorial kita kali ini, saya cuma akan menjelaskan pada bagian model dan controllernya aja.

Pertama-tama buatlah file di model.

Penjelasan kode :
  • Pada bagian $this->db->select('RIGHT(user.id_odojers,4) as kode', FALSE);
  • user adalah adalah nama tabel nya
  • id_odojers adalah adalah nama kolomnya.
Selanjutnya, panggil function yang baru kita buat tadi di controller kamu, biasanya di index atau terserah di mana posisi function tersebut akan kamu panggil. kalo saya kayak gini :

Untuk menjalankannya, kamu cuma perlu manggil $kodeunik di text field kamu. Kalo aku kayak gini gan :

Hasilnya di aku kayak gini gaann :

DONE!!!
That is it. If you have any question jangan sungkan bertanya di kolom komentar. 

NB : Kamu juga bisa berkreasi dengan susunan huruf lain. Sudah saya sertakan penjelasannya di codenya.

*salem anget*

Sunday, November 6, 2016

Source Code Aplikasi Fuzzy Mamdani SPK Penentu Jumlah Produksi Berbasis C#

Ini sebenernya tugas kuliah kecerdasan buatan. berhubung saya sudah selesai dengan ini daripada numpuk aja di drive mending di share. Lebih bermanfaat buat teman-teman yang lain.

Aplikasi ini di buat berdasarkan contoh kasus. Terdapat penyelesaian dalam bentuk manual sekaligus implementasinya ke bahasa pemograman C#

Screenshot aplikasinya :






Contoh Kasus :



Sebuah perusahaan makanan kaleng akan memproduksi makanan jenis ABC. Dari data 1 bulan terakhir, PERMINTAAN TERBESAR mencapai 5000 kemasan/hari, dan PERMINTAAN TERKECIL 1000 kemasan/hari. PERSEDIAAN TERBANYAK digudang sampai 600 kemasan/hari, dan PERSEDIAAN TERKECIL mencapai 100 kemasan/hari. Dengan segala keterbatasan kemampuan PRODUKSI TERBANYAK adalah 7000 kemasan/hari, dan agar efisien PRODUKSI TERKECIL adalah 2000 kemasan/hari. Dalam produksi perusahaan menggunakan aturan :
R1 :         JIKA permintaan TURUN dan persediaan BANYAK maka produksi BERKURANG
R2 :         JIKA permintaan TURUN dan persediaan SEDIKIT maka produksi BERKURANG  
R3 :         JIKA permintaan NAIK dan persediaan BANYAK maka produksi BERTAMBAH     
R4 :         JIKA permintaan NAIK dan persediaan SEDIKIT maka produksi BERTAMBAH

Berapa harus diproduki jika PERMINTAAN 4000 kemasan dan PERSEDIAAN 300 kemasan.


Masalah di atas bisa di selesaikan menggunakan aplikasi yang saya bagikan ini. tapi sebelumnya mari kita bahas proses penyelesaian secara manual dulu, sehingga nantinya kita menentukan seberapa besar tingkat akurasi dari program yang kita buat ini. Berikut penyelesaiannya menggunakan metode fuzzy mamdani :

Terdapat 3 variabel fuzzy yaitu (1) permintaan, (2) persediaan, dan (3) produksi

·         PERMINTAAN
Terdiri dari 2 himpunan fuzzy, yaitu (1) TURUN, dan (2) NAIK
Diketahui :
Permintaan terendah adalah 1000 kemasan/hari
Permintaan tertinggi adalah 5000 kemasan/hari
Permintaan permasalahan = 4000 kemasan



·

·         PERSEDIAAN
Terdiri dari 2 himpunan fuzzy, yaitu (1) SEDIKIT, dan (2) BANYAK
Diketahui :
Persediaan terendah adalah 100 kemasan/hari
Persediaan tertinggi adalah 600 kemasan/hari
      Persediaan permasalahan = 300 kemasan




·         PRODUKSI
Terdiri dari 2 himpunan fuzzy, yaitu (1) BERKURANG, dan (2) BERTAMBAH
Diketahui :
Produksi terendah adalah 2000 kemasan/hari
Produksi tertinggi adalah 7000 kemasan/hari
Produksi permasalahan = ditanyakan ?? kemasan

Cari Nilai Produksi Z, dengan fungsi implikasi MIN
·         Permintaan x



·         Persediaan y
 







  
        Didapat fungsi keanggotaan hasil komposisi sbb :



Defuzzifikasi
Dengan Metode Centroid hitung momen tiap area :




Hitung luas masing2 area




Sehingga
 


 Untuk penjelasannya silahkan di pahami masing-masing. Selanjutnya berikut adalah source code aplikasinya :

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication4 {     public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();         }         private void Form1_Load(object sender, EventArgs e)         {         }         private void button1_Click(object sender, EventArgs e)         {             double PmMax, PmMin, Prm, MaxPro, MinPro;             double uTrn, uNak;             {                 PmMax = double.Parse(PemMax.Text);                 PmMin = double.Parse(PemMin.Text);                 Prm = double.Parse(Permintaan.Text);                 uTrn = rumus.turun(PmMax, PmMin, Prm);                 uTurun.Text = uTrn.ToString();                 uNak = rumus.naik(PmMax, PmMin, Prm);                 uNaik.Text = uNak.ToString();             }             double PrMax, PrMin, Pers;             double uSdk, uByk;             {                 PrMax = double.Parse(PerMax.Text);                 PrMin = double.Parse(PerMin.Text);                 Pers = double.Parse(Persediaan.Text);                 uSdk = rumus.sedikit(PrMax, PrMin, Pers);                 uByk = rumus.banyak(PrMax, PrMin, Pers);                 uSedikit.Text = uSdk.ToString();                 uBanyak.Text = uByk.ToString();             }                         double p1, p2, p3, p4, max1, max2, max, Min1, Min2, Min, a1, a2;             double m1, m2, m3, AA1, AA2, AA3, z;             // Mencari a-predikat 1 - 4             p1 = Math.Min(Math.Round(uTrn, 2), Math.Round(uByk, 2));             p2 = Math.Min(Math.Round(uTrn, 2), Math.Round(uSdk, 2));             p3 = Math.Min(Math.Round(uNak, 2), Math.Round(uByk, 2));             p4 = Math.Min(Math.Round(uNak, 2), Math.Round(uSdk , 2));             // Mencari Min             Min1 = Math.Min(p1, p2);             Min2 = Math.Min(p3, p4);             Min = Math.Min(Min1, Min2);             // Mencari Max             max1 = Math.Max(p1, p2);             max2 = Math.Max(p3, p4);             max = Math.Max(max1, max2);             // Mencari a1 dan a2             MinPro = double.Parse(MinPd.Text);             MaxPro = double.Parse(MaxPd.Text);             a1 = (Min * (MaxPro - MinPro)) + (MaxPro - PmMax); // Mencari batas area 1             a2 = (max * (MaxPro - MinPro)) + (MaxPro - PmMax); // Mencari batas area 2             ta1.Text = a1.ToString();             ta2.Text = a2.ToString();                          // Defuzzyfikasi             m1 = Math.Round((Min / 2) * (Math.Pow(a1, 2)), 2);             m2 = Math.Round((((1 / (MaxPro - MinPro)) / 2) * (Math.Pow(a2, 3))) - ((MinPro / (MaxPro-MinPro)) / 2) * Math.Pow(a2, 2)) - (((1 / (MaxPro - MinPro)) / 3) * (Math.Pow(a1, 3))) - (((MinPro / (MaxPro - MinPro)) / 2 * (Math.Pow(a1, 2))));             m3 = Math.Round(((max * Math.Pow(MaxPro, 2)) / 2) - (max * (MaxPro - MinPro) / 2) * (MaxPro - MinPro), 2);             TM1 .Text = m1.ToString();             TM2.Text = m2.ToString();             TM3.Text = m3.ToString();             // Mencari Luas Area A1,A2,A3             AA1 = a1 * Min;             AA2 = (Min + max) * (a2 - a1) / 2;             AA3 = (MaxPro - (MaxPro - MinPro)) * max;             A_1.Text = AA1.ToString();             A_2.Text = AA2.ToString();             A_3.Text = AA3.ToString();             z = (m1 + m2 + m3) / (AA1 + AA2 + AA3); // Titik Pusat             Hasil.Text = z.ToString();         }         private void uSedikit_TextChanged(object sender, EventArgs e)         {         }     } }     public partial class rumus {     public static double turun(double PmMax, double PmMin, double Prm)     {         double u;         if (Prm <= PmMin) { u = 1; }         else if ((PmMin <= Prm) && (Prm <= PmMax)) { u = (PmMax - Prm) / (PmMax - PmMin); }         else { u = 0; }         return u;     }     public static double naik(double PmMax, double PmMin, double Prm)     {         double u;         if (Prm <= PmMin) { u = 1; }         else if ((PmMin <= Prm) && (Prm <= PmMax)) { u = (Prm - PmMin) / (PmMax - PmMin); }         else { u = 0; }         return u;     }     public static double sedikit(double PrMax, double PrMin, double Pers)     {         double u;         if (Pers <= PrMin) { u = 1; }         else if ((PrMin <= Pers) && (Pers <= PrMax)) { u = (PrMax - Pers) / (PrMax - PrMin); }         else { u = 0; }         return u;     }     public static double banyak(double PrMax, double PrMin, double Pers)     {         double u;         if (Pers <= PrMin) { u = 0; }         else if ((PrMin <= Pers) && (Pers <= PrMax)) { u = (Pers - PrMin) / (PrMax - PrMin); }         else { u = 0; }         return u;     } }
 
Untuk Source Codenya, bisa di dowload disini :
 
via google drive ==> Klik Disini