public void OptimizeTurns_ShouldTakeIntoAccountFixedTurns() { var weights = new float[][] { new float[] { 0, 1, 2, 3, 4, 5, 6 }, new float[] { 6, 0, 1, 2, 3, 4, 5 }, new float[] { 5, 6, 0, 1, 2, 3, 4 }, new float[] { 4, 5, 6, 0, 1, 2, 3 }, new float[] { 3, 4, 5, 6, 0, 1, 2 }, new float[] { 2, 3, 4, 5, 6, 0, 1 }, new float[] { 1, 2, 3, 4, 5, 6, 0 } }; var turns = DirectedSequenceRouter.CalculateOptimimal(weights, 10, null); }
public void OptimizeTurns_ShouldUseTurnsWhenItsCheaper() { var weights = new [] { new float[] { 0, 1, 100, 2, 1, 1, 1, 1 }, new float[] { 1, 0, 2, 100, 1, 1, 1, 1 }, new float[] { 1, 1, 0, 1, 1, 200, 1, 1 }, new float[] { 1, 1, 1, 0, 200, 1, 1, 1 }, new float[] { 1, 1, 1, 1, 0, 1, 1, 2 }, new float[] { 1, 1, 1, 1, 1, 0, 2, 1 }, new float[] { 1, 1, 1, 1, 1, 1, 0, 1 }, new float[] { 1, 1, 1, 1, 1, 1, 1, 0 } }; var turns = DirectedSequenceRouter.CalculateOptimimal(weights, 10, null); Assert.IsNotNull(turns); Assert.AreEqual(new[] { 0, 7, 11, 15 }, turns); }
public void OptimizeTurns_ShouldLeaveOutBrokenConnections() { var weights = new [] { new float[] { 0, 1, float.MaxValue, float.MaxValue, 1, 1, 1, 1 }, new float[] { 1, 0, float.MaxValue, float.MaxValue, 1, 1, 1, 1 }, new float[] { 1, 1, 0, 1, 1, 2, 1, 1 }, new float[] { 1, 1, 1, 0, 2, 1, 1, 1 }, new float[] { 1, 1, 1, 1, 0, 1, 1, 2 }, new float[] { 1, 1, 1, 1, 1, 0, 2, 1 }, new float[] { 1, 1, 1, 1, 1, 1, 0, 1 }, new float[] { 1, 1, 1, 1, 1, 1, 1, 0 } }; var turns = DirectedSequenceRouter.CalculateOptimimal(weights, 10, null); Assert.IsNotNull(turns); Assert.AreEqual(new[] { 0, 8, 12 }, turns); }
public void OptimizeTurns_ShouldPreferNonTurns() { var weights = new [] { new float[] { 0, 1, 1, 2, 1, 1, 1, 1 }, new float[] { 1, 0, 2, 1, 1, 1, 1, 1 }, new float[] { 1, 1, 0, 1, 1, 2, 1, 1 }, new float[] { 1, 1, 1, 0, 2, 1, 1, 1 }, new float[] { 1, 1, 1, 1, 0, 1, 1, 2 }, new float[] { 1, 1, 1, 1, 1, 0, 2, 1 }, new float[] { 1, 1, 1, 1, 1, 1, 0, 1 }, new float[] { 1, 1, 1, 1, 1, 1, 1, 0 } }; var turns = DirectedSequenceRouter.CalculateOptimimal(weights, 10, null); Assert.IsNotNull(turns); Assert.AreEqual(new[] { 0, 4, 8, 12 }, turns); }