Esempio n. 1
0
            }//minimize_kontrol iterasyon devam kontrol

            static int cikan_bul(Simpleks[] satirlar, Simpleks z)
            {
                double min   = double.MaxValue;
                int    indis = -1;

                if (minimizasyon)
                {
                    giren = Simpleks.min_bul(z);
                }
                else
                {
                    giren = Simpleks.max_bul(z);
                }

                for (int i = 0; i < satirlar.Length; i++)
                {
                    if (satirlar[i].satir[giren] > 0)
                    {
                        if (satirlar[i].satir[satirlar[i].satir.Length - 1] / satirlar[i].satir[giren] > 0 && satirlar[i].satir[satirlar[i].satir.Length - 1] / satirlar[i].satir[giren] < min)
                        {
                            min   = satirlar[i].satir[satirlar[i].satir.Length - 1] / satirlar[i].satir[giren];
                            indis = i;
                        }
                    }
                }

                return(indis);
            }
Esempio n. 2
0
 public static bool min_kontrol(Simpleks z)
 {
     for (int i = 0; i < z.satir.Length; i++)
     {
         if (z.satir[i] > 0)
         {
             return(true);
         }
     }
     return(false);
 }//minimize_kontrol iterasyon devam kontrol
Esempio n. 3
0
 public static bool max_kontrol(Simpleks z)//maximize_kontrol
 {
     for (int i = 0; i < z.satir.Length; i++)
     {
         if (z.satir[i] < 0)
         {
             return(true);
         }
     }
     return(false);
 }
Esempio n. 4
0
            static int min_bul(Simpleks z) // minimize problem
            {
                double n     = double.MinValue;
                int    indis = -1;

                for (int i = 0; i < z.satir.Length; i++)
                {
                    if (kosul != i)
                    {
                        if (z.satir[i] > n)
                        {
                            n     = z.satir[i];
                            indis = i;
                        }
                    }
                }
                return(indis);
            }
Esempio n. 5
0
            static int max_bul(Simpleks z) //maximize problem
            {
                double m     = double.MaxValue;
                int    indis = -1;

                for (int i = 0; i < z.satir.Length; i++)
                {
                    if (kosul != i)
                    {
                        if (z.satir[i] < m)
                        {
                            m     = z.satir[i];
                            indis = i;
                        }
                    }
                }

                return(indis);
            }
Esempio n. 6
0
            public static void iterasyon(Simpleks[] satirlar, Simpleks z)
            {
                cikan = cikan_bul(satirlar, z);
                double anahtar_eleman = satirlar[cikan].satir[giren];
                double carpan;

                if (z.satir[giren] != 0)
                {
                    carpan = z.satir[giren] / satirlar[cikan].satir[giren];//anahtar eleman

                    for (int j = 0; j < satirlar[0].satir.Length; j++)
                    {
                        z.satir[j] -= carpan * satirlar[cikan].satir[j];
                    }
                }
                for (int i = 0; i < satirlar.Length; i++)
                {
                    if (i != cikan && satirlar[i].satir[giren] != 0)
                    {
                        carpan = satirlar[i].satir[giren] / satirlar[cikan].satir[giren];

                        for (int j = 0; j < satirlar[0].satir.Length; j++)
                        {
                            if (kosul != j)
                            {
                                satirlar[i].satir[j] -= carpan * satirlar[cikan].satir[j];
                            }
                        }
                    }
                }

                for (int i = 0; i < satirlar[cikan].satir.Length; i++)
                {
                    if (kosul != i)
                    {
                        satirlar[cikan].satir[i] /= anahtar_eleman;
                    }
                }
            }
Esempio n. 7
0
        private void uygula_Click(object sender, EventArgs e)
        {
            if (!maxradio.Checked && !minradio.Checked)
            {
                MetroMessageBox.Show(this, "max/min seçimi yapınız", "Uyarı");
            }
            else
            {
                try
                {
                    for (int i = 0; i < metroGrid1.Rows.Count - 1; i++)
                    {
                        for (int j = 0; j < metroGrid1.Columns.Count; j++)
                        {
                            if (metroGrid1.Rows[i].Cells[j] != metroGrid1.Rows[i].Cells["Koşul"])
                            {
                                Convert.ToDouble(metroGrid1.Rows[i].Cells[j].Value);
                            }
                        }
                    }

                    if (ilk)
                    {
                        satirlar = new Simpleks[Convert.ToInt32(kisit.Text)];
                        Simpleks.set_Kosul(metroGrid1.Columns["Koşul"].Index);
                        for (int i = 0; i < satirlar.Length; i++)
                        {
                            satirlar[i] = new Simpleks(metroGrid1.Columns.Count, metroGrid1.Rows[i + 1], minradio.Checked);
                        }
                        z   = new Simpleks(metroGrid1.Columns.Count, metroGrid1.Rows[0], minradio.Checked);
                        ilk = false;
                    }
                    if (minradio.Checked)
                    {
                        if (Simpleks.min_kontrol(z))
                        {
                            Simpleks.iterasyon(satirlar, z);
                            metroGrid1.Rows[Simpleks.get_Cikan() + 1].HeaderCell.Value = metroGrid1.Columns[Simpleks.get_Giren()].HeaderCell.Value;
                        }
                    }
                    if (!minradio.Checked)
                    {
                        if (Simpleks.max_kontrol(z))
                        {
                            Simpleks.iterasyon(satirlar, z);
                            metroGrid1.Rows[Simpleks.get_Cikan() + 1].HeaderCell.Value = metroGrid1.Columns[Simpleks.get_Giren()].HeaderCell.Value;
                        }
                    }


                    for (int j = 0; j < metroGrid1.Columns.Count; j++)
                    {
                        if (metroGrid1.Rows[0].Cells["Koşul"] != metroGrid1.Rows[0].Cells[j])
                        {
                            metroGrid1.Rows[0].Cells[j].Value = z.satir[j].ToString();
                        }
                        else
                        {
                            metroGrid1.Rows[0].Cells["Koşul"].Value = "<=";
                        }
                    }
                    for (int i = 1; i < satirlar.Length + 1; i++)
                    {
                        for (int j = 0; j < metroGrid1.Columns.Count; j++)
                        {
                            if (metroGrid1.Rows[i].Cells["Koşul"] != metroGrid1.Rows[i].Cells[j])
                            {
                                metroGrid1.Rows[i].Cells[j].Value = satirlar[i - 1].satir[j].ToString();
                            }
                        }
                    }
                }
                catch
                {
                    MetroMessageBox.Show(this, "Girilen Değerleri Kontrol Ediniz", "Uyarı");
                }
            }
        }