Пример #1
0
    def __init__(self, environment):
        """

        :param environment:
        :type environment: core.environment.Environment
        """
        self.env = environment
        locs = np.random.rand(self.env.segment_count, 2) * self.env.grid_height
        self.segments = [segment.Segment(nd) for nd in locs]

        for i, seg in enumerate(self.segments):
            seg.segment_id = i

        self.clusters = []
Пример #2
0
    def __init__(self, environment):
        """

        :param environment:
        :type environment: core.environment.Environment
        """

        self.env = environment
        locs = np.random.rand(self.env.segment_count, 2) * self.env.grid_height
        self.segments = [segment.Segment(nd) for nd in locs]
        self._center = linalg.centroid(locs)

        # Create the centroid cluster
        self.centroid = ToCSCentroid(self.env)

        self.clusters = list()  # type: typing.List[ToCSCluster]

        self._length_threshold = 0.5
Пример #3
0
    def __init__(self, environment):
        """

        :param environment:
        :type environment: core.environment.Environment
        """

        self.env = environment

        locs = np.random.rand(self.env.segment_count, 2) * self.env.grid_height
        self.segments = [segment.Segment(loc) for loc in locs]

        self.grid = grid.Grid(self.segments, self.env)
        self.cells = list(self.grid.cells())

        segment_centroid = np.mean(locs, axis=0)
        logger.debug("Centroid located at %s", segment_centroid)
        self.damaged = self.grid.closest_cell(segment_centroid)

        self.energy_model = LOAFEnergyModel(self, self.env)

        self.virtual_clusters = list()  # type: List[LoafVirtualCluster]
        self.clusters = list()  # type: List[LoafCluster]

        # Create a virtual cell to represent the center of the damaged area
        virtual_center_cell = self.damaged

        self.virtual_hub = LoafVirtualHub(self.env)
        self.virtual_hub.add(virtual_center_cell)
        self.virtual_hub.cluster_id = self.env.mdc_count - 1

        self.hub = LoafHub(self.env)
        self.hub.add(virtual_center_cell)
        self.hub.cluster_id = self.env.mdc_count - 1

        self.em_is_large = False
        self.ec_is_large = False
Пример #4
0
def test_segments_have_unique_ids():
    segments = [segment.Segment([0, 0]) for _ in range(10)]
    segment_ids_list = [s.segment_id for s in segments]
    segments_ids_set = set(segment_ids_list)
    assert len(segment_ids_list) == len(segments_ids_set)
Пример #5
0
def test_segments_have_arbitrary_cluster_ids():
    seg = segment.Segment(np.array([0, 0]))
    seg.cluster_id = 88
    assert seg.cluster_id == 88
Пример #6
0
def test_segments_can_be_used_for_drawing_lines():
    segment_1 = segment.Segment(np.array([0, -1]))
    segment_2 = segment.Segment(np.array([0, 1]))
    assert segment_1.location.distance(segment_2.location) == 2
Пример #7
0
    def __init__(self, environment):
        """

        :param environment:
        :type environment: core.environment.Environment
        """

        ### Debugs for paper ####
        S0 = np.array([9.0,13.0])
        S1 = np.array([4.0,12.0])
        S2 = np.array([2.0,9.0])
        S3 = np.array([7.0,9.0])
        S4 = np.array([12.0,9.0])
        S5 = np.array([17.0,9.0])
        S6 = np.array([17.0,4.0])
        S7 = np.array([14.0,0.0])
        S8 = np.array([11.0,4.0])
        S9 = np.array([5.0,0.0])
        S10 = np.array([5.0,6.0])
        S11 = np.array([0.0,4.0])

        # Data Volume Table
        S0_DataVol = np.array([0, 34])
        S1_DataVol = np.array([1,31])
        S2_DataVol = np.array([2,29])
        S3_DataVol = np.array([3,50])
        S4_DataVol = np.array([4,17])
        S5_DataVol = np.array([5,13])
        S6_DataVol = np.array([6,1])
        S7_DataVol = np.array([7,2])
        S8_DataVol = np.array([8,7])
        S9_DataVol = np.array([9,1])
        S10_DataVol = np.array([10,22])
        S11_DataVol = np.array([11,1])

        # List of initial clusters and data volumes
        self.dataVol = list()
        self.dataVol.append(S0_DataVol)
        self.dataVol.append(S1_DataVol)
        self.dataVol.append(S2_DataVol)
        self.dataVol.append(S3_DataVol)
        self.dataVol.append(S4_DataVol)
        self.dataVol.append(S5_DataVol)
        self.dataVol.append(S6_DataVol)
        self.dataVol.append(S7_DataVol)
        self.dataVol.append(S8_DataVol)
        self.dataVol.append(S9_DataVol)
        self.dataVol.append(S10_DataVol)
        self.dataVol.append(S11_DataVol)

        
        self.env = environment

        #locs = np.random.rand(self.env.segment_count, 2) * self.env.grid_height
        locs = list()

        locs.append(S0)
        locs.append(S1)
        locs.append(S2)
        locs.append(S3)
        locs.append(S4)
        locs.append(S5)
        locs.append(S6)
        locs.append(S7)
        locs.append(S8)
        locs.append(S9)
        locs.append(S10)
        locs.append(S11)

        locs = np.array(locs)
        
        # For the node within 
        self.segments = [segment.Segment(loc) for loc in locs]

        self.grid = grid.Grid(self.segments, self.env)
        self.cells = list(self.grid.cells())

#        segment_centroid = np.mean(locs, axis=0)

        # setting to S3 for testing
        segment_centroid = np.array(S3)
        logger.debug("Centroid located at %s", segment_centroid)
        self.damaged = self.grid.closest_cell(segment_centroid)

        self.energy_model = LOAFEnergyModel(self, self.env)

        self.virtual_clusters = list()  # type: List[LoafVirtualCluster]
        self.clusters = list()  # type: List[LoafCluster]

        # Create a virtual cell to represent the center of the damaged area
        virtual_center_cell = self.damaged

        self.virtual_hub = LoafVirtualHub(self.env)
        self.virtual_hub.add(virtual_center_cell)
        self.virtual_hub.cluster_id = self.env.mdc_count - 1

        self.hub = LoafHub(self.env)
        self.hub.add(virtual_center_cell)
        self.hub.cluster_id = self.env.mdc_count - 1

        self.em_is_large = False
        self.ec_is_large = False