Spaces:
Runtime error
Runtime error
| import enum | |
| import datetime | |
| # enum classes | |
| class ArchStyles(enum.Enum): | |
| New_York = 1 | |
| Human_Centered_AI = 2 | |
| Customized = 3 | |
| class ParcelType(enum.Enum): | |
| O = 0 # oversize | |
| A = 1 | |
| B = 2 | |
| C = 3 | |
| U = 4 # undersize | |
| # main run input args | |
| MAIN_MAP_ADDR = 'inputs/Sample_test120-70_total_map_fringe.bmp' | |
| MAIN_MAP_FILLED_BLOCK_MASK = 'inputs/Sample_test120-70_boundry_mask_fringe.bmp' | |
| MAIN_MAP_FILLED_F_F_MASK = 'inputs/Sample_test120-70_FiFa_mask_fringe.bmp' | |
| PARCELS_COUNT = 12 | |
| ARCH = ArchStyles.Human_Centered_AI | |
| ARCH_FIRST_INPUT = (44, 119) #(70, 120) #(Y,X) or None | |
| # Axis finding args | |
| VALID_POINT_DISTANCE = 10 | |
| ROAD_SIZE_MAX = 3 # can be: 1,3,5,7,... | |
| ROAD_SIZE_MIN = 1 # can be: 1,3,5,... | |
| ROAD_STEP = 2 # can be multiplication of 2 | |
| ACCESS_RATIO = 0.6 # 0.55 for newyork # 0.7 for star | |
| AXIS_MIN_AREA = 1000 # 12000 for newyork # 75000 for star | |
| FACILITY_SAFE_DIST = 2 | |
| TREE_SAFE_DIST = 1 | |
| # axis finder fitness weights | |
| A_ACCESS_SPLIT_WEIGHT = 1 | |
| A_AREA_SPLIT_WEIGHT = 1 | |
| A_FIXED_FACILITIES_WEIGHT = 1 | |
| A_CARBON_WEIGHT = 1 | |
| # Partitioning args | |
| PROCESSING_CORES = 8 | |
| P_GA_LOSS_THOLD = 0.3 | |
| TYPE_A_AREA = 700 | |
| TYPE_B_AREA = 500 | |
| TYPE_C_AREA = 400 | |
| TYPE_AREA_STEP = 100 | |
| # partiotioning fitness weights | |
| P_FF_WEIGHT = 2 | |
| P_AREA_WEIGHT = 2 | |
| P_TREE_WEIGHT = 1 | |
| # location finding args | |
| BUILDING_ADDR = ['inputs/rectangle_6-15.bmp','inputs/rectangle_6-15.bmp','inputs/rectangle_6-15.bmp','inputs/white.bmp'] | |
| BUILDING_BORDER_GAP = 10 | |
| # location finding fitness weights | |
| L_DIST_WEIGHT = 1 | |
| L_OUT_BORDER_WEIGHT = 2 | |
| L_CARBON_WEIGHT = 1 | |
| L_ON_ROAD_WEIGHT = 2 | |
| def building_sel(p_type:ParcelType): | |
| if p_type == ParcelType.O: return BUILDING_ADDR[0] | |
| if p_type == ParcelType.A: return BUILDING_ADDR[0] | |
| if p_type == ParcelType.B: return BUILDING_ADDR[1] | |
| if p_type == ParcelType.C: return BUILDING_ADDR[2] | |
| if p_type == ParcelType.U: return BUILDING_ADDR[3] | |
| # output args and loggers | |
| WRITE_UNNECESSARY = False | |
| WRITE_LOGS = True | |
| def log_axis_finding_settings(): | |
| log(f'====== Axis Finding inputs ======') | |
| log(f'PARCELS_COUNT : {PARCELS_COUNT}') | |
| log(f'ARCH : {ARCH}') | |
| log(f'ARCH_FIRST_INPUT : {ARCH_FIRST_INPUT}') | |
| log(f'VALID_POINT_DISTANCE : {VALID_POINT_DISTANCE}') | |
| log(f'ROAD_SIZE_MAX : {ROAD_SIZE_MAX}') | |
| log(f'ROAD_SIZE_MIN : {ROAD_SIZE_MIN}') | |
| log(f'ROAD_STEP : {ROAD_STEP}') | |
| log(f'ACCESS_RATIO : {ACCESS_RATIO}') | |
| log(f'AXIS_MIN_AREA : {AXIS_MIN_AREA}') | |
| log(f'FACILITY_SAFE_DIST : {FACILITY_SAFE_DIST}') | |
| log(f'TREE_SAFE_DIST : {TREE_SAFE_DIST}') | |
| log(f'A_ACCESS_SPLIT_WEIGHT : {A_ACCESS_SPLIT_WEIGHT}') | |
| log(f'A_AREA_SPLIT_WEIGHT : {A_AREA_SPLIT_WEIGHT}') | |
| log(f'A_FIXED_FACILITIES_WEIGHT : {A_FIXED_FACILITIES_WEIGHT}') | |
| log(f'A_CARBON_WEIGHT : {A_CARBON_WEIGHT}') | |
| def log_partitioning_settings(): | |
| log(f'====== Partitioning inputs ======') | |
| log(f'PARCELS_COUNT : {PARCELS_COUNT}') | |
| log(f'PROCESSING_CORES : {PROCESSING_CORES}') | |
| log(f'P_GA_LOSS_THOLD : {P_GA_LOSS_THOLD}') | |
| log(f'TYPE_A_AREA : {TYPE_A_AREA}') | |
| log(f'TYPE_B_AREA : {TYPE_B_AREA}') | |
| log(f'TYPE_C_AREA : {TYPE_C_AREA}') | |
| log(f'TYPE_AREA_STEP : {TYPE_AREA_STEP}') | |
| log(f'P_FF_WEIGHT : {P_FF_WEIGHT}') | |
| log(f'P_AREA_WEIGHT : {P_AREA_WEIGHT}') | |
| log(f'P_TREE_WEIGHT : {P_TREE_WEIGHT}') | |
| def log_location_finding_settings(): | |
| log(f'====== Location Finding inputs ======') | |
| log(f'PARCELS_COUNT : {PARCELS_COUNT}') | |
| log(f'BUILDING_ADDR : {BUILDING_ADDR}') | |
| log(f'BUILDING_BORDER_GAP : {BUILDING_BORDER_GAP}') | |
| log(f'TYPE_A_AREA : {TYPE_A_AREA}') | |
| log(f'TYPE_B_AREA : {TYPE_B_AREA}') | |
| log(f'TYPE_C_AREA : {TYPE_C_AREA}') | |
| log(f'TYPE_AREA_STEP : {TYPE_AREA_STEP}') | |
| log(f'L_DIST_WEIGHT : {L_DIST_WEIGHT}') | |
| log(f'L_OUT_BORDER_WEIGHT : {L_OUT_BORDER_WEIGHT}') | |
| log(f'L_CARBON_WEIGHT : {L_CARBON_WEIGHT}') | |
| log(f'L_ON_ROAD_WEIGHT : {L_ON_ROAD_WEIGHT}') | |
| def log(msg): | |
| if WRITE_LOGS: | |
| with open('./outputs/logs.txt', 'a') as f: | |
| f.writelines(f'{datetime.datetime.now()} : {str(msg)}\n') | |
| print(str(msg)) |