Пример #1
0
        public List <PosXYZ> Optimize(List <PosXYZ> pos)
        {
            if (pos.Count > 20)
            {
                var ped1pos = pos.FindAll(p => p.Name == "ped1");
                var ped2pos = pos.FindAll(p => p.Name == "ped2");

                var orderpos = new List <PosXYZ>();
                orderpos.AddRange(pos);
                orderpos.RemoveAll(p => p.Name.StartsWith("ped"));
                orderpos.Add(ped1pos.Last());
                orderpos.Add(ped2pos.Last());

                var trajDp = new DpTsp(new PosGraph(orderpos));
                trajDp.RunTsp();

                var order = trajDp.Order;

                pos.Clear();
                for (int i = 0; i < orderpos.Count; i++)
                {
                    if (orderpos[order[i] - 1].Name == "ped1")
                    {
                        pos.AddRange(ped1pos);
                    }
                    else if (orderpos[order[i] - 1].Name == "ped2")
                    {
                        pos.AddRange(ped2pos);
                    }
                    else
                    {
                        pos.Add(orderpos[order[i] - 1]);
                    }
                }
            }
            else
            {
                var orderpos = new List <PosXYZ>();
                orderpos.AddRange(pos);
                var trajDp = new DpTsp(new PosGraph(orderpos));
                trajDp.RunTsp();

                var order = trajDp.Order;

                pos.Clear();
                for (int i = 0; i < orderpos.Count; i++)
                {
                    pos.Add(orderpos[order[i] - 1]);
                }
            }

            return(pos);
        }
Пример #2
0
        public void TestMethod_GraphTest()
        {
            var fprj = FlatnessProject.Load(@".\Config2\P2\A147NoFinV10.fprj");


            var pos = fprj.ProductSettings.DownTestPositions;

            var ped1 = pos.FindAll(p => p.Name.StartsWith("ped1"));
            var ped2 = pos.FindAll(p => p.Name.StartsWith("ped2"));

            pos.RemoveAll(p => p.Name.StartsWith("ped1"));
            pos.RemoveAll(p => p.Name.StartsWith("ped2"));
            pos.RemoveAll(p => p.Name.StartsWith("down"));

            pos.Add(ped1.Last());
            pos.Add(ped2.Last());

            {
                var graph = new PosGraph(pos);
                Console.WriteLine(graph.ToString());
            }



            {
                Console.WriteLine("------------BackTsp----------------");
                Console.WriteLine(pos.Count);
                Console.WriteLine("----------------------------------");
                var tcp = new BackTsp(new PosGraph(pos));
                Console.WriteLine(tcp.RunTsp());
                Console.WriteLine("----------------------------------");
            }

            {
                Console.WriteLine("------------DpTsp----------------");
                Console.WriteLine(pos.Count);
                Console.WriteLine("----------------------------------");
                var tcp = new DpTsp(new PosGraph(pos));
                Console.WriteLine(tcp.RunTsp());
                Console.WriteLine("----------------------------------");
            }
        }