DecisionProgramming
DecisionProgramming.jl is a Julia package for solving multi-stage decision problems under uncertainty, modeled using influence diagrams. Internally, it relies on mathematical optimization. Decision models can be embedded within other optimization models.
Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 5 DOI reference(s) in README -
✓Academic publication links
Links to: sciencedirect.com, zenodo.org -
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.7%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
DecisionProgramming.jl is a Julia package for solving multi-stage decision problems under uncertainty, modeled using influence diagrams. Internally, it relies on mathematical optimization. Decision models can be embedded within other optimization models.
Basic Info
- Host: GitHub
- Owner: gamma-opt
- License: mit
- Language: Julia
- Default Branch: master
- Homepage: https://gamma-opt.github.io/DecisionProgramming.jl/dev/
- Size: 4.36 MB
Statistics
- Stars: 48
- Watchers: 3
- Forks: 7
- Open Issues: 9
- Releases: 6
Topics
Metadata Files
README.md
DecisionProgramming.jl
Description
DecisionProgramming.jl is a Julia package for solving multi-stage decision problems under uncertainty, modeled using influence diagrams. Internally, it relies on mathematical optimization. Decision models can be embedded within other optimization models. We designed the package as JuMP extension. We have also developed a Python interface, which is available here.
Citing
The Decision Programming framework is described in this publication. If you found the framework useful in your work, we kindly ask you to cite the following publication (pdf):
@article{Salo_et_al-2022,
title = {Decision programming for mixed-integer multi-stage optimization under uncertainty},
journal = {European Journal of Operational Research},
volume = {299},
number = {2},
pages = {550-565},
year = {2022},
issn = {0377-2217},
doi = {https://doi.org/10.1016/j.ejor.2021.12.013},
url = {https://www.sciencedirect.com/science/article/pii/S0377221721010201},
author = {Ahti Salo and Juho Andelmin and Fabricio Oliveira},
keywords = {Decision analysis, Influence diagrams, Decision trees, Contingent portfolio programming, Stochastic programming}
}
If you use the rooted junction tree models, we kindly ask you to cite the following publication (pdf):
@article{Parmentier_et_al-2020,
title = {Integer programming on the junction tree polytope for influence diagrams},
journal = {INFORMS Journal on Optimization},
volume = {2},
number = {3},
pages = {209--228},
year = {2020},
issn = {0377-2217},
doi = {https://doi.org/10.1287/ijoo.2019.0036},
url = {https://pubsonline.informs.org/doi/epdf/10.1287/ijoo.2019.0036},
author = {Parmentier, Axel and Cohen, Victor and Lecl{\`e}re, Vincent and Obozinski, Guillaume and Salmon, Joseph},
keywords = {Influence diagrams, Partially observed Markov decision processes, probabilistic graphical models, Linear programming}
}
Syntax
We can create an influence diagram as follows:
```julia using DecisionProgramming
diagram = InfluenceDiagram()
addnode!(diagram, DecisionNode("A", [], ["a", "b"])) addnode!(diagram, ChanceNode("B", ["A"], ["x", "y"])) addnode!(diagram, ChanceNode("C", ["A"], ["v", "w"])) addnode!(diagram, DecisionNode("D", ["B", "C"], ["k", "l"])) add_node!(diagram, ValueNode("V", ["D"]))
generate_arcs!(diagram)
addprobabilities!(diagram, "B", [0.4 0.6; 0.6 0.4]) addprobabilities!(diagram, "C", [0.7 0.3; 0.3 0.7]) add_utilities!(diagram, "V", [1.5, 1.7]) ```
Using the influence diagram, we generate the model as follows:
julia
using JuMP
model, z, variables = generate_model(diagram, model_type="RJT")
We can optimize the model using MILP solver.
julia
using HiGHS
optimizer = optimizer_with_attributes(
() -> HiGHS.Optimizer()
)
set_optimizer(model, optimizer)
optimize!(model)
Finally, we extract the decision strategy from the decision variables.
julia
Z = DecisionStrategy(z)
See the documentation for more detailed examples.
Installation
DecisionProgramming.jl is registered. You can add it using the command:
julia-repl
pkg> add DecisionProgramming
To run examples and develop and solve decision models, you have to install JuMP and a solver capable of solving mixed-integer linear programs (MILP). JuMP documentation contains a list of available solvers.
julia-repl
pkg> add JuMP
We recommend using the HiGHS solver, which is an efficient open-source solver.
julia-repl
pkg> add HiGHS
Now you are ready to use decision programming.
Development
Using the package manager, add DecisionProgramming.jl package for development using the command:
julia-repl
pkg> develop DecisionProgramming
If you have already cloned DecisionProgramming from GitHub, you can use the command:
julia-repl
pkg> develop .
Inside DecisionProgramming directory, run tests using the commands:
julia-repl
pkg> activate .
(DecisionProgramming) pkg> test
You can find more instruction on how to install packages for development at Julia's Pkg documentation.
Owner
- Name: Gamma-Opt
- Login: gamma-opt
- Kind: organization
- Location: Finland
- Website: https://gamma-opt.aalto.fi
- Repositories: 11
- Profile: https://github.com/gamma-opt
Group of Applied Mathematical Modeling and Optimisation
Citation (CITATION.cff)
cff-version: 1.2.0 message: "If you use this software, please cite it as below." authors: - family-names: "Oliveira" given-names: "Fabricio" orcid: "https://orcid.org/0000-0003-0300-9337" - family-names: "Herrala" given-names: "Olli" orcid: "https://orcid.org/0000-0003-4819-2534" - family-names: "Tollander de Balsch" given-names: "Jaan" orcid: "https://orcid.org/0000-0002-4814-5554" - family-names: "Hankimaa" given-names: "Helmi" orcid: "https://orcid.org/0000-0001-9531-6080" - family-names: "Andelmin" given-names: "Juho" orcid: "https://orcid.org/0000-0003-3874-2029" - family-names: "Terho" given-names: "Topias" orcid: "https://orcid.org/0009-0001-0256-143X" - family-names: "Honkamaa" given-names: "Esa" orcid: "https://orcid.org/0009-0006-8115-677X" title: "DecisionProgramming.jl" version: 2.0.0 doi: 10.5281/zenodo.13639605 date-released: 2024-09-03 url: "https://github.com/gamma-opt/DecisionProgramming.jl"
GitHub Events
Total
- Create event: 1
- Commit comment event: 2
- Release event: 1
- Issues event: 2
- Watch event: 3
- Issue comment event: 2
- Push event: 4
- Pull request event: 3
Last Year
- Create event: 1
- Commit comment event: 2
- Release event: 1
- Issues event: 2
- Watch event: 3
- Issue comment event: 2
- Push event: 4
- Pull request event: 3
Committers
Last synced: about 1 year ago
Top Committers
| Name | Commits | |
|---|---|---|
| Helmi Hankimaa | h****a@g****m | 242 |
| Jaan Tollander de Balsch | d****v@j****m | 166 |
| Esa Honkamaa | e****a@s****i | 129 |
| solliolli | o****a@a****i | 106 |
| Jaan Tollander de Balsch | j****n@h****m | 11 |
| Fabricio Oliveira | f****a@a****i | 10 |
| Juho Andelmin | j****i@g****m | 5 |
| Topias Terho | t****o@g****m | 5 |
| CompatHelper Julia | c****y@j****g | 3 |
| github-actions[bot] | 4****] | 2 |
| Benoît Legat | b****t@g****m | 2 |
| Jaan Tollander de Balsch | - | 2 |
| helmihankimaa | 8****a | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 9 months ago
All Time
- Total issues: 16
- Total pull requests: 47
- Average time to close issues: 4 months
- Average time to close pull requests: about 1 month
- Total issue authors: 7
- Total pull request authors: 6
- Average comments per issue: 1.31
- Average comments per pull request: 0.04
- Merged pull requests: 37
- Bot issues: 0
- Bot pull requests: 5
Past Year
- Issues: 2
- Pull requests: 14
- Average time to close issues: about 2 hours
- Average time to close pull requests: 10 days
- Issue authors: 1
- Pull request authors: 4
- Average comments per issue: 0.5
- Average comments per pull request: 0.07
- Merged pull requests: 11
- Bot issues: 0
- Bot pull requests: 2
Top Authors
Issue Authors
- jaantollander (7)
- solliolli (3)
- toubinaattori (2)
- helmihankimaa (1)
- jdelab1 (1)
- FabsOliveira (1)
- JuliaTagBot (1)
Pull Request Authors
- solliolli (22)
- toubinaattori (12)
- esahon (9)
- github-actions[bot] (8)
- helmihankimaa (8)
- blegat (4)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- julia 1 total
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 5
juliahub.com: DecisionProgramming
DecisionProgramming.jl is a Julia package for solving multi-stage decision problems under uncertainty, modeled using influence diagrams. Internally, it relies on mathematical optimization. Decision models can be embedded within other optimization models.
- Homepage: https://gamma-opt.github.io/DecisionProgramming.jl/dev/
- Documentation: https://docs.juliahub.com/General/DecisionProgramming/stable/
- License: MIT
-
Latest release: 2.0.1
published 10 months ago