valueflows

valueflows docs
git clone https://s.sonu.ch/~srfsh/valueflows.git
Log | Files | Refs | README

commit a776fe27243adeeb66e42fcfcb814ff11d4fe4e3
parent b8ff3096200cc8c2bad96e2b1debe01db6f1f6d5
Author: Lynn Foster <foster.j.lynn@gmail.com>
Date:   Mon, 27 Mar 2017 10:54:55 -0500

Merge branch 'master' of https://github.com/valueflows/valueflows.git

Diffstat:
Mdocs/introduction/planning.md | 30+++++++++++++++++-------------
1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/docs/introduction/planning.md b/docs/introduction/planning.md @@ -1,21 +1,25 @@ # Dependent Demand Logic -[Needs to be cleaned up for naming] +Dependent demand is one popular planning algorithm for economic networks. It is used in Material Requirements Planning (MRP), for example. The algorithm traverses recipes to create plans for economic processes. -I (Bob Haugen) wrote a much longer version of this called [Dependent Demand](http://hillside.net/plop/plop97/Proceedings/haugen.pdf) for a PLoP conference in 1997. +You can find other algorithms by searching for "network flows", for example, https://en.wikipedia.org/wiki/Flow_network -Basically, you traverse a graph of vf:ProcessTypes backwards from the last vf:OutputType, connecting vf:InputTypes with vf:OutputTypes that have matching vf:ResourceTypes. See [Graph search algorithms](http://jasonpark.me/AlgorithmVisualizer/). +Here is a long description of [Dependent Demand](http://hillside.net/plop/plop97/Proceedings/haugen.pdf). Below is a short version. -Take each of the requests for quantities of vf:ResourceTypes as a demand and start the traversal. +Basically, you traverse a graph of Recipe Processes backwards from the last Recipe Output, connecting Recipe Inputs with Recipe Outputs that have matching Resource Categories. See [Graph search algorithms](http://jasonpark.me/AlgorithmVisualizer/). + +This description refers to this diagram: +![process resource flow](https://rawgit.com/valueflows/valueflows/master/release-doc-in-process/process-layer.png) +Take each request for quantities of Resource Category as a demand and start the traversal. **Start:** -* First check for onhand and available vf:Resources, or previously scheduled vf:PlannedOutputs, that are not yet allocated to any demand. -* Allocate any that you find to the highest priority demand (where highest priority usually means earliest delivery date). _(In terms of some of our discussions here, those are soft allocations, known only in the computer system.)_ -* For demands that find no or insufficient available inventory or previously planned outputs, look for a vf:ProcessType that can create some. If you can't find a vf:ProcessType, suggest a purchase. +* First check for onhand and available Economic Resources, or previously scheduled Output Intents, that are not yet allocated to any demand. +* Allocate any that you find to the highest priority demand (where highest priority usually means earliest delivery date). _(Those are soft allocations, known only in the computer system.)_ +* For demands that find no or insufficient available inventory or Output Intents, look for a Recipe Process that can create some. If you can't find a Recipe Process, suggest a purchase. - * _(Note: a vf:Recipe is not really a thing, it's just a graph. A requested vf:ResourceType may have one or more vf:ProcessTypes that can create some vf:EconomicResources of that type. Each of those vf:ProcessTypes may have vf:InputTypes the specify some other vf:ResourceTypes, and each of those vf:ResourceTypes may have vf:ProcessTypes that can create them, and so on, recursively, until you can't find any more creation vf:ProcessTypes. If you find more than one creation vf:ProcessType, you will need some way to select one.)_ + * _(Note: a Recipe is not really a thing, it's just a graph. A requested Resource Category may have one or more Recipe Processes that can create some Resources of that category. Each of those Recipe Processes may have Recipe Inputs that specify some other Resource Categories, and each of those Resource Categories may have Recipe Processes that can create them, and so on, recursively, until you can't find any more creation Recipe Processes. If you find more than one creation Recipe Processes, you will need some way to select one.)_ -* If you find a vf:ProcessType, - * then schedule a vf:Process of that type, with a vf:PlannedOutput of the required quantity of the demanded vf:ResourceType. - * Then schedule vf:PlannedInputs for each of the vf:InputTypes of that vf:ProcessType, with their quantities scaled to the quantity of the planned output. - * Then start over from the **Start** with each of those new vf:InputTypes as the demand.- \ No newline at end of file +* When you find a Recipe Processes, + * then schedule a Process of that type, with a Output Intent of the required quantity of the demanded Resource Category. + * Then schedule Input Intents for each of the Recipe Inputs of that Recipe Process, with their quantities scaled to the quantity of the planned output. + * Then start over from the **Start** with each of those new Input Intents as the demand.+ \ No newline at end of file