|
import enum |
|
import datetime |
|
|
|
class ArchStyles(enum.Enum): |
|
New_York = 1 |
|
Human_Centered_AI = 2 |
|
Customized = 3 |
|
class ParcelType(enum.Enum): |
|
O = 0 |
|
A = 1 |
|
B = 2 |
|
C = 3 |
|
U = 4 |
|
|
|
|
|
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) |
|
|
|
|
|
VALID_POINT_DISTANCE = 10 |
|
ROAD_SIZE_MAX = 3 |
|
ROAD_SIZE_MIN = 1 |
|
ROAD_STEP = 2 |
|
|
|
ACCESS_RATIO = 0.6 |
|
|
|
AXIS_MIN_AREA = 1000 |
|
|
|
FACILITY_SAFE_DIST = 2 |
|
TREE_SAFE_DIST = 1 |
|
|
|
|
|
A_ACCESS_SPLIT_WEIGHT = 1 |
|
A_AREA_SPLIT_WEIGHT = 1 |
|
A_FIXED_FACILITIES_WEIGHT = 1 |
|
A_CARBON_WEIGHT = 1 |
|
|
|
|
|
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 |
|
|
|
|
|
P_FF_WEIGHT = 2 |
|
P_AREA_WEIGHT = 2 |
|
P_TREE_WEIGHT = 1 |
|
|
|
|
|
BUILDING_ADDR = ['inputs/rectangle_6-15.bmp','inputs/rectangle_6-15.bmp','inputs/rectangle_6-15.bmp','inputs/white.bmp'] |
|
BUILDING_BORDER_GAP = 10 |
|
|
|
|
|
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] |
|
|
|
|
|
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)) |