LandPartitioning / config.py
amirDev's picture
Upload 6 files
3cf288d
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))