[ ]:
import geopandas as gpd
blocks = gpd.read_parquet('./../data/blocks.parquet')
columns = [c for c in blocks.columns if 'capacity_' in c]
blocks = blocks[['geometry', 'population', 'site_area', *columns]].copy()
blocks.head(3)
[ ]:
import pandas as pd
accessibility_matrix = pd.read_pickle('./../data/accessibility_matrix.pickle')
accessibility_matrix.head()
Simulated annealing
[ ]:
from blocksnet.enums import LandUse
blocks_lus = {
# 1 : LandUse.INDUSTRIAL,
# 2 : LandUse.RECREATION,
1536 : LandUse.RESIDENTIAL
}
service_types = {
"kindergarten": 0.2,
"school": 0.2,
"pharmacy": 0.2,
"polyclinic": 0.3,
"convenience": 0.2,
"cafe": 0.15,
"playground": 0.2,
"post": 0.1,
"hairdresser": 0.1
}
[ ]:
from blocksnet.optimization.services import ServicesOptimizer
so = ServicesOptimizer(blocks[['site_area', 'population']], accessibility_matrix)
for service_type, weight in service_types.items():
so.add_service_type(service_type, weight, blocks.rename(columns={f'capacity_{service_type}': 'capacity'})[['capacity']])
so.service_types
[ ]:
variables_df, objective_value = so.run(blocks_lus, iterations=1000)
[ ]:
variables_df