コード例 #1
0
        public void SetGraph(TSPGraph <ACOCity, ACODistance> graph)
        {
            _OldNodes = new List <Node>(_Nodes);
            ClearGraph();

            foreach (ACOCity city in graph.GetCities())
            {
                AddNewNode(city, graph.GetCities());
            }
        }
コード例 #2
0
        private void InitAnts(TSPGraph <ACOCity, ACODistance> graph)
        {
            _Ants.Clear();
            foreach (ACOCity c in graph.GetCities())
            {
                c.RemoveAnts();
            }

            for (int i = 0; i < _Props.AntsCount; i++)
            {
                _Ants.Add(new Ant(_Props, graph.GetCities()));
            }
        }
コード例 #3
0
        private void CopyGraph(TSPGraph <ACOCity, ACODistance> graph)
        {
            foreach (ACOCity mainCity in graph.GetCities())
            {
                ACOCity copiedCity = (ACOCity)mainCity.Clone();


                for (int i = 0; i < graphState.GetCities().Count; i++)
                {
                    ACODistance dist = (ACODistance)((ACODistance)mainCity.GetDistanceTo(graph.GetCities()[i])).Clone();
                    copiedCity.Connect(graphState.GetCities()[i], dist);
                }

                graphState.AddCity(copiedCity);
            }
        }
コード例 #4
0
        public void AddNewNode(ACOCity cityToAdd, List <ACOCity> citiesFromState)
        {
            _namesCounter++;
            ACOCity city = new ACOCity((string)cityToAdd.СityName.Clone());

            for (int i = 0; i < _Graph.GetCities().Count; i++)
            {
                city.Connect(_Graph.GetCities()[i], (ACODistance)cityToAdd.GetDistanceTo(citiesFromState[i]));
            }

            foreach (ACOCity c in _Graph.GetCities())
            {
                city.Connect(c, new ACODistance(1, 0.5));
            }
            _Graph.AddCity(city);

            Node node = new Node(city);

            node.Width    = _nodeSize;
            node.Height   = _nodeSize;
            node.Location = _OldNodes[_Nodes.Count].Location;
            _Nodes.Add(node);
            this.Controls.Add(node);

            this.Refresh();
        }