Beispiel #1
0
 public void setRandomValue()
 {
     do
     {
         if (domainRuangan.Count > 1)
         {
             this.currentRuangan = this.ruanganManagement.getRandomRuangan();
         }
         this.currentMulai = myRandom.GetRandomNumber(this.domainMulai);
         this.currentHari  = myRandom.GetRandomNumber(this.domainHari);
     } while (!this.isCurrentValid());
 }
Beispiel #2
0
 public Kelas(Kelas kelas)
 {
     this.ruanganManagement = kelas.ruanganManagement;
     this.nama           = kelas.nama;
     this.durasi         = kelas.durasi;
     this.currentRuangan = kelas.currentRuangan;
     this.currentMulai   = kelas.currentMulai;
     this.currentHari    = kelas.currentHari;
     this.domainRuangan  = kelas.domainRuangan;
     this.domainMulai    = kelas.domainMulai;
     this.domainHari     = kelas.domainHari;
 }
Beispiel #3
0
 public Ruangan(Ruangan R)
 {
     nama      = R.nama;
     jam_buka  = R.jam_buka;
     jam_tutup = R.jam_tutup;
     hari_buka = new List <int>();
     if (hari_buka != null)
     {
         for (int i = 0; i < R.hari_buka.Count; i++)
         {
             hari_buka.Add(R.hari_buka[i]);
         }
     }
     waktu_available = R.waktu_available;
     waktu_terpakai  = R.waktu_terpakai;
 }
Beispiel #4
0
        public void mutation()
        {
            int chromosomeLength = P.getIndividu(0).getDNA().getArrayKelas().Count - 1;

            //Ambil random point
            int randomPoint = myRandom.GetRandomNumber(0, chromosomeLength);

            // ambil random Mutation Point
            int randomMutation = myRandom.GetRandomNumber(0, 2);
            int temp;

            switch (randomMutation)
            {
            case 0:
                temp = P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getHari();
                while (P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getHari() == temp)
                {
                    P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].setRandomValue();
                }
                break;

            case 1:
                temp = P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getMulai();
                while (P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getMulai() == temp)
                {
                    P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].setRandomValue();
                }
                break;

            case 2:
                Ruangan tempR = new Ruangan(P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getRuangan());
                while (P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getRuangan() == tempR)
                {
                    P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].setRandomValue();
                }
                break;

            default:
                break;
            }
            //print hasil mutasi
            Console.WriteLine("hasil mutasi :");
            P.getIndividu(0).print();
            Console.WriteLine("--------------");
        }
Beispiel #5
0
        public void crossover()
        //crossover 2 individu paling atas;
        {
            int chromosomeLength = P.getIndividu(0).getDNA().getArrayKelas().Count - 1;
            //Ambil random point
            int randomPoint = myRandom.GetRandomNumber(0, chromosomeLength);

            //2 point crossover di point tersebut.
            int randomCrossOver = myRandom.GetRandomNumber(0, 2);
            int temp;

            switch (randomCrossOver)
            {
            case 0:
                temp = P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getHari();
                if (P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getHari() != P.getIndividu(1).getDNA().getArrayKelas()[randomPoint].getHari())
                {
                    P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].setHari(P.getIndividu(1).getDNA().getArrayKelas()[randomPoint].getHari());
                    P.getIndividu(1).getDNA().getArrayKelas()[randomPoint].setHari(temp);
                }
                break;

            case 1:
                temp = P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getMulai();
                P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].setMulai(P.getIndividu(1).getDNA().getArrayKelas()[randomPoint].getMulai());
                P.getIndividu(1).getDNA().getArrayKelas()[randomPoint].setMulai(temp);
                break;

            case 2:
                Ruangan tempR = new Ruangan(P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getRuangan());
                P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].setRuangan(P.getIndividu(1).getDNA().getArrayKelas()[randomPoint].getRuangan());
                P.getIndividu(1).getDNA().getArrayKelas()[randomPoint].setRuangan(tempR);
                break;

            default:
                break;
            }
            //print konflik hasil crossover
            Console.WriteLine("Hasil Crossover :");
            P.getIndividu(0).print();
            P.getIndividu(1).print();
            Console.WriteLine("--------------------");
        }
Beispiel #6
0
        /////////// Contoh cara make:
        //
        // List<int> hari_k1 = new List<int>();
        // hari_k1.Add(1);
        // hari_k1.Add(2);
        // hari_k1.Add(3);
        // hari_k1.Add(4);
        // hari_k1.Add(5);
        // List<string> constrain_ruangan= new List<string>();
        // constrain_ruangan.Add("7602");
        // constrain_ruangan.Add("7610");
        // Kelas k1 = new Kelas("IF2110", constrain_ruangan, 7, 12, 4, hari_k1, rm);
        public Kelas(string nama, List <string> ruangan, int mulai, int selesai, int durasi, List <int> hari, RuanganManagement ruanganManagement)
        {
            this.ruanganManagement = ruanganManagement;
            this.domainRuangan     = new List <Ruangan>();

            if (ruangan[0].Equals("-"))
            {
                this.domainRuangan = ruanganManagement.getAllRuangan();
            }
            else
            {
                this.currentRuangan = ruanganManagement.getRuangan(ruangan[0]);


                foreach (string r in ruangan)
                {
                    foreach (Ruangan x in ruanganManagement.getAllRuangan())
                    {
                        if (r.Equals(x.getName()))
                        {
                            this.domainRuangan.Add(x);
                        }
                    }
                }
            }

            this.nama   = nama;
            this.durasi = durasi;

            this.domainHari  = hari;
            this.domainMulai = new List <int>();
            for (int i = mulai; i <= selesai - durasi; i++)
            {
                this.domainMulai.Add(i);
            }

            this.setRandomValue();
        }
Beispiel #7
0
 public void setRuangan(Ruangan R)
 {
     currentRuangan = R;
 }
Beispiel #8
0
 public void addRuangan(Ruangan ruangan)
 {
     this.ruangans.Add(ruangan);
 }