def initiate(self, planes, bases, region_size, max_plane_battery,
              intruder_exposed_time, plane_sight, max_semo_intruder,
              target_move):
     self.bases = deepcopy(bases)
     self.region_size = region_size
     self.max_plane_battery = max_plane_battery
     self.intruder_exposed_time = intruder_exposed_time
     self.plane_sight = plane_sight
     self.max_semo_intruder = max_semo_intruder
     self.target_move = target_move
     self.partner_preference = PartnerPreference(bases[0], plane_sight,
                                                 self.max_D, region_size)
     self.prob_grid = ProbabilityGrid(region_size,
                                      [plane.position for plane in planes],
                                      plane_sight, None)
Esempio n. 2
0
    def __init__(self, server, prior):
        self._server = server
        self._serverConstants = server.listConstants()

        size = self._serverConstants.getInt('worldsize')
        truePositive = self._serverConstants.getFloat('truepositive')
        trueNegative = self._serverConstants.getFloat('truenegative')

        self.grid = ProbabilityGrid(size, size, prior, truePositive,
                                    trueNegative)
        self.agents = []

        self.agents.append(BlindAgent())
        #self.agents.append(DumbAgent())
        #self.agents.append(DumbAgent())
        # self.agents.append(DumbAgent())

        while True:
            self._takeAction()
Esempio n. 3
0
class BlindAgency:
    def __init__(self, server, prior):
        self._server = server
        self._serverConstants = server.listConstants()

        size = self._serverConstants.getInt('worldsize')
        truePositive = self._serverConstants.getFloat('truepositive')
        trueNegative = self._serverConstants.getFloat('truenegative')

        self.grid = ProbabilityGrid(size, size, prior, truePositive,
                                    trueNegative)
        self.agents = []

        self.agents.append(BlindAgent())
        #self.agents.append(DumbAgent())
        #self.agents.append(DumbAgent())
        # self.agents.append(DumbAgent())

        while True:
            self._takeAction()

    def _takeAction(self):
        tankData = self._server.listFriendlyTanks()

        for i in range(len(self.agents)):
            data = self._server.getSurroundings(i)
            if data != None:
                self.grid.batchUpdate(data.getTopLeftCorner().x,
                                      data.getTopLeftCorner().y,
                                      data.getGrid())

            action = self.agents[i].getAction(tankData[i],
                                              GridWrapper(self.grid))

            if action is not None:
                if 'speed' in action:
                    self._server.setVelocity(i, action['speed'])
                if 'angle' in action:
                    self._server.setTurnRate(i, action['angle'])
                if 'shoot' in action:
                    self._server.shoot(i)
Esempio n. 4
0
class BlindAgency:

	def __init__(self, server, prior):
		self._server = server
		self._serverConstants = server.listConstants()

		size = self._serverConstants.getInt('worldsize')
		truePositive = self._serverConstants.getFloat('truepositive')
		trueNegative = self._serverConstants.getFloat('truenegative')

		self.grid = ProbabilityGrid(size, size, prior, truePositive, trueNegative)
		self.agents = []

		self.agents.append(BlindAgent())
		#self.agents.append(DumbAgent())
		#self.agents.append(DumbAgent())
		# self.agents.append(DumbAgent())

		while True:
			self._takeAction()

	def _takeAction(self):
		tankData = self._server.listFriendlyTanks()

		for i in range(len(self.agents)):
			data = self._server.getSurroundings(i)
			if data != None:
				self.grid.batchUpdate(data.getTopLeftCorner().x, data.getTopLeftCorner().y, data.getGrid())
			
			action = self.agents[i].getAction(tankData[i], GridWrapper(self.grid))

			if action is not None:
				if 'speed' in action:
					self._server.setVelocity(i, action['speed'])
				if 'angle' in action:
					self._server.setTurnRate(i, action['angle'])
				if 'shoot' in action:
					self._server.shoot(i)
Esempio n. 5
0
	def __init__(self, server, prior):
		self._server = server
		self._serverConstants = server.listConstants()

		size = self._serverConstants.getInt('worldsize')
		truePositive = self._serverConstants.getFloat('truepositive')
		trueNegative = self._serverConstants.getFloat('truenegative')

		self.grid = ProbabilityGrid(size, size, prior, truePositive, trueNegative)
		self.agents = []

		self.agents.append(BlindAgent())
		#self.agents.append(DumbAgent())
		#self.agents.append(DumbAgent())
		# self.agents.append(DumbAgent())

		while True:
			self._takeAction()
class QuantumUCTControl(OperateInterface):
    '''this is the quantum UCT algo'''

    #self.partner_preference = PartnerPreference(base, plane_sight, D_max, region_size)

    def __init__(self,
                 CP=0.5,
                 max_trajectory=200,
                 max_depth=8,
                 reward_gather=2,
                 reward_find=0.5,
                 reward_endangerous=-0.1,
                 reward_lost_plane=-1,
                 reward_intruder_life_plus=-0.1,
                 show_info=False,
                 gama=0.9):
        self.CP = CP  #CP is used to adjust the priority of explore
        self.max_T = max_trajectory
        self.max_D = max_depth
        self.reward_gather = reward_gather
        self.reward_find = reward_find
        self.reward_endangerous = reward_endangerous
        self.reward_lost_plane = reward_lost_plane
        self.show_info = show_info
        self.reward_intruder_life_plus = reward_intruder_life_plus
        self.gama = gama
        return super(QuantumUCTControl, self).__init__()

    def initiate(self, planes, bases, region_size, max_plane_battery,
                 intruder_exposed_time, plane_sight, max_semo_intruder,
                 target_move):
        self.bases = deepcopy(bases)
        self.region_size = region_size
        self.max_plane_battery = max_plane_battery
        self.intruder_exposed_time = intruder_exposed_time
        self.plane_sight = plane_sight
        self.max_semo_intruder = max_semo_intruder
        self.target_move = target_move
        self.partner_preference = PartnerPreference(bases[0], plane_sight,
                                                    self.max_D, region_size)
        self.prob_grid = ProbabilityGrid(region_size,
                                         [plane.position for plane in planes],
                                         plane_sight, None)

    def decide(self, plane, planes, bases, found_intruders_position):
        if planes.index(plane) == 0:
            if found_intruders_position:
                self.prob_grid.update_pdf_to_spercific_position(
                    found_intruders_position[0])
            else:
                self.prob_grid.update_pdf_with_no_intruder(
                    [one_plane.position for one_plane in planes])
        if self.show_info:
            print "Real distribution."
            display_region(self.prob_grid.pdg)
            pass
        qt_simulator = QuantumSimulator(
            self.prob_grid, self.partner_preference, self.region_size,
            plane.num, planes, bases[0], self.max_T, self.max_D, self.gama,
            self.reward_find, self.reward_endangerous, self.max_plane_battery,
            self.plane_sight, self.CP, self.show_info,
            found_intruders_position)
        CMD = qt_simulator.UCTPlan()
        return CMD