def run_ALCM(niter): nhhs = 100 ngcs = 10 ngcs_attr = ngcs/2 ngcs_noattr = ngcs - ngcs_attr hh_grid_ids = array(nhhs*[-1]) storage = StorageFactory().get_storage('dict_storage') households_table_name = 'households' storage.write_table( table_name = households_table_name, table_data = { 'household_id': arange(nhhs)+1, 'grid_id': hh_grid_ids } ) gridcells_table_name = 'gridcells' storage.write_table( table_name = gridcells_table_name, table_data = { 'grid_id': arange(ngcs)+1, 'cost':array(ngcs_attr*[100]+ngcs_noattr*[1000]) } ) households = HouseholdDataset(in_storage=storage, in_table_name=households_table_name) gridcells = GridcellDataset(in_storage=storage, in_table_name=gridcells_table_name) # create coefficients and specification coefficients = Coefficients(names=('costcoef', ), values=(-0.001,)) specification = EquationSpecification(variables=('gridcell.cost', ), coefficients=('costcoef', )) logger.be_quiet() result = zeros((niter,ngcs)) for iter in range(niter): hlcm = HouseholdLocationChoiceModelCreator().get_model(location_set=gridcells, compute_capacity_flag=False, choices = 'opus_core.random_choices_from_index', sampler=None, #sample_size_locations = 30 ) hlcm.run(specification, coefficients, agent_set=households, debuglevel=1, chunk_specification={'nchunks':1}) # get results gridcells.compute_variables(['urbansim.gridcell.number_of_households'], resources=Resources({'household':households})) result_more_attractive = gridcells.get_attribute_by_id('number_of_households', arange(ngcs_attr)+1) result_less_attractive = gridcells.get_attribute_by_id('number_of_households', arange(ngcs_attr+1, ngcs+1)) households.set_values_of_one_attribute(attribute='grid_id', values=hh_grid_ids) gridcells.delete_one_attribute('number_of_households') result[iter,:] = concatenate((result_more_attractive, result_less_attractive)) #print result #, result_more_attractive.sum(), result_less_attractive.sum() return result
results = hlcm.run(specification, coef, agents) hlcm.upc_sequence.plot_choice_histograms( capacity=locations.get_attribute("vacant_units")) hlcm.upc_sequence.show_plots() hlcm2 = HouseholdLocationChoiceModelCreator().get_model( location_set=locations, sampler=None, utilities="opus_core.linear_utilities", probabilities="opus_core.mnl_probabilities", choices="urbansim.lottery_choices", compute_capacity_flag=True, run_config=Resources({"capacity_string": "gridcell.vacant_units"})) agents.set_values_of_one_attribute("location", -1 * ones(agents.size())) agents.get_attribute("location") results = hlcm2.run(specification, coefficients, agents) agents.get_attribute("location") hlcm2.upc_sequence.plot_choice_histograms( capacity=locations.get_attribute("vacant_units")) hlcm2.upc_sequence.show_plots() coef, results = hlcm2.estimate(specification, agents) #HLCM on PSRC # households from PSRC agents_psrc = HouseholdDataset(in_storage=StorageFactory().get_storage( 'flt_storage', storage_location="/home/hana/bandera/urbansim/data/GPSRC"), in_table_name="hh") agents_psrc.summary()
def run_ALCM(niter): nhhs = 100 ngcs = 10 ngcs_attr = ngcs / 2 ngcs_noattr = ngcs - ngcs_attr hh_grid_ids = array(nhhs * [-1]) storage = StorageFactory().get_storage('dict_storage') households_table_name = 'households' storage.write_table(table_name=households_table_name, table_data={ 'household_id': arange(nhhs) + 1, 'grid_id': hh_grid_ids }) gridcells_table_name = 'gridcells' storage.write_table(table_name=gridcells_table_name, table_data={ 'grid_id': arange(ngcs) + 1, 'cost': array(ngcs_attr * [100] + ngcs_noattr * [1000]) }) households = HouseholdDataset(in_storage=storage, in_table_name=households_table_name) gridcells = GridcellDataset(in_storage=storage, in_table_name=gridcells_table_name) # create coefficients and specification coefficients = Coefficients(names=('costcoef', ), values=(-0.001, )) specification = EquationSpecification(variables=('gridcell.cost', ), coefficients=('costcoef', )) logger.be_quiet() result = zeros((niter, ngcs)) for iter in range(niter): hlcm = HouseholdLocationChoiceModelCreator().get_model( location_set=gridcells, compute_capacity_flag=False, choices='opus_core.random_choices_from_index', sampler=None, #sample_size_locations = 30 ) hlcm.run(specification, coefficients, agent_set=households, debuglevel=1, chunk_specification={'nchunks': 1}) # get results gridcells.compute_variables(['urbansim.gridcell.number_of_households'], resources=Resources( {'household': households})) result_more_attractive = gridcells.get_attribute_by_id( 'number_of_households', arange(ngcs_attr) + 1) result_less_attractive = gridcells.get_attribute_by_id( 'number_of_households', arange(ngcs_attr + 1, ngcs + 1)) households.set_values_of_one_attribute(attribute='grid_id', values=hh_grid_ids) gridcells.delete_one_attribute('number_of_households') result[iter, :] = concatenate( (result_more_attractive, result_less_attractive)) #print result #, result_more_attractive.sum(), result_less_attractive.sum() return result
results = hlcm.run(specification, coef, agents) hlcm.upc_sequence.plot_choice_histograms( capacity=locations.get_attribute("vacant_units")) hlcm.upc_sequence.show_plots() hlcm2 = HouseholdLocationChoiceModelCreator().get_model( location_set = locations, sampler=None, utilities="opus_core.linear_utilities", probabilities="opus_core.mnl_probabilities", choices="urbansim.lottery_choices", compute_capacity_flag=True, run_config=Resources({"capacity_string":"gridcell.vacant_units"})) agents.set_values_of_one_attribute("location", -1*ones(agents.size())) agents.get_attribute("location") results = hlcm2.run(specification, coefficients, agents) agents.get_attribute("location") hlcm2.upc_sequence.plot_choice_histograms( capacity=locations.get_attribute("vacant_units")) hlcm2.upc_sequence.show_plots() coef, results = hlcm2.estimate(specification, agents) #HLCM on PSRC # households from PSRC agents_psrc = HouseholdDataset(in_storage = StorageFactory().get_storage('flt_storage', storage_location = "/home/hana/bandera/urbansim/data/GPSRC"), in_table_name = "hh") agents_psrc.summary()