示例#1
0
def group_AssignSeat(airplane, df, group_list, offset_dict):
    success = 0

    # Filter from all groups to groups of this size
    group_df = find_members_in_group(df[df['group_size'] == len(group_list)],
                                     group_list)
    sort_on = ['number_of_flags', 'age']
    group_df = group_df.sort_values(by=sort_on, ascending=False)
    group_df = group_df.reset_index(drop=True)

    # iterate through each member in this group
    for row in group_df.index:
        # this_row = group_df[group_df.index == row]
        pID = group_df.loc[row, 'pID']
        this_psgr = Passenger(pID)

        age = group_df.loc[row, 'age']
        group = group_df.loc[row, 'group']
        has_travelled = group_df.loc[row, 'has_travelled']
        has_precon = group_df.loc[row, 'has_preexisting_condition']

        this_psgr.fill_questionare(age, group, has_travelled, has_precon)
        this_offset_detail = offset_selector(airplane, this_psgr, offset_dict)
        this_offset = this_offset_detail['offset']

        group_df.loc[row, 'offset_order'] = this_offset_detail['order']
        group_df.loc[row, 'offset_x'] = this_offset['x']
        group_df.loc[row, 'offset_y'] = this_offset['y']
        group_df.loc[row, 'offset_method'] = this_offset['method']

        #group passenger seating method
        # Allowed Group Passenger Seat_State = 'G'
        blocked_seat_list = SocialDistance(airplane,
                                           this_offset,
                                           occupied_state='G')
        SeatPassenger(airplane, blocked_seat_list, occupied_state='G')

        #if prev_assigned_seat is not None and success < len(group_list)-1:
        #    assert prev_assigned_seat != airplane.last_assigned_seat, "Unable to Seat"

        group_df.loc[row, 'seat'] = airplane.last_assigned_seat
        success += 1
        group_find_next_seat(airplane)
        airplane.update()

    assert success == len(group_list), "NOT ALL PASSENGERS IN GROUP SEATED"
    group_ToggleState(airplane, group_df)
    group_find_next_seat(airplane)

    return group_df


###################################################################################################
示例#2
0
def single_AssignSeat(airplane, df, offset_info):
    sort_on = ['number_of_flags', 'age']
    df = df.sort_values(by=sort_on, ascending=False)

    for row in df.index:
        pID = df.loc[row, 'pID']
        this_psgr = Passenger(pID)

        age = df.loc[row, 'age']
        group = []
        has_travelled = df.loc[row, 'has_travelled']
        has_precon = df.loc[row, 'has_preexisting_condition']

        this_psgr.fill_questionare(age, group, has_travelled, has_precon)

        condition_count = len(df[df['has_preexisting_condition'] == True])

        this_offset_detail = offset_selector(airplane,
                                             this_psgr,
                                             offset_info,
                                             limiter=condition_count)
        this_offset = this_offset_detail['offset']

        df.loc[row, 'offset_order'] = this_offset_detail['order']
        df.loc[row, 'offset_x'] = this_offset['x']
        df.loc[row, 'offset_y'] = this_offset['y']
        df.loc[row, 'offset_method'] = this_offset['method']

        blocked_seat_list = SocialDistance(airplane,
                                           this_offset,
                                           occupied_state='P')
        SeatPassenger(airplane, blocked_seat_list, occupied_state='P')

        # assert prev_assigned_seat != airplane.last_assigned_seat, "Unsuccessful Seating!"

        df.loc[row, 'seat'] = airplane.last_assigned_seat

        single_find_next_seat(airplane)
        airplane.update()

    return df