Hard Constraint
unknown
python
a year ago
3.5 kB
9
Indexable
################# Decode function ################## def decode_schedate(chromosome): pass def convert_schedate_to_string(sche_date): pass def decode_number_of_battery(chromosome): pass def manday_chromosome(chromosome): # fitness function MANDAY = dict() HC_score = 0 # SC_score = 0 # violate_child = dict() for child in chromosome: # print(chromosome) # take bit and convert to component component = child.split( '-') # convert: H13807098-01/12/0001-09/03/0002-10110000110 to ['H13807098', '01/12/0001', '09/03/0002', '10110000110'] # take component supply_id = component[0] # id start_day = component[1] # start date end_day = component[2] # end date schedate_y_m_d_routine_type_numbat = component[3] # contain |10001|0100|01| 1 000 1010 ==|year|month|date evening, type, number of battery HC_SCORE = 0 BATDAY = dict() ###Decode Setup### battery_type = access_row_by_wonum(supply_id)['battery_type'] d_estdur = access_row_by_wonum(supply_id)['d_estdur'] device = access_row_by_wonum(supply_id)['device'] sched_date = decode_schedate(schedate_y_m_d_routine_type_numbat) date = convert_schedate_to_string(sched_date) #######################Hard Constraint 1####################### #Resource set R is Catesian product of B,D and T #Năng lưg cung cấp tại 1 thời điểm => định nghĩa năng lượng cung cấp BATDAY[(battery_type, date)] = BATDAY.get((battery_type, date), 0) + d_estdur #Tao dict voi key la tuple ( type va date ), + khoi tao = 0 va cong them d_estdur for (battery_type,date), demand in BATDAY.items(): # Start constraint total_capacity = get_resource_quang(battery_type,date,device) #Theo paper là có device, if total_capacity == -1: # gen date with date not in resouce HC_score += 1 elif total_capacity < demand: HC_score += 1 #######################Hard Constraint 1####################### #######################Hard Constraint 2####################### #1 Device => 1 Pin device_battery_mapping = dict() number_of_battery = decode_number_of_battery(schedate_y_m_d_routine_type_numbat) if device in device_battery_mapping: if device_battery_mapping[device] != battery_type HC_SCORE += 1 else: device_battery_mapping[device] = battery_type #######################Hard Constraint 2####################### #######################Hard Constraint 3####################### #1 Pin khong cung cap 2 thiet bi battery_device_mapping = dict() if battery_type in battery_device_mapping: if battery_device_mapping[battery_type] != device: HC_score += 1 else: battery_device_mapping[battery_type] = device #######################Hard Constraint 3####################### def cal_pop_fitness(pop): fitness = [] for chromosome in pop: HC = manday_chromosome(chromosome) fitness.append(1 / (10 * HC + 1)) fitness = np.array(fitness) return fitness def get_resource_quang(battery_type, date): resource_data = load_data(PATHS["resource"]) date_unique = np.unique(resource_data.date.to_list()).astype(list) if date not in date_unique: return -1 total_capacity = resource_data[ (resource_data["battery_type"] == battery_type) & (resource_data["date"] == date) ]["capacity_ah"].sum() #tong capacity return total_capacity
Editor is loading...
Leave a Comment