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 ###################################################################################################
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