def setUp(self):
        # Radar & States generation
        self.setUp_radar_states()
        # Filter definition
        ## Classical models
        self.radar_filter_ca = MultiplePeriodRadarsFilterCA(dim_x=9,
                                                            dim_z=3,
                                                            q=100.,
                                                            radars=self.radars)
        self.radar_filter_cv = MultiplePeriodRadarsFilterCV(dim_x=9,
                                                            dim_z=3,
                                                            q=100.,
                                                            radars=self.radars)
        self.radar_filter_ct = MultiplePeriodRadarsFilterCT(dim_x=9,
                                                            dim_z=3,
                                                            q=100.,
                                                            radars=self.radars)
        ## IMM with ca, cv and ct models
        filters = [
            self.radar_filter_cv, self.radar_filter_ca, self.radar_filter_ct
        ]
        mu = [0.33, 0.33, 0.33]
        trans = np.array([[0.998, 0.001, 0.001], [0.050, 0.900, 0.050],
                          [0.001, 0.001, 0.998]])
        self.radar_filter = RadarIMM(filters=filters, mu=mu, M=trans)

        # Benchmark definition
        self.benchmark = Benchmark(radars=self.radars,
                                   radar_filter=self.radar_filter,
                                   states=self.states)
Ejemplo n.º 2
0
def generate_filters(radar_type):
    global ca_dict, cv_dict, ct_dict, ta_dict, filter, filters, radars, x0, y0, z0
    filter_dicts = [cv_dict, ca_dict, ct_dict, ta_dict]
    current_filters = []
    for filter_dict in filter_dicts:
        if filter_dict["is_chosen"]:
            current_filters.append(filter_dict)
    # Filter instanciation
    for filter_dict in current_filters:
        detector = None
        if not (filter_dict["detector"] == "None"):
            detector_type = globals()[filter_dict["detector"] + "Detector"]
            detector = detector_type()
        q = float(filter_dict["q"])
        if radar_type == "Radar" and len(radars) == 1:
            filter_class = filter_dict["name"]
        elif radar_type == "Radar" and len(radars) == 2:
            filter_class = filter_dict["mname"]
        elif radar_type == "PeriodRadar" and len(radars) == 2:
            filter_class = filter_dict["mpname"]
        current_filter = filter_class(radars=radars,
                                      q=q,
                                      detector=detector,
                                      x0=x0,
                                      y0=y0,
                                      z0=z0)
        filters.append(current_filter)

    # IMM Generation
    if len(filters) == 1:
        filter = filters[0]
    if len(filters) == 2:
        mu = [0.5, 0.5]
        trans = np.array([[0.998, 0.02], [0.100, 0.900]])
        filter = RadarIMM(filters, mu, trans)
    if len(filters) == 3:
        mu = [0.33, 0.33, 0.33]
        trans = np.array([[0.998, 0.001, 0.001], [0.050, 0.900, 0.050],
                          [0.001, 0.001, 0.998]])
        filter = RadarIMM(filters, mu, trans)
    if len(filters) == 4:
        mu = [0.25, 0.25, 0.25, 0.25]
        trans = np.array([[0.997, 0.001, 0.001, 0.001],
                          [0.050, 0.850, 0.050, 0.050],
                          [0.001, 0.001, 0.997, 0.001],
                          [0.001, 0.001, 0.001, 0.997]])
        filter = RadarIMM(filters, mu, trans)
    def setUp(self):
        # Radar & States generation
        self.setUp_radar_states()
        # Filter definition
        ## Classical models
        self.radar_filter_ca = RadarFilterCA(dim_x = 9, dim_z = 3, q = 100., radar = self.radar)
        self.radar_filter_cv = RadarFilterCV(dim_x = 9, dim_z = 3, q = 100., radar = self.radar)
        ## IMM with ca, cv and ct models
        filters = [self.radar_filter_cv, self.radar_filter_ca]
        mu = [0.5, 0.5]
        trans = np.array([[0.999, 0.001],
                          [0.001, 0.999]])
        self.radar_filter = RadarIMM(filters = filters, mu = mu, M = trans)

        # Benchmark definition
        self.benchmark = Benchmark(radars = self.radar, radar_filter = self.radar_filter, states = self.states)
Ejemplo n.º 4
0
                                                   detector=detector,
                                                   radars=pradars,
                                                   x0=x0,
                                                   y0=y0,
                                                   z0=z0)
    radar_filter_ct = MultiplePeriodRadarsFilterCT(q=350.,
                                                   detector=detector,
                                                   radars=pradars,
                                                   x0=x0,
                                                   y0=y0,
                                                   z0=z0)
    filters = [radar_filter_cv, radar_filter_ca, radar_filter_ct]
    mu = [0.33, 0.33, 0.33]
    trans = np.array([[0.998, 0.001, 0.001], [0.050, 0.900, 0.050],
                      [0.001, 0.001, 0.998]])
    imm = RadarIMM(filters, mu, trans)

    # =============================== Attackers ================================
    ## No attacker
    # attacker = None

    ## Attackers for 2 Period Radars
    # attacker = DriftPeriodAttacker(filter = imm, t0 = 500, time = 300,
    #                                attack_drift = np.array([[100,100,100]]).T,
    #                                radar = pradar2, radar_pos = 1)

    attacker = CumulativeDriftPeriodAttacker(filter=imm,
                                             t0=300,
                                             time=2000,
                                             delta_drift=np.array([[0, 0,
                                                                    1]]).T,