---
# System prepended metadata

title: Untitled

---

---
slideOptions:
  transition: slide
  theme: white
---

## DecisionProgramming.jl

---

## History in short

<span>- 2018-2019: Ahti, Juho and Fabricio write the first revision of *Decision Programming for Mixed-Integer Multi-Stage Optimization under Uncertainty* ([arXiv](https://arxiv.org/pdf/1910.09196.pdf))<!-- .element: class="fragment" data-fragment-index="1" --></span> 
<span>- 2020: Jaan built a Julia package implementing the Decision Programming framework<!-- .element: class="fragment" data-fragment-index="2" --></span>
<span>- 2021: Helmi improved the package by both making the interface more user-friendly and changing the underlying problem formulation to a tighter version that Juho had figured out<!-- .element: class="fragment" data-fragment-index="3" --></span>

---

<span style="float: right; width: 30%">

![](https://gamma-opt.github.io/DecisionProgramming.jl/dev/examples/figures/n-month-pig-breeding.svg)

</span>

<span style="float: left; width: 70%">

```julia
using JuMP, Gurobi
using DecisionProgramming

const N = 4

diagram = InfluenceDiagram()

add_node!(diagram, ChanceNode("H1", [], ["ill", "healthy"]))

for i in 1:N-1
    # Testing result
    add_node!(diagram, ChanceNode("T$i", ["H$i"], ["positive", "negative"]))
    # Decision to treat
    add_node!(diagram, DecisionNode("D$i", ["T$i"], ["treat", "pass"]))
    # Cost of treatment
    add_node!(diagram, ValueNode("C$i", ["D$i"]))
    # Health of next period
    add_node!(diagram, ChanceNode("H$(i+1)", ["H$(i)", "D$(i)"], ["ill", "healthy"]))
end

add_node!(diagram, ValueNode("MP", ["H$N"]))

```

</span>
