예제 #1
0
 public void LoadAllTSP()
 {
     var tspLib = new TspLib95(RootDir);
     tspLib.LoadAllTSP();
     var items = tspLib.TSPItems();
     Assert.AreEqual(Enumerable.Count(items), 112);
 }
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="tspLibPath">The directory path to the TSPLIB95 library.</param>
        /// <exception cref="ArgumentOutOfRangeException">Thrown if no TspLib95Items were loaded.</exception>
        public SymmetricTspItemLoader(string tspLibPath)
        {
            try
              {
            var tspLib = new TspLib95(tspLibPath);
            var items = tspLib.LoadAllTSP();

            const int maxNodes = 100;
            var nodeType = typeof(Node2D);

            _tspLibItems = (from i in items
                        let nodes = i.Problem.NodeProvider.GetNodes()
                        where nodes.Count <= maxNodes
                        where nodes.All(n => n.GetType() == nodeType)
                        select i).ToList();

            ProblemNames = _tspLibItems.Select(i => i.Problem.Name).ToList();
              }
              catch (Exception e)
              {
            throw new ArgumentOutOfRangeException($"No TspLib95Items were loaded for path: '{tspLibPath}'", e);
              }
        }
예제 #3
0
 public void GetItemByInvalidName()
 {
     var tspLib = new TspLib95(RootDir);
     tspLib.LoadAllTSP();
     Assert.IsNull(tspLib.GetItemByName("bob", ProblemType.TSP));
     Assert.IsNull(tspLib.GetItemByName("", ProblemType.TSP));
     Assert.IsNull(tspLib.GetItemByName(" ", ProblemType.TSP));
 }