コード例 #1
0
ファイル: models.py プロジェクト: ual/DOE-repo-deliverable
def hlcm_simulate(households, buildings, aggregations, settings, low_income):

    fname = misc.config("hlcm.yaml")

    print "\nAffordable housing HLCM:\n"

    cfg = yaml.load(open(fname))
    cfg["choosers_predict_filters"] = "income <= %d" % low_income
    open(misc.config("hlcm_tmp.yaml"), "w").write(yaml.dump(cfg))

    # low income into affordable units
    utils.lcm_simulate("hlcm_tmp.yaml",
                       households,
                       buildings,
                       aggregations,
                       "building_id",
                       "residential_units",
                       "vacant_affordable_units",
                       settings.get("enable_supply_correction", None),
                       cast=True)

    os.remove(misc.config("hlcm_tmp.yaml"))

    print "\nMarket rate housing HLCM:\n"

    # then everyone into market rate units
    utils.lcm_simulate("hlcm.yaml",
                       households,
                       buildings,
                       aggregations,
                       "building_id",
                       "residential_units",
                       "vacant_market_rate_units",
                       settings.get("enable_supply_correction", None),
                       cast=True)
コード例 #2
0
ファイル: models.py プロジェクト: akselx/bayarea_urbansim-1
def hlcm_simulate(households, buildings, aggregations, settings, low_income):

    fname = misc.config("hlcm.yaml")

    print "\nAffordable housing HLCM:\n"

    cfg = yaml.load(open(fname))
    cfg["choosers_predict_filters"] = "income <= %d" % low_income
    open(misc.config("hlcm_tmp.yaml"), "w").write(yaml.dump(cfg))

    # low income into affordable units
    utils.lcm_simulate("hlcm_tmp.yaml", households, buildings,
                       aggregations,
                       "building_id", "residential_units",
                       "vacant_affordable_units",
                       settings.get("enable_supply_correction", None))

    os.remove(misc.config("hlcm_tmp.yaml"))

    print "\nMarket rate housing HLCM:\n"

    # then everyone into market rate units
    utils.lcm_simulate("hlcm.yaml", households, buildings,
                       aggregations,
                       "building_id", "residential_units",
                       "vacant_market_rate_units",
                       settings.get("enable_supply_correction", None))
コード例 #3
0
ファイル: models.py プロジェクト: ual/bayarea_urbansim
def elcm_simulate(jobs, buildings, aggregations, zones, elcm_config):
    buildings.local["non_residential_rent"] = \
        buildings.local.non_residential_rent.fillna(0)
    return utils.lcm_simulate(
        elcm_config, jobs, buildings, aggregations + [zones],
        "building_id", "job_spaces",
        "vacant_job_spaces", cast=True)
コード例 #4
0
def elcm_simulate(jobs, buildings, aggregations):
    buildings.local["non_residential_rent"] = \
        buildings.local.non_residential_rent.fillna(0)
    buildings.index.names = ["index"]
    return utils.lcm_simulate("elcm.yaml", 
                              orca.orca.DataFrameWrapper('jobs_for_sim', 
                                                         jobs.to_frame().dropna(subset=['building_id'])), 
                              buildings, aggregations,
                              "building_id", "job_spaces",
                              "vacant_job_spaces", cast=True)
コード例 #5
0
ファイル: models.py プロジェクト: waddell/urbansim_defaults
def hlcm_simulate(households, buildings, aggregations, settings):
    return utils.lcm_simulate(
        "hlcm.yaml",
        households,
        buildings,
        aggregations,
        "building_id",
        "residential_units",
        "vacant_residential_units",
        settings.get("enable_supply_correction", None),
    )
コード例 #6
0
ファイル: workplace_models.py プロジェクト: psrc/urbansim2
def wplcm_simulate(persons, households, jobs):
    # can only send in jobs that have a valid building_id, so remove unlocated jobs for now
    jobs_df = jobs.to_frame()
    jobs_df = jobs_df[jobs_df.building_id>0]
    jobs_df.index.name = 'job_id'
    orca.add_table('located_jobs', jobs_df)
    located_jobs =  orca.get_table('located_jobs')
    res = utils.lcm_simulate("wplcmcoef.yaml", persons, located_jobs, None,
                              "job_id", "number_of_jobs", "vacant_jobs", cast=True)
        
    orca.clear_cache()
コード例 #7
0
ファイル: models.py プロジェクト: urbansim/bayarea_urbansim
def elcm_simulate(jobs, buildings, aggregations, elcm_config):
    buildings.local["non_residential_rent"] = \
        buildings.local.non_residential_rent.fillna(0)
    return utils.lcm_simulate(elcm_config,
                              jobs,
                              buildings,
                              aggregations,
                              "building_id",
                              "job_spaces",
                              "vacant_job_spaces",
                              cast=True)
コード例 #8
0
def hlcm_simulate(households, residential_units, aggregations,
                  settings, yaml_name, equilibration_name):
    return utils.lcm_simulate(cfg=yaml_name,
                              choosers=households,
                              buildings=residential_units,
                              join_tbls=aggregations,
                              out_fname='unit_id',
                              supply_fname='num_units',
                              vacant_fname='vacant_units',
#                              enable_supply_correction=settings.get(
#                                equilibration_name, None),
                              cast=True)
コード例 #9
0
def ual_hlcm_renter_simulate(households, residential_units, unit_aggregations,
                             ual_settings):
    return utils.lcm_simulate(cfg='ual_hlcm_renter.yaml',
                              choosers=households,
                              buildings=residential_units,
                              join_tbls=unit_aggregations,
                              out_fname='unit_id',
                              supply_fname='num_units',
                              vacant_fname='vacant_units',
                              enable_supply_correction=ual_settings.get(
                                  'rent_equilibration', None),
                              cast=True)
コード例 #10
0
def hlcm_simulate(households, residential_units, aggregations,
                  settings, yaml_name, equilibration_name):

    return utils.lcm_simulate(cfg=yaml_name,
                              choosers=households,
                              buildings=residential_units,
                              join_tbls=aggregations,
                              out_fname='unit_id',
                              supply_fname='num_units',
                              vacant_fname='vacant_units',
                              enable_supply_correction=settings.get(
                                equilibration_name, None),
                              cast=True)
コード例 #11
0
def ual_hlcm_owner_simulate(households, residential_units, unit_aggregations,
                            ual_settings):

    # Note that the submarket id (zone_id) needs to be in the table of alternatives,
    # for supply/demand equilibration, and needs to NOT be in the choosers table, to
    # avoid conflicting when the tables are joined

    return utils.lcm_simulate(cfg='ual_hlcm_owner.yaml',
                              choosers=households,
                              buildings=residential_units,
                              join_tbls=unit_aggregations,
                              out_fname='unit_id',
                              supply_fname='num_units',
                              vacant_fname='vacant_units',
                              enable_supply_correction=ual_settings.get(
                                  'price_equilibration', None),
                              cast=True)
コード例 #12
0
ファイル: models.py プロジェクト: psrc/urbansim2
def hlcm_simulate(households, buildings, persons, settings):
    movers = households.to_frame()
    movers = movers[movers.building_id == -1]
    relocated = movers[movers.is_inmigrant < 1]
    res = utils.lcm_simulate("hlcmcoef.yaml", households, buildings,
                             None, "building_id", "residential_units",
                             "vacant_residential_units", cast=True)
    orca.clear_cache()

    # Determine which relocated persons get disconnected from their job
    if settings.get('remove_jobs_from_workers', False):
        persons_df = persons.to_frame()
        relocated_workers = persons_df.loc[(persons_df.employment_status > 0) &
                                       (persons_df.household_id.isin
                                       (relocated.index))]
        relocated_workers['new_dist_to_work'] = network_distance_from_home_to_work(
                                        relocated_workers.workplace_zone_id,
                                        relocated_workers.household_zone_id)
        relocated_workers['prev_dist_to_work'] = network_distance_from_home_to_work(
                                        relocated_workers.workplace_zone_id,
                                        relocated_workers.prev_household_zone_id)

        # if new distance to work is greater than old, disconnect person from job
        relocated_workers.job_id = np.where(relocated_workers.new_dist_to_work >
                                        relocated_workers.prev_dist_to_work,
                                        -1, relocated_workers.job_id)
        persons.update_col_from_series("job_id", relocated_workers.job_id,
                                   cast=True)

        # Update is_inmigrant- I think this it is ok to do this now,
        # but perhaps this should be part of a clean up step
        # at the end of the sim year.

        households.update_col_from_series("is_inmigrant", pd.Series(0,
                                      index=households.index), cast=True)

    orca.clear_cache()

    return res
コード例 #13
0
ファイル: models.py プロジェクト: psrc/urbansim2
def elcm_simulate(jobs, buildings, parcels, zones, gridcells):
    res = utils.lcm_simulate("elcmcoef.yaml", jobs, buildings,
                             [parcels, zones, gridcells],
                             "building_id", "job_spaces", "vacant_job_spaces",
                             cast=True)
    orca.clear_cache()
コード例 #14
0
ファイル: models.py プロジェクト: yonran/bayarea_urbansim
def elcm_simulate(jobs, buildings, aggregations):
    buildings.local["non_residential_price"] = \
        buildings.local.non_residential_price.fillna(0)
    return utils.lcm_simulate("elcm.yaml", jobs, buildings, aggregations,
                              "building_id", "job_spaces",
                              "vacant_job_spaces")
コード例 #15
0
def elcm_simulate(jobs, buildings, aggregations):
    return utils.lcm_simulate("elcm.yaml", jobs, buildings, aggregations,
                              "building_id", "job_spaces", "vacant_job_spaces")
コード例 #16
0
def hlcm_simulate(households, buildings, aggregations, settings):
    return utils.lcm_simulate("hlcm.yaml", households, buildings, aggregations,
                              "building_id", "residential_units",
                              "vacant_residential_units",
                              settings.get("enable_supply_correction", None))
コード例 #17
0
ファイル: models.py プロジェクト: UDST/sandag_urbansim
def elcm_basic_simulate(jobs, buildings, aggregations):
    return utils.lcm_simulate("elcm_basic.yaml", jobs, buildings, aggregations,
                              "building_id", "job_spaces",
                              "vacant_job_spaces")