Exemple #1
0
    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.)