Пример #1
0
        public int global_penalti_intensifikasi(mengajar job, GLobalSolusi global_jadwal, int pos, int hari, int Mengajar, int startMengajar)
        {
            int penalti = 0;

            if (pos > 0)
            {
                for (int i = 0; i < pos; i++)
                {
                    for (int j = 0; j < global_jadwal.GlobalSolusi[i].Solusi[hari].Mengajar.Count; j++)
                    {
                        if (global_jadwal.GlobalSolusi[i].Solusi[hari].Mengajar[j].Guru == job.Guru)
                        {
                            if (Math.Abs(global_jadwal.GlobalSolusi[i].Solusi[hari].Mengajar[j].EndMengajar - startMengajar) < job.Sks)
                            {
                                penalti++;
                                form.Row = form.Log.NewRow(); form.Row["Status"] = "Intensifikasi Penalti"; form.Row["Keterangan"] = "Global penalti intensifikasi : " + penalti;
                                form.Log.Rows.Add(form.Row);
                            }
                        }
                    }
                }
            }
            else
            {
                penalti = 0;
            }
            return(penalti);
        }
Пример #2
0
        public int global_pinalti(GLobalSolusi GLobalJadwal, int pos)
        {
            int pinalti = 0;

            // cek guru ngajar bentrok dengan kelas sebelumnya

            //cek rentang guru ngajar terlalu dempet ex : kelas-a mp x jam 1-3, kelas-b mp y 4-6
            for (int i = 0; i < GLobalJadwal.GlobalSolusi[pos].Solusi.Count; i++)
            {
                for (int j = 0; j < GLobalJadwal.GlobalSolusi[pos].Solusi[i].Mengajar.Count; j++)
                {
                    for (int k = 0; k < pos; k++)
                    {
                        for (int l = 0; l < GLobalJadwal.GlobalSolusi[k].Solusi[i].Mengajar.Count; l++)
                        {
                            if (GLobalJadwal.GlobalSolusi[pos].Solusi[i].Mengajar.ElementAt(j).Guru == GLobalJadwal.GlobalSolusi[k].Solusi[i].Mengajar.ElementAt(l).Guru)
                            {
                                if (Math.Abs(GLobalJadwal.GlobalSolusi[pos].Solusi[i].Mengajar.ElementAt(j).StartMengajar - GLobalJadwal.GlobalSolusi[k].Solusi[i].Mengajar.ElementAt(l).StartMengajar) < GLobalJadwal.GlobalSolusi[pos].Solusi[i].Mengajar.ElementAt(j).Sks)
                                {
                                    GLobalJadwal.GlobalSolusi[pos].Solusi[i].Mengajar[j].Problem = true;
                                    form.Row = form.Log.NewRow(); form.Row["Status"] = "Global Penalti"; form.Row["Keterangan"] = "Jadwal Mengajar guru bentrok";
                                    form.Log.Rows.Add(form.Row);
                                    pinalti++;
                                }
                            }
                        }
                    }
                }
            }

            return(pinalti);
        }
Пример #3
0
        private void runAlgo()
        {
            LoadAlgo();
            var bw = new BackgroundWorker();

            bw.DoWork += (sender, args) =>
            {
                int done    = 0;
                int shuffle = 0;
                while (done < GlobalJadwal.GlobalSolusi.Count)
                {
                    Row = Log.NewRow(); Row["Status"] = "Waktu"; Row["Keterangan"] = "Cek Penalti";
                    Log.Rows.Add(Row);
                    LokalPinalti = optimasi.local_pinalti(GlobalJadwal.GlobalSolusi[done]);
                    Row          = Log.NewRow(); Row["Status"] = "Lokal Penalti"; Row["Keterangan"] = "Lokal Penalti : " + LokalPinalti;
                    Log.Rows.Add(Row);
                    GlobalPinalti = optimasi.global_pinalti(GlobalJadwal, done);
                    Row           = Log.NewRow(); Row["Status"] = "Global Penalti"; Row["Keterangan"] = "Global Penalti : " + GlobalPinalti;
                    Log.Rows.Add(Row);
                    if (GlobalPinalti == 0 && LokalPinalti == 0)
                    {
                        Row = Log.NewRow(); Row["Status"] = "Optimal"; Row["Keterangan"] = "Kelas : " + GlobalJadwal.GlobalSolusi[done].Kelas;
                        Log.Rows.Add(Row);
                        done++;
                        double x = (done * 1.00 / GlobalJadwal.GlobalSolusi.Count * 1.00) * 100.00;
                        x = Math.Floor(x);
                        progress_loading.Invoke((MethodInvoker)(() => progress_loading.Text = x + "%"));
                        loading.Invoke((MethodInvoker)(() => loading.Value = int.Parse(x.ToString())));
                        shuffle = 0;
                    }
                    else
                    {
                        Row = Log.NewRow(); Row["Status"] = "Proses"; Row["Keterangan"] = "Interchanging";
                        Log.Rows.Add(Row);
                        GlobalJadwal = optimasi.interchanging(GlobalJadwal, done);
                        Row          = Log.NewRow(); Row["Status"] = "Waktu"; Row["Keterangan"] = "Cek Penalti";
                        Log.Rows.Add(Row);
                        LokalPinalti = optimasi.local_pinalti(GlobalJadwal.GlobalSolusi[done]);
                        Row          = Log.NewRow(); Row["Status"] = "Lokal Penalti"; Row["Keterangan"] = "Lokal Penalti : " + LokalPinalti;
                        Log.Rows.Add(Row);
                        GlobalPinalti = optimasi.global_pinalti(GlobalJadwal, done);
                        Row           = Log.NewRow(); Row["Status"] = "Global Penalti"; Row["Keterangan"] = "Global Penalti : " + GlobalPinalti;
                        Log.Rows.Add(Row);
                        if (GlobalPinalti > 0 || LokalPinalti > 0)
                        {
                            Row = Log.NewRow(); Row["Status"] = "Proses"; Row["Keterangan"] = "Insertion";
                            Log.Rows.Add(Row);
                            GlobalJadwal.GlobalSolusi[done] = optimasi.insertion(GlobalJadwal.GlobalSolusi[done]);

                            Row = Log.NewRow(); Row["Status"] = "Proses"; Row["Keterangan"] = "Intensifikasi";
                            Log.Rows.Add(Row);
                            GlobalJadwal = optimasi.intensifikasi(GlobalJadwal, done);
                            shuffle++;
                        }
                        else
                        {
                            done++;
                            double x = (done * 1.00 / GlobalJadwal.GlobalSolusi.Count * 1.00) * 100.00;
                            x = Math.Floor(x);
                            progress_loading.Invoke((MethodInvoker)(() => progress_loading.Text = x + "%"));
                            loading.Invoke((MethodInvoker)(() => loading.Value = int.Parse(x.ToString())));
                            shuffle = 0;
                        }
                    }
                    if (done < GlobalJadwal.GlobalSolusi.Count)
                    {
                        ErrorLbl.Invoke((MethodInvoker)(() => ErrorLbl.Text = GlobalJadwal.GlobalSolusi[done].Kelas + " Lokal Penalti: " + LokalPinalti.ToString()));
                        GlobalErrorLbl.Invoke((MethodInvoker)(() => GlobalErrorLbl.Text = GlobalJadwal.GlobalSolusi[done].Kelas + " Global Penalti: " + GlobalPinalti.ToString() + done.ToString()));
                    }
                    if (shuffle > 500)
                    {
                        if (shuffle < 3 && done > 0)
                        {
                            done -= 1;
                        }
                        else if (done >= 3)
                        {
                            done -= 2;
                        }
                        double x = (done * 1.00 / GlobalJadwal.GlobalSolusi.Count * 1.00) * 100.00;
                        x = Math.Floor(x);
                        progress_loading.Invoke((MethodInvoker)(() => progress_loading.Text = x + "%"));
                        loading.Invoke((MethodInvoker)(() => loading.Value = int.Parse(x.ToString())));
                        shuffle = 0;
                        Row     = Log.NewRow(); Row["Status"] = "Proses"; Row["Keterangan"] = "Insertion";
                        Log.Rows.Add(Row);
                        GlobalJadwal.GlobalSolusi[done] = optimasi.insertion(GlobalJadwal.GlobalSolusi[done]);
                        Row = Log.NewRow(); Row["Status"] = "Proses"; Row["Keterangan"] = "Intensifikasi";
                        Log.Rows.Add(Row);
                        GlobalJadwal = optimasi.intensifikasi(GlobalJadwal, done);
                        shuffle++;
                    }

                    Thread.Sleep(200);
                }
            };
            bw.RunWorkerCompleted += (sender, args) =>
            {
                hasiljadwal x = new hasiljadwal(this);
                op = true;
                x.Show();
                this.Close();
            };

            bw.RunWorkerAsync();
        }
Пример #4
0
        /// <summary>
        /// terakhir check bentrok collection yang di interchanging dengan global
        /// </summary>
        /// <param name=Solusi></param>
        /// <param name=global></param>
        /// <returns></returns>
        public GLobalSolusi interchanging(GLobalSolusi global, int pos)
        {
            if (pos >= 0)
            {
                int  x    = -1;
                int  xx   = -1;
                bool prob = false;
                int  i    = 0;
                int  j    = 0;
                while (!prob && i < global.GlobalSolusi[pos].Solusi.Count)
                {
                    while (!prob && j < global.GlobalSolusi[pos].Solusi[i].Mengajar.Count)
                    {
                        if (global.GlobalSolusi[pos].Solusi[i].Mengajar[j].Problem)
                        {
                            x    = i;
                            xx   = j;
                            prob = true;
                        }
                        j++;
                    }
                    i++;
                }
                if (prob)
                {
                    if (pos > 0)
                    {
                        int xy  = -1;
                        int xyy = -1;
                        for (int y = 0; y < global.GlobalSolusi[pos].Solusi.Count; y++)
                        {
                            int startJam = limit(y);
                            for (int yy = 0; yy < global.GlobalSolusi[pos].Solusi[y].Mengajar.Count; yy++)
                            {
                                if (global_penalti_intensifikasi(global.GlobalSolusi[pos].Solusi[x].Mengajar[xx], global, pos, y, yy, startJam) == 0)
                                {
                                    if (Lokal_penalti_intensifikasi(global.GlobalSolusi[pos].Solusi[x].Mengajar[xx], global.GlobalSolusi[pos], pos, y) == 0)
                                    {
                                        xy  = y;
                                        xyy = yy;
                                    }
                                }
                                startJam += global.GlobalSolusi[pos].Solusi[y].Mengajar[yy].Sks;
                            }
                        }

                        if (xy >= 0 && xyy >= 0)
                        {
                            mengajar temp = new mengajar();
                            temp = global.GlobalSolusi[pos].Solusi[x].Mengajar[xx];
                            global.GlobalSolusi[pos].Solusi[x].Mengajar[xx]   = global.GlobalSolusi[pos].Solusi[xy].Mengajar[xyy];
                            global.GlobalSolusi[pos].Solusi[xy].Mengajar[xyy] = temp;
                            regenerate_jam_mengajar(global.GlobalSolusi[pos]);
                        }
                        else
                        {
                            form.Row = form.Log.NewRow(); form.Row["Status"] = "Interchanging"; form.Row["Keterangan"] = "Gagal meemukan pasangan optimal, mencari pasangan minimum limit";
                            form.Log.Rows.Add(form.Row);
                            int min   = 1000;
                            int trial = 100;
                            for (int k = 0; k < trial; k++)
                            {
                                int y  = rr.Next(0, global.GlobalSolusi[pos].Solusi.Count);
                                int yy = rg.Next(0, global.GlobalSolusi[pos].Solusi[y].Mengajar.Count);
                                if (min > global_penalti_intensifikasi(global.GlobalSolusi[pos].Solusi[x].Mengajar[xx], global, pos, y, yy, global.GlobalSolusi[pos].Solusi[y].Mengajar[yy].StartMengajar))
                                {
                                    min = global_penalti_intensifikasi(global.GlobalSolusi[pos].Solusi[x].Mengajar[xx], global, pos, y, yy, global.GlobalSolusi[pos].Solusi[y].Mengajar[yy].StartMengajar);
                                    xy  = y;
                                    xyy = yy;
                                }
                            }
                            mengajar temp = new mengajar();
                            temp = global.GlobalSolusi[pos].Solusi[x].Mengajar[xx];
                            global.GlobalSolusi[pos].Solusi[x].Mengajar[xx]   = global.GlobalSolusi[pos].Solusi[xy].Mengajar[xyy];
                            global.GlobalSolusi[pos].Solusi[xy].Mengajar[xyy] = temp;
                            regenerate_jam_mengajar(global.GlobalSolusi[pos]);
                        }
                    }
                    else
                    {
                        int      xy   = rr.Next(0, global.GlobalSolusi[pos].Solusi.Count);
                        int      xyy  = rg.Next(0, global.GlobalSolusi[pos].Solusi[xy].Mengajar.Count);
                        mengajar temp = new mengajar();
                        temp = global.GlobalSolusi[pos].Solusi[x].Mengajar[xx];
                        global.GlobalSolusi[pos].Solusi[x].Mengajar[xx]   = global.GlobalSolusi[pos].Solusi[xy].Mengajar[xyy];
                        global.GlobalSolusi[pos].Solusi[xy].Mengajar[xyy] = temp;
                        regenerate_jam_mengajar(global.GlobalSolusi[pos]);
                    }
                }
            }
            else
            {
            }
            for (int i = 0; i < global.GlobalSolusi[pos].Solusi.Count; i++)
            {
                for (int j = 0; j < global.GlobalSolusi[pos].Solusi[i].Mengajar.Count; j++)
                {
                    if (global.GlobalSolusi[pos].Solusi[i].Mengajar[j].Problem)
                    {
                        global.GlobalSolusi[pos].Solusi[i].Mengajar[j].Problem = false;
                    }
                }
            }
            return(global);
        }
Пример #5
0
        /* public List<solusi> intensification(solusi jadwal)
         * {
         *   //pindah mengajar yang ditandain
         *   List<solusi> temp_jadwal = new List<solusi>();
         *   List<solusi> temp_job = new List<solusi>();
         *   List<mengajar> job = new List<mengajar>();
         *   LinkedListNode<mengajar> lln;
         *   for (int i = 0; i < jadwal.Solusi.Count; i++)
         *   {
         *       for (int j = 0; j < jadwal.Solusi[i].Mengajar.Count; j++)
         *       {
         *           if (jadwal.Solusi[i].Mengajar.ElementAt(j).Problem)
         *           {
         *               //lln = new LinkedListNode<mengajar>(jadwal.Solusi[i].Mengajar.ElementAt(j));
         *               job.Add(jadwal.Solusi[i].Mengajar.ElementAt(j));
         *               jadwal.Solusi[i].Mengajar.Remove(jadwal.Solusi[i].Mengajar.ElementAt(j));
         *               lln = null;
         *           }
         *       }
         *   }
         *   //end pisah ngajar
         *   temp_jadwal.Add(jadwal);
         *   // masukin ke tetangga
         *   for (int i = 0; i < job.Count; i++) // iterasi sebanyak job
         *   {
         *       for (int j = 0; j < temp_jadwal.Count; j++)// iterasi per solusi yang fitness di lokal
         *       {
         *           for (int k = 0; k <jadwal.Solusi.Count; k++) // iterasi per hari
         *           {
         *               for (int l = 0; l <= jadwal.Solusi[k].Mengajar.Count; l++)// iterasi mengajar per hari
         *               {
         *                   List<jadwal> x = temp_jadwal[j].Solusi.ToList();
         *                   temp_job.Add(new solusi() { Jurusan = temp_jadwal[j].Jurusan, Kelas = temp_jadwal[j].Kelas, Solusi = x, Tingkat = temp_jadwal[j].Tingkat, Visit = temp_jadwal[j].Visit});
         *                   temp_job.Last().Solusi[k].Mengajar.Insert(l, job[i]);
         *               }
         *
         *           }
         *       }
         *
         *       for (int m = 0; m < temp_job.Count; m++)//periksa lokal fitness temp_job
         *       {
         *           if (local_pinalti(temp_job[m]) > 0)
         *           {
         *               temp_job.RemoveAt(m);
         *           }
         *       }
         *       temp_jadwal.Clear();
         *       temp_jadwal.AddRange(temp_job);
         *       temp_job.Clear();
         *   }
         *   //end tetangga
         *
         *   for (int i = 0; i < temp_jadwal.Count; i++)
         *   {
         *       for (int j = 0; j < temp_jadwal[i].Solusi.Count; j++)
         *       {
         *           for (int k = 0; k < temp_jadwal[i].Solusi[j].Mengajar.Count; k++)
         *           {
         *               if (temp_jadwal[i].Solusi[j].Mengajar.ElementAt(k).Problem)
         *               {
         *                   temp_jadwal[i].Solusi[j].Mengajar.ElementAt(k).Problem = false;
         *               }
         *           }
         *       }
         *   }
         *       return temp_jadwal;
         * }*/

        public GLobalSolusi intensifikasi(GLobalSolusi globaljadwal, int pos)
        {
            List <mengajar> Job = new List <mengajar>();

            for (int i = 0; i < globaljadwal.GlobalSolusi[pos].Solusi.Count; i++)
            {
                for (int j = 0; j < globaljadwal.GlobalSolusi[pos].Solusi[i].Mengajar.Count; j++)
                {
                    if (globaljadwal.GlobalSolusi[pos].Solusi[i].Mengajar.ElementAt(j).Problem)
                    {
                        if (globaljadwal.GlobalSolusi[pos].Solusi[i].Mengajar.Count == 1)
                        {
                            globaljadwal.GlobalSolusi[pos].Solusi[i].Mengajar.ElementAt(j).Problem = false;
                        }
                        else
                        {
                            //lln = new LinkedListNode<mengajar>(jadwal.Solusi[i].Mengajar.ElementAt(j));
                            Job.Add(globaljadwal.GlobalSolusi[pos].Solusi[i].Mengajar.ElementAt(j));
                            globaljadwal.GlobalSolusi[pos].Solusi[i].Mengajar.Remove(globaljadwal.GlobalSolusi[pos].Solusi[i].Mengajar.ElementAt(j));
                        }
                    }
                }
            }

            regenerate_jam_mengajar(globaljadwal.GlobalSolusi[pos]);
            int fin          = 0;
            int counterError = 1;
            int rand_hari    = rg.Next(0, globaljadwal.GlobalSolusi[pos].Solusi.Count);
            int rand_ngajar  = rr.Next(0, globaljadwal.GlobalSolusi[pos].Solusi[rand_hari].Mengajar.Count);

            while (fin < Job.Count)
            {
                //if (global_penalti_intensifikasi(Job[fin], globaljadwal,pos,rand_hari,rand_ngajar) == 0)
                //{
                //check global
                if (Lokal_penalti_intensifikasi(Job[fin], globaljadwal.GlobalSolusi[pos], pos, rand_hari) > 0)
                {
                    rand_hari   = rg.Next(0, globaljadwal.GlobalSolusi[pos].Solusi.Count);
                    rand_ngajar = rr.Next(0, globaljadwal.GlobalSolusi[pos].Solusi[rand_hari].Mengajar.Count);
                    form.ErrorLbl.Invoke((MethodInvoker)(() => form.ErrorLbl.Text = globaljadwal.GlobalSolusi[pos].Kelas + ", Lokal intensifikasi Penalti: " + Lokal_penalti_intensifikasi(Job[fin], globaljadwal.GlobalSolusi[pos], pos, rand_hari) + counterError.ToString()));
                    counterError++;
                }
                else
                {
                    //lokal fitt
                    form.Row = form.Log.NewRow(); form.Row["Status"] = "Intensifikasi"; form.Row["Keterangan"] = "Generate Barnch sebanyak " + counterError + " pada satu job";
                    form.Log.Rows.Add(form.Row);
                    globaljadwal.GlobalSolusi[pos].Solusi[rand_hari].Mengajar.Insert(rand_ngajar, Job[fin]);
                    int jam     = atur_jam_mengajar(rand_hari);
                    int lim     = limit(rand_hari);
                    int jam_end = jam;
                    for (int i = 0; i < globaljadwal.GlobalSolusi[pos].Solusi[rand_hari].Mengajar.Count; i++)
                    {
                        globaljadwal.GlobalSolusi[pos].Solusi[rand_hari].Mengajar[i].StartMengajar = jam;
                        globaljadwal.GlobalSolusi[pos].Solusi[rand_hari].Mengajar[i].EndMengajar   = jam + globaljadwal.GlobalSolusi[pos].Solusi[rand_hari].Mengajar[i].Sks - 1;
                        lim -= globaljadwal.GlobalSolusi[pos].Solusi[rand_hari].Mengajar[i].Sks;
                        jam += globaljadwal.GlobalSolusi[pos].Solusi[rand_hari].Mengajar[i].Sks;
                    }
                    globaljadwal.GlobalSolusi[pos].Solusi[rand_hari].Limit = lim;
                    fin++;
                    counterError = 1;
                }

                if (counterError > 300)    //0.5 detik belum menemukan keputusan
                {
                    form.Row = form.Log.NewRow(); form.Row["Status"] = "Intensifikasi"; form.Row["Keterangan"] = "Jumlah branch melibihi limit melakukan penelusuran fitness";
                    form.Log.Rows.Add(form.Row);
                    int globalHariMin = -1;
                    int globalngajar  = -1;
                    int globalMin     = 9999;
                    for (int i = 0; i < globaljadwal.GlobalSolusi[pos].Solusi.Count; i++)
                    {
                        int jamStart = atur_jam_mengajar(i);
                        for (int j = 0; j <= globaljadwal.GlobalSolusi[pos].Solusi[i].Mengajar.Count; j++)
                        {
                            if (globalMin > global_penalti_intensifikasi(Job[fin], globaljadwal, pos, i, j, jamStart))
                            {
                                globalMin = global_penalti_intensifikasi(Job[fin], globaljadwal, pos, i, j, jamStart);
                                if (globalMin == 0)
                                {
                                    if (Lokal_penalti_intensifikasi(Job[fin], globaljadwal.GlobalSolusi[pos], pos, i) == 0)
                                    {
                                        globalHariMin = i;
                                        globalngajar  = j;
                                        j             = globaljadwal.GlobalSolusi[pos].Solusi[i].Mengajar.Count;
                                    }
                                }
                            }

                            if (j < globaljadwal.GlobalSolusi[pos].Solusi[i].Mengajar.Count - 1)
                            {
                                jamStart += globaljadwal.GlobalSolusi[pos].Solusi[i].Mengajar[j].Sks;
                            }
                        }
                        if (pos == 0)
                        {
                            if (globalHariMin >= 0 || globalngajar >= 0)
                            {
                                i = globaljadwal.GlobalSolusi[pos].Solusi.Count;
                            }
                        }
                        else
                        {
                            if (globalHariMin >= 0 && globalngajar >= 0)
                            {
                                i = globaljadwal.GlobalSolusi[pos].Solusi.Count;
                            }
                        }
                    }
                    if (globalHariMin >= 0 && globalngajar >= 0)
                    {
                        form.Row = form.Log.NewRow(); form.Row["Status"] = "Intensifikasi"; form.Row["Keterangan"] = "Ketemu branch dengan fitnesh optimal global dan lokal";
                        form.Log.Rows.Add(form.Row);
                        globaljadwal.GlobalSolusi[pos].Solusi[globalHariMin].Mengajar.Insert(globalngajar, Job[fin]);
                        regenerate_jam_mengajar(globaljadwal.GlobalSolusi[pos]);
                    }
                    else
                    {
                        form.Row = form.Log.NewRow(); form.Row["Status"] = "Intensifikasi"; form.Row["Keterangan"] = "tidak ketemu fitness lokal dan global, memasuki job ke limit terbesar";
                        form.Log.Rows.Add(form.Row);
                        int min = 0;
                        for (int i = 1; i < globaljadwal.GlobalSolusi[pos].Solusi.Count; i++)
                        {
                            if (globaljadwal.GlobalSolusi[pos].Solusi[min].Limit < globaljadwal.GlobalSolusi[pos].Solusi[i].Limit)
                            {
                                min = i;
                            }
                        }
                        int force = rr.Next(0, globaljadwal.GlobalSolusi[pos].Solusi[min].Mengajar.Count);
                        globaljadwal.GlobalSolusi[pos].Solusi[min].Mengajar.Insert(force, Job[fin]);
                        regenerate_jam_mengajar(globaljadwal.GlobalSolusi[pos]);
                    }
                    fin++;
                    counterError = 1;
                }

                /*}
                 * else
                 * {
                 *  rand_hari = rg.Next(0, globaljadwal.GlobalSolusi[pos].Solusi.Count);
                 *  rand_ngajar = rr.Next(0, globaljadwal.GlobalSolusi[pos].Solusi[rand_hari].Mengajar.Count);
                 * form.GlobalErrorLbl.Invoke((MethodInvoker)(()=> form.GlobalErrorLbl.Text= globaljadwal.GlobalSolusi[pos].Kelas + " , Global Penalti : " + global_penalti_intensifikasi(Job[fin], globaljadwal, pos, rand_hari, rand_ngajar)));
                 * }*/
            }
            Job = null;
            for (int i = 0; i < globaljadwal.GlobalSolusi[pos].Solusi.Count; i++)
            {
                for (int j = 0; j < globaljadwal.GlobalSolusi[pos].Solusi[i].Mengajar.Count; j++)
                {
                    if (globaljadwal.GlobalSolusi[pos].Solusi[i].Mengajar[j].Problem)
                    {
                        globaljadwal.GlobalSolusi[pos].Solusi[i].Mengajar[j].Problem = false;
                    }
                }
            }
            return(globaljadwal);
        }
Пример #6
0
 public solusi proses_movns(solusi Solusi, GLobalSolusi global)
 {
     return(Solusi);
 }