Skip to content

Solve the revenue issue #320

@jwalzberg

Description

@jwalzberg

Description

Including revenues in each life cycle step seems to prevent the model from choosing pathways that seem to make sense looking at costs and revenues data in the .yaml scenario files. As the decision is made on the lump costs and revenues (and not at each life cycle step independently) this could create this behavior.

Data Solution

Remove costs and revenues data for any unecessary step where we know the step is profitable and will not be varied in our sensitivity analysis (since the pathway decision will not be affected by those steps). At the very least, this would make understanding the issue easier... This solution should be implemented by changing the scenario yaml files directly.

@rjhanes and @tapajyoti-ghosh I can take on the proposed solution above. Let me know if you have any thoughts or comments before I do.

Code Solution

The issue is likely caused by the cost adjustment factor being non-zero for many of the scenarios that include positive revenues. The cost adjustment is applied to all edges in the network, and all process costs are increased by the same amount. While the cost adjustment factor preserves the relative cost of all processes, it does not preserve the relative costs of all pathways. Shorter pathways that contain fewer edges will have fewer cost adjustment factors added, while longer pathways will have more cost adjustment factors added.

A linear pathway:

[in use] -A-> [uninstall] -B-> [landfill]

  • Original cost = A + B
  • Adjusted cost = (A + f) + (B + f) = A + B + 2f
  • Pathway cost increase = 2f

A closed-loop circular pathway:

[in use] -A-> [uninstall] -B-> [disassembly and sorting] -C-> [secondary production]

  • Original cost = A + B + C
  • Adjusted cost = (A + f) + (B + f) + (C + f) = A + B + C + 3f
  • Pathway cost increase = 3f

Circular pathways will, in general, contain more edges than linear, thus circular pathways with non-zero revenues are penalized.

The cost adjustment factor is applied in the first place so the path-finding algorithms built into networkx function properly. These algorithms cannot handle negative edge weights (costs).

There's a few things to try. In order from largest to smallest likelihood of success:

  • Tweak the shortest-path code such that pathways are compared based on the unadjusted pathway costs. This would require using the same pathfinding algorithm, and adjusting the weighted lengths down by the cost adjustment factor times the number of edges in each pathway.
  • Duplicate and modify a pathfinding algorithm from networkx such that negative edge weights are allowed.
  • Explore alternate network packages, newer versions of networkx, and alternate algorithms in networkx

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions