def boundary_slow(self): """ This is the brute force version Returns: attract repel vector """ returnA = np.empty([len(self.maze_path), 2]) R1 = 2.0 * self.R0_B for i in range(0, len(self.maze_path)): fi = np.array([0., 0.]) pi = np.array(self.maze_path[i]) for j in range(0, len(self.boundary_seg) - 1): j_pt = self.boundary_seg[j] jp1_pt = self.boundary_seg[j + 1] pi2xij, xij = TSPopt.distABtoP(j_pt, jp1_pt, pi) self.minDist = min(self.minDist, pi2xij) if pi2xij < R1: fij = (pi - xij) / max(0.00001, pi2xij) fij *= _repulse(self.R0_B / pi2xij) * self.Fo fi += fij returnA[i] = fi return returnA
def runTest(self): d1, (x, y) = TSPopt.distABtoP(self.segList1[0], self.segList1[1], self.segList1[2]) self.assertEqual(d1, 1) self.assertEqual(x, 0.) self.assertEqual(y, 2.) d2, (x, y) = TSPopt.distABtoP(self.segList1[0], self.segList1[1], self.segList1[3]) self.assertEqual(d2, 2) self.assertEqual(x, 0.) self.assertEqual(y, 2.) d3, (x, y) = TSPopt.distABtoP(self.segList1[0], self.segList1[1], (1., 1.)) self.assertEqual(d3, 1) self.assertEqual(x, 0.) self.assertEqual(y, 1.) d4, (x, y) = TSPopt.distABtoP(self.segList1[0], self.segList1[2], (1., 1.)) self.assertEqual(d4, 1) self.assertEqual(x, 0.) self.assertEqual(y, 1.) d5, (x, y) = TSPopt.distABtoP(self.segList1[0], self.segList1[2], (-5., 2.)) self.assertEqual(d5, 5) self.assertEqual(x, 0.) self.assertEqual(y, 2.) d6, (x, y) = TSPopt.distABtoP(self.segList1[0], self.segList1[2], (4., 6.)) self.assertEqual(d6, 5) self.assertEqual(x, 0.) self.assertEqual(y, 3.)