API Reference
DecisionProgramming.jl
API reference.
influence_diagram.jl
Nodes
DecisionProgramming.Node
— TypePrimitive type for node. Alias for Int
.
DecisionProgramming.ChanceNode
— TypeChance node type.
Examples
c = ChanceNode(3, [1, 2])
DecisionProgramming.DecisionNode
— TypeDecision node type.
Examples
d = DecisionNode(2, [1])
DecisionProgramming.ValueNode
— TypeValue node type.
Examples
v = ValueNode(4, [1, 3])
DecisionProgramming.State
— TypePrimitive type for the number of states. Alias for Int
.
DecisionProgramming.States
— TypeStates type. Works like Vector{State}
.
Examples
S = States([2, 3, 2, 4])
DecisionProgramming.States
— MethodConstruct states from vector of (state, nodes) tuples.
Examples
julia> S = States([(2, [1, 3]), (3, [2, 4, 5])])
States([2, 3, 2, 3, 3])
DecisionProgramming.validate_influence_diagram
— FunctionValidate influence diagram.
Paths
DecisionProgramming.Path
— TypePath type. Alias for NTuple{N, State} where N
.
DecisionProgramming.paths
— FunctionIterate over paths in lexicographical order.
Examples
julia> states = States([2, 3])
julia> vec(collect(paths(states)))
[(1, 1), (2, 1), (1, 2), (2, 2), (1, 3), (2, 3)]
Iterate over paths with fixed states in lexicographical order.
Examples
julia> states = States([2, 3])
julia> vec(collect(paths(states, Dict(1=>2))))
[(2, 1), (2, 2), (2, 3)]
Probabilities
DecisionProgramming.Probabilities
— TypeConstruct and validate stage probabilities.
Examples
julia> data = [0.5 0.5 ; 0.2 0.8]
julia> X = Probabilities(2, data)
julia> s = (1, 2)
julia> X(s)
0.5
Path Probability
DecisionProgramming.AbstractPathProbability
— TypeAbstract path probability type.
Examples
struct PathProbability <: AbstractPathProbability
C::Vector{ChanceNode}
# ...
end
(U::PathProbability)(s::Path) = ...
DecisionProgramming.DefaultPathProbability
— TypePath probability.
Examples
P = DefaultPathProbability(C, X)
s = (1, 2)
P(s)
Consequences
DecisionProgramming.Consequences
— TypeState utilities.
Examples
julia> vals = [1.0 -2.0; 3.0 4.0]
julia> Y = Consequences(3, vals)
julia> s = (1, 2)
julia> Y(s)
-2.0
Path Utility
DecisionProgramming.AbstractPathUtility
— TypeAbstract path utility type.
Examples
struct PathUtility <: AbstractPathUtility
V::Vector{ValueNode}
# ...
end
(U::PathUtility)(s::Path) = ...
DecisionProgramming.DefaultPathUtility
— TypeDefault path utility.
Examples
U = DefaultPathUtility(V, Y)
s = (1, 2)
U(s)
Decision Strategy
DecisionProgramming.LocalDecisionStrategy
— TypeLocal decision strategy type.
Examples
Z = LocalDecisionStrategy(1, data)
Z(s_I)
DecisionProgramming.DecisionStrategy
— TypeDecision strategy type.
decision_model.jl
Decision Model
DecisionProgramming.DecisionVariables
— TypeCreate decision variables and constraints.
Examples
z = DecisionVariables(model, S, D)
DecisionProgramming.PathProbabilityVariables
— TypeCreate path probability variables and constraints.
Examples
π_s = PathProbabilityVariables(model, z, S, P)
π_s = PathProbabilityVariables(model, z, S, P; hard_lower_bound=false))
DecisionProgramming.probability_cut
— MethodAdds a probability cut to the model as a lazy constraint.
Examples
probability_cut(model, π_s, P)
DecisionProgramming.active_paths_cut
— MethodAdds a active paths cut to the model as a lazy constraint.
Examples
atol = 0.9 # Tolerance to trigger the creation of the lazy cut
active_paths_cut(model, π_s, S, P; atol=atol)
Objective Functions
DecisionProgramming.PositivePathUtility
— TypePositive affine transformation of path utility. Always evaluates positive values.
Examples
julia> U⁺ = PositivePathUtility(S, U)
julia> all(U⁺(s) > 0 for s in paths(S))
true
DecisionProgramming.expected_value
— MethodCreate an expected value objective.
Examples
EV = expected_value(model, π_s, U)
DecisionProgramming.conditional_value_at_risk
— MethodCreate a conditional value-at-risk (CVaR) objective.
Examples
α = 0.05 # Parameter such that 0 ≤ α ≤ 1
CVaR = conditional_value_at_risk(model, π_s, U, α)
Decision Strategy from Variables
DecisionProgramming.LocalDecisionStrategy
— MethodConstruct decision strategy from variable refs.
DecisionProgramming.DecisionStrategy
— MethodExtract values for decision variables from solved decision model.
Examples
Z = DecisionStrategy(z)
analysis.jl
DecisionProgramming.CompatiblePaths
— TypeInterface for iterating over active paths given influence diagram and decision strategy.
- Initialize path
s
of lengthn
- Fill chance states
s[C]
by generating subpathspaths(C)
- Fill decision states
s[D]
by decision strategyZ
and paths
Examples
for s in CompatiblePaths(S, C, Z)
...
end
DecisionProgramming.UtilityDistribution
— TypeUtilityDistribution type.
DecisionProgramming.UtilityDistribution
— MethodConstructs the probability mass function for path utilities on active paths.
Examples
UtilityDistribution(S, P, U, Z)
DecisionProgramming.StateProbabilities
— TypeStateProbabilities type.
DecisionProgramming.StateProbabilities
— MethodAssociates each node with array of probabilities for each of its states occuring in active paths.
Examples
StateProbabilities(S, P, Z)
DecisionProgramming.StateProbabilities
— MethodAssociates each node with array of conditional probabilities for each of its states occuring in active paths given fixed states and prior probability.
Examples
# Prior probabilities
prev = StateProbabilities(S, P, Z)
# Select node and fix its state
node = 1
state = 2
StateProbabilities(S, P, Z, node, state, prev)
DecisionProgramming.value_at_risk
— MethodValue-at-risk.
DecisionProgramming.conditional_value_at_risk
— MethodConditional value-at-risk.
printing.jl
DecisionProgramming.print_decision_strategy
— FunctionPrint decision strategy.
Examples
print_decision_strategy(S, Z)
DecisionProgramming.print_utility_distribution
— FunctionPrint utility distribution
Examples
udist = UtilityDistribution(S, P, U, Z)
print_utility_distribution(udist)
DecisionProgramming.print_state_probabilities
— FunctionPrint state probabilities with fixed states.
Examples
sprobs = StateProbabilities(S, P, U, Z)
print_state_probabilities(sprobs, [c.j for c in C])
print_state_probabilities(sprobs, [d.j for d in D])
DecisionProgramming.print_statistics
— FunctionPrint statistics.
DecisionProgramming.print_risk_measures
— FunctionPrint risk measures.
random.jl
DecisionProgramming.random_diagram
— MethodGenerate random decision diagram with n_C
chance nodes, n_D
decision nodes, and n_V
value nodes. Parameter m_C
and m_D
are the upper bounds for the size of the information set.
Examples
rng = MersenneTwister(3)
random_diagram(rng, 5, 2, 3, 2)
DecisionProgramming.States
— MethodGenerate n
random states from states
.
Examples
rng = MersenneTwister(3)
S = States(rng, [2, 3], 10)
DecisionProgramming.Probabilities
— MethodGenerate random probabilities for chance node c
with S
states.
Examples
rng = MersenneTwister(3)
c = ChanceNode(2, [1])
S = States([2, 2])
Probabilities(rng, c, S)
DecisionProgramming.Consequences
— MethodGenerate random consequences between low
and high
for value node v
with S
states.
Examples
rng = MersenneTwister(3)
v = ValueNode(3, [1])
S = States([2, 2])
Consequences(rng, v, S; low=-1.0, high=1.0)
DecisionProgramming.LocalDecisionStrategy
— MethodGenerate random decision strategy for decision node d
with S
states.
Examples
rng = MersenneTwister(3)
d = DecisionNode(2, [1])
S = States([2, 2])
LocalDecisionStrategy(rng, d, S)