UDST / developer

Redesigned UrbanSim developer/pro forma models
https://udst.github.io/developer/
BSD 3-Clause "New" or "Revised" License
3 stars 5 forks source link

Design Proposal: Developer Workflow #37

Closed pksohn closed 7 years ago

pksohn commented 7 years ago

Approved new workflow for developer model

Latest in wiki.

This is a high-level design proposal meant for discussion and review. I've tagged this and other such issues with the label Type: Proposal. These are not meant to be treated as user stories or handled in the GitHub project workflow. Everything in here needs to be broken down into a user story for development.

Stories

Summary

See "proposed workflow" below for details.

Current workflow

Here I'll try to summarize the current workflow that utilizes the proforma and developer models. Feel free to skip to the proposed workflow below. I'm using the model names from the urbansim_parcels repo's models.py.

1: Preliminary models

2: Feasibility

Generates a table of parcels with some metrics about development feasibility, like profitability.

In this model, each parcel represents the possible development (or redevelopment) of one building, and each parcel's feasibility is analyzed as such.

3: Developer

Decides which buildings get developed, based on the outputs from the feasibility step.

Proposed workflow

Here are all of the tables involved:

1: Preliminary models, including scheduled developments, which are added directly into the pipeline.

1.1: Project Creator

A new ProjectCreator model takes in the parcel table and pipeline (empty in year 1), and generates development projects and development sites.

The project creator performs these steps:

The Splitter function should take in parcels and if they qualify under some criteria (probably it's larger than a maximum parcel size), run an algorithm to determine the "best" split. One possible algorithm is:

2: Feasibility

Runs sqftproforma model for projects with only one development site, and combines results with the project_feasibility table from the previous step.

Unlike the existing workflow, this step performs analysis on development sites as units, rather than parcels. Steps are:

3: Developer

Decide which development projects get pushed into the pipeline, based on the outputs from the feasibility step.

There is not much change in the Developer model itself, except use development sites instead of parcels. It does this:

3.1: Append to pipeline

A new PipelineAdder step should append development sites to the pipeline table. This may be a function we simply want the developer model to handle, but there may end up being some more complicated rules regarding how we add to the pipeline.

Steps:

4: Build from the pipeline

A new Constructor model "constructs" development sites in development projects in the pipeline. These are then added to the buildings table.

At this point, pipeline is a list of development projects, and each row has information on the status of development sites within the project. Steps:

We can add in logic to delay or cancel projects as well. pipeline and buildings persist across simulation years. Everything else is reset.

waddell commented 7 years ago

A couple of comments on this. One is a minor correction - the transition models don't implement move probabilities -- they compare the population and jobs in the simulation data to the target population in the control totals and add new households and jobs to the database as needed. The location choice models don't just generate location probabilities, they also monte carlo sample a probability to assign agents to locations.

A second comment is about the proposed approach. It might be worth considering using the abstraction of a development project rather than a building to add to the pipeline, which would have 2 benefits: it would make it more consistent with development pipeline projects (user-specified developments), and it would enable representation of multi-building developments like a single family subdivision or a mixed-use planned development.

pksohn commented 7 years ago

Thanks Paul! This is definitely still work in progress and lots of incomplete ideas. We'd love to get your thoughts again after a few more iterations. I'll let you know when it's ready.

pksohn commented 7 years ago

@waddell: We've iterated on the user stories and written up a more thorough spec. Let us know what you think. I'm working on an accompanying visual as well to make it easier to follow.

pksohn commented 7 years ago

This is approved. I'm closing this and moving to the wiki.