Ejemplo n.º 1
0
    def testMSTremove(self):
        curstate1 = State({'f1': 0}, {'i1:': 0})
        desState1 = State({'f1': 100}, {'i1:': 100})
        curState2 = State({'f1': 0}, {'i1:': 0})
        desState2 = State({'f1': 0}, {'i1:': 0})
        move1 = Move({"f1": 1}, {'i1:': 0}, [], .5, None)
        move2 = Move({"f1": 2}, {'i1:': 0}, [], .5, None)
        move0 = Move({"f1": 0}, {'i1:': 0}, [], 0, None)
        moves = [move1, move2, move0]
        test_mst1 = MST(curstate1, desState1, moves, 2)
        print(len(test_mst1.getMoves()))
        G = test_mst1.graph
        edges = [
            G[test_mst1.currentState][childNode]['object']
            for childNode in test_mst1.graph.neighbors(test_mst1.currentState)
        ]

        self.assertTrue(move0 in edges)
        self.assertTrue(test_mst1.containsMove(move0))

        test_mst1.removeMove(move0)
        G1 = test_mst1.graph
        # edges = G1.edges()
        # edges = [G1[node1][node2]['object'] for (node1, node2) in edges]
        edges = [
            G1[test_mst1.currentState][childNode]['object']
            for childNode in test_mst1.graph.neighbors(test_mst1.currentState)
        ]

        self.assertFalse(move0 in edges)
        self.assertFalse(test_mst1.containsMove(move0))
Ejemplo n.º 2
0
    def makeDecision(self):
        previousEvents = [
            event for event in self.memory
            if event.timeTick == self.timeTicks - 1
        ]
        for event in previousEvents:
            event.success = self.howSuccessfulWasMove(event)
            if self.howSuccessfulWasMove(event) < 0:
                self.successfulMoves.append(event)
        self.successfulMoves = sorted(self.successfulMoves,
                                      key=lambda event: event.success)

        # check if resources are critically low in the current state
        for resource in self.currentState.resources:
            if self.currentState.resources[
                    resource] < self.criticalState.resources[resource]:
                self.trigger(resource, self.criticalState.resources[resource])

        orderedMoves = self.orientation()

        for move in orderedMoves:
            move.one_hot = risk_calculation.resource_encoding(
                move.resourcesCategories)

        cutResources = self.cutByResources(orderedMoves)

        risk_calculation.assign_probabilities(orderedMoves)
        risk_calculation.calculate_risks(self.end_io_state, orderedMoves)

        mst = MST(self.currentState, self.desiredState, cutResources,
                  self.maxTime)
        mst = self.pH(mst)
        moves = mst.getMoves()

        for result in moves:
            event = Event(self.currentState, self.desiredState, result, None)
            event.timeTick = self.timeTicks
            self.memory.append(event)

        self.timeTicks += 1
        return moves