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 __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 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)
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