Example #1
0
        //Fitness degerlerini dosya tipine gore hesaplayan fonksiyon
        //fitness fonksiyonumuz uzaklik hesabi oldugundan problemin tipi fitness fonksiyonumuzu da belirliyor.
        public void CalculateFitnessFunction(TspFile tspFile, EdgeWeightType edgeWeightType)
        {
            switch (edgeWeightType)
            {
            case EdgeWeightType.EUC_2D:
                tspFile.EuclidDistance();
                break;

            case EdgeWeightType.MAX_2D:
                tspFile.MaximumDistance();
                break;

            case EdgeWeightType.MAN_2D:
                tspFile.ManhattanDistance();
                break;

            case EdgeWeightType.CEIL_2D:
                tspFile.CeilDistance();
                break;

            default:
                break;
            }
        }
Example #2
0
        // Dosya okuma Fonksiyonu
        //Butun satirlari okuyup lines`a atiyor.
        // daha sonra string islemleri ile tspfile classina tanimliyoruz.
        void ReadFile()
        {
            listBox1.Items.Clear();
            OpenFileDialog openFileDialog = new OpenFileDialog();

            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                string[] lines = File.ReadAllLines(openFileDialog.FileName);
                tspFile = new TspFile();
                bool   startCoordinat = false;
                bool   rightFile      = true;
                char[] seperators     = new char[] { ' ' };

                for (int i = 0; i < lines.Length; i++)
                {
                    string line = lines[i].Trim();

                    if (line != "NODE_COORD_SECTION" && startCoordinat == false)
                    {
                        string before = line.Split(':')[0].Trim();
                        string after  = line.Split(':')[1].Trim();


                        if (before == "NAME")
                        {
                            tspFile.name = after;
                        }
                        else if (before == "TYPE")
                        {
                            if (after == "TSP")
                            {
                                tspFile.type = after;
                            }
                            else
                            {
                                rightFile = false;  /////// Dosya TSP degil ise yanlis dosya tipi
                                break;
                            }
                        }
                        else if (before == "COMMENT")
                        {
                            tspFile.comment = after;
                        }
                        else if (before == "DIMENSION")
                        {
                            tspFile.dimension = int.Parse(after);
                        }
                        else if (before == "EDGE_WEIGHT_TYPE") //tipi 2d olmayanlari okumuyor.
                        {
                            try
                            {
                                tspFile.edgeWeightType = (EdgeWeightType)Enum.Parse(typeof(EdgeWeightType), after);
                            }
                            catch (Exception)
                            {
                                rightFile = false;
                                MessageBox.Show("Yanlış Dosya Formatı. Geçerli formatlar EUC_2D - MAX_2D - MAN_2D - CEIL_2D");
                                break;
                            }
                        }
                    }

                    else if (line == "NODE_COORD_SECTION")
                    {
                        startCoordinat = true;
                    }

                    else if (line != "EOF")
                    {
                        line = lines[i].Trim();
                        string[] splitLine = line.Split(seperators, StringSplitOptions.RemoveEmptyEntries);
                        int      index     = int.Parse(splitLine[0]);
                        double   x         = double.Parse(splitLine[1].Replace('.', ','));
                        double   y         = double.Parse(splitLine[2].Replace('.', ','));
                        tspFile.AddCity(index, x, y);
                    }
                }
                if (rightFile) // Dosya tsp ve tipi 2d ise
                {
                    listBox1.Items.Add(tspFile.name);
                    listBox1.Items.Add(tspFile.comment);
                    listBox1.Items.Add(tspFile.type);
                    listBox1.Items.Add(tspFile.dimension);
                    listBox1.Items.Add(tspFile.edgeWeightType);
                    listBox1.Items.Add(tspFile.MaximumDistance());
                    for (int i = 0; i < tspFile.cityList.Count; i++)
                    {
                        listBox1.Items.Add(tspFile.cityList[i].index + ".city " + tspFile.cityList[i].x + " , " + tspFile.cityList[i].y);
                    }
                }
            }
        }