valueflows

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

commit 5eb7b3625b6314adf3f9ecde502004590dd3ff46
parent 3a187fc0d0a4889e83b29cff7d82b2b1d18c7793
Author: Lynn Foster <foster.j.lynn@gmail.com>
Date:   Thu, 30 Mar 2017 18:37:41 -0500

Merge pull request #213 from valueflows/algorithms

Add Algorithms section
Diffstat:
M.gitignore | 1+
Mdocs/SUMMARY.md | 12+++++++++++-
Adocs/appendix/cashflows.md | 11+++++++++++
Adocs/appendix/critical-path.md | 14++++++++++++++
Adocs/appendix/dependent-demand.md | 24++++++++++++++++++++++++
Adocs/appendix/equations.md | 17+++++++++++++++++
Adocs/appendix/netflows.md | 8++++++++
Adocs/appendix/overview.md | 24++++++++++++++++++++++++
Adocs/appendix/provenance.md | 14++++++++++++++
Adocs/appendix/rollup.md | 8++++++++
Adocs/appendix/track.md | 16++++++++++++++++
Ddocs/introduction/planning.md | 26--------------------------
12 files changed, 148 insertions(+), 27 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -4,3 +4,4 @@ npm-debug.log .DS_Store .build +*~ diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md @@ -26,4 +26,14 @@ ## Appendices * [REA References](appendix/rea.md) * [Uses of the Vocabulary](introduction/usedfor.md) -* [Dependent Demand Logic](introduction/planning.md) + +### Algorithms +* [Overview](appendix/overview.md) +* [Dependent Demand](appendix/dependent-demand.md) +* [Critical Path](appendix/critical-path.md) +* [Value Rollup](appendix/rollup.md) +* [Value Equations](appendix/equations.md) +* [Track and Trace](appendix/track.md) +* [Provenance](appendix/provenance.md) +* [Cash Flows](appendix/cashflows.md) +* [Network Flows](appendix/netflows.md) diff --git a/docs/appendix/cashflows.md b/docs/appendix/cashflows.md @@ -0,0 +1,11 @@ +# Cash Flows + +This algorithm is called Cash Flows because that is the most-used small business monitoring tool, but it could also refer to monitoring the inflows and outflows of any critical resource, for example, water. + +Cash inflows and outflows are plotted on a timeline, sometimes weekly, sometimes quarterly, totalled as a positive or negative number for each period, and then summarized into a running cumulative cash flow. + +Here's [an article about cash flows for farming](https://www.extension.iastate.edu/agdm/wholefarm/html/c3-14.html). And a sample report from that article: + +![cash flow](https://www.extension.iastate.edu/agdm/wholefarm/html/images/c3-14fig1.gif) + +Cash flows could be budgeted (future estimated cash flows), or actual past cash flows, often compared to the estimates. diff --git a/docs/appendix/critical-path.md b/docs/appendix/critical-path.md @@ -0,0 +1,14 @@ +# Critical Path + +Excerpted from the [Critical Path Method](https://en.wikipedia.org/wiki/Critical_path_method) (CPM) Wikipedia page. + +> The essential technique for using CPM is to construct a model of the project that includes the following: + +> * A list of all activities [in Value Flows, those would be Processes] required to complete the project (typically categorized within a work breakdown structure) [this could come from the Dependent Demand explosion], +> * The time (duration) that each activity will take to complete, +> * The dependencies between the activities and, +> * Logical end points such as milestones or deliverable items. + +> Using these values, CPM calculates the longest path of planned activities to logical end points or to the end of the project, and the earliest and latest that each activity can start and finish without making the project longer. This process determines which activities are "critical" (i.e., on the longest path) and which have "total float" (i.e., can be delayed without making the project longer). In project management, a critical path is the sequence of project network activities which add up to the longest overall duration, regardless if that longest duration has float or not. This determines the shortest time possible to complete the project. + +How to use CPM: prioritize all of the processes on the critical path. Delaying any of them will delay the whole project. Delaying some other process beyond its "float" might put that process on the critical path. diff --git a/docs/appendix/dependent-demand.md b/docs/appendix/dependent-demand.md @@ -0,0 +1,23 @@ +# Dependent Demand + +Dependent demand is one popular planning and scheduling algorithm for economic networks. It is used in Material Requirements Planning (MRP), for example. The algorithm traverses recipes to create schedules for economic processes. + +Here is a long description of [Dependent Demand](http://hillside.net/plop/plop97/Proceedings/haugen.pdf). Below is a short version. + +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, and backscheduling all the processes and resource requirements based on estimated process durations. 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 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 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.)_ + +* When you find a Recipe Processes, + * then schedule a Planned Process based on the Recipe Process, with a Output Intent of the required quantity of the demanded Resource Category. Backschedule so that the end of the process meets the timing requirements of the inputs to the processes that will be waiting for them. + * 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 diff --git a/docs/appendix/equations.md b/docs/appendix/equations.md @@ -0,0 +1,16 @@ +# Value Equation + +As far as we know, the idea and name for value equations was invented by [Sensorica](http://www.sensorica.co/), a pioneering Open Value Network. + +The idea is to have a published formula for distributing income to contributors to creating some deliverable that brings in some money. + +This is a (simplified) very specific example taken from Sensorica: + +Contributing to creating the output: + +![sensorica flow 1](https://rawgit.com/valueflows/valueflows/master/release-doc-in-process/sens-flow-1.png) + +Distributing income according to the value equation: +![sensorica flow 2](https://rawgit.com/valueflows/valueflows/master/release-doc-in-process/sens-flow-2.png) + +Here's [a lot more detail about value equations](https://speakerdeck.com/mikorizal/10-nrp-value-equation-concepts-and-tutorial) as implemented in Sensorica's NRP software, one of the precursors to Value Flows.+ \ No newline at end of file diff --git a/docs/appendix/netflows.md b/docs/appendix/netflows.md @@ -0,0 +1,8 @@ +# Network Flows + +We've presented a selection of algorithms you could use with value flows networks. Here are some articles describing others: + +* [Stanford Network Flow Problems](https://web.stanford.edu/class/cs97si/08-network-flow-problems.pdf) +* [MIT Network Flow lecture notes](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2012/lecture-notes/MIT6_046JS12_lec13.pdf) +* [Shortest Path Problem](https://en.wikipedia.org/wiki/Shortest_path_problem), listing several algorithms. +* [A 500+ page book about directed graph algorithms](http://www.cs.rhul.ac.uk/books/dbook/main.pdf) diff --git a/docs/appendix/overview.md b/docs/appendix/overview.md @@ -0,0 +1,24 @@ +# Value Flow Algorithms + +This section is about what computer programs (or humans with pencil and paper and a lot of work) can do with Value Flows economic networks once they are constructed on the Web or in a database. + +* **Dependent Demand** constructs schedules for operational economic networks from recipes + * Many other scheduling algorithms can be used over the same recipes. + * [Gantt charts](https://en.wikipedia.org/wiki/Gantt_chart) are a popular network schedule visualization. + ![gantt](http://www.freeworldacademy.com/newbizzadviser/picts/fw16-2.gif) + * **Critical Path** is another scheduling algorithm that analyzes a network of processes to figure out the bottlenecks, the processes that need special attention. +* **Value Rollups** summarize the total value of all inputs to the resulting output from a recipe. +* **Value Equations** determine how income should be distributed according to contributions to a deliverable item. +* **Track and Trace** follow the path of a resource forwards (to where it went) and backwards (where it came from, and what other resources went into it). +* **Provenance** is like Trace, focusing on the path of a resource and all of the other resources that went into it. +* **Cash Flow** is mostly about money, but could also apply to other resources, looking at the inflows and outflows on a timeline, historical in the past, forecasted in the future. +* **Network Flows** is a general name for all of those algorithms and many many more. See [Flow Networks](https://en.wikipedia.org/wiki/Flow_network) on Wikipedia and elsewhere. + +There are similarities and differences among the algorithms: +* Scheduling algorithms and cash flows use time-phasing: placing planned or reported events on a timeline. +* Dependent Demand schedules backwards from an end date; Critical Path schedules forwards from a start date. +* Dependent Demand does an explosion: breaking down the end resource of a recipe into a tree of components and processes. +* Value Rollups do an implosion: summarizing all the inputs of the exploded tree of components and processes into a total value. +* All of those algorithms work on flow networks, otherwise known as directed graphs, composed of nodes and links between them. + +![flow network](https://upload.wikimedia.org/wikipedia/commons/thumb/9/94/Max_flow.svg/330px-Max_flow.svg.png) diff --git a/docs/appendix/provenance.md b/docs/appendix/provenance.md @@ -0,0 +1,14 @@ +# Provenance + +Provenance is a form of tracing the origins of some end state. The term is often used for scientific papers or for valuable assets like artworks or diamonds. + +From [PROV Overview](http://www.w3.org/TR/prov-overview/): "Provenance is information about entities, activities, and people involved in producing a piece of data or thing, which can be used to form assessments about its quality, reliability or trustworthiness." Provenance traces the history of an artifact, its processes and inputs, their processes and inputs, etc. + +![Provenance graph](http://www.b-me.de/Wordpress/wp-content/uploads/2010/04/ProvenanceGraph.jpg) +- [source](http://www.b-me.de/?page_id=8) + +Provenance goes backward from the end of a flow, just like value equations. + +Two businesses based on provenance and blockchains: +* https://www.provenance.org/ +* https://www.everledger.io/ diff --git a/docs/appendix/rollup.md b/docs/appendix/rollup.md @@ -0,0 +1,7 @@ +# Value Rollup + +Value rollups can be done on recipes as well as on reported events. They summarize the values of all of the inputs to all of the processes that go into the creation of a Resource Category or an Economic Resource. + +In business, cost rollups on recipes (usually bills of material and routings) calculate the Standard Cost of producing a commercial product model. Then actual cost rollups, summarizing the actual events that went into creating a product instance, can be compared to the standard cost. + +In value networks, value rollups can be done in both of those same ways (standard value and actual value), but all of the input values need to be converted into the same unit: often, but not necessarily, a unit of money. In a time bank system, the unit would be hours. In a mutual credit system, the unit could be hours, or it could be whatever the credits represent.+ \ No newline at end of file diff --git a/docs/appendix/track.md b/docs/appendix/track.md @@ -0,0 +1,15 @@ +# Tracking and Tracing + +** [Difference between Tracking and Tracing](http://ell.stackexchange.com/questions/34391/difference-between-track-and-trace):** + +> The difference is in direction & point in time: + +> To trace: follow the completed path backwards from its current point to where it began. + +> To track: follow the emerging path forwards from your starting point to wherever the thing currently is. + +> When you "trace" a cellphone call, you try to determine its origin... You go backward to the starting point. + +> When you "track" a cellphone, you monitor [the starting] location ... and follow it wherever it goes... + +One of the most-often used traces is to find the origins of health problems like mad cow disease and tainted drugs and food. In Value Flows terms, that would start with the product that caused a health problem, and tracing back along the chain of resource flows to the source or sources of the product.+ \ No newline at end of file diff --git a/docs/introduction/planning.md b/docs/introduction/planning.md @@ -1,25 +0,0 @@ -# Dependent Demand Logic - -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. - -You can find other algorithms by searching for "network flows", for example, https://en.wikipedia.org/wiki/Flow_network - -Here is a long description of [Dependent Demand](http://hillside.net/plop/plop97/Proceedings/haugen.pdf). Below is a short version. - -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 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 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.)_ - -* 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