Skip to content

Commit 6a5cc78

Browse files
authored
Merge pull request #176 from JuliaStochOpt/ci
Update continuous integration
2 parents 134acb9 + fc42cc5 commit 6a5cc78

File tree

4 files changed

+47
-39
lines changed

4 files changed

+47
-39
lines changed

.travis.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ julia:
66
- 1.4
77
notifications:
88
email: false
9-
9+
branches:
10+
only:
11+
- master
1012
after_success:
1113
# push coverage results to Coveralls
1214
- julia -e 'using Pkg; cd(Pkg.dir("StochDynamicProgramming")); Pkg.add("Coverage"); using Coverage; Coveralls.submit(Coveralls.process_folder())'

Project.toml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
name = "StochDynamicProgramming"
22
uuid = "f6024387-75e5-5fdf-b095-327b05c0905f"
3-
authors = ["mrchaos <[email protected]>"]
4-
version = "0.5.0"
3+
version = "0.6.0"
54

65
[deps]
7-
Cbc = "9961bab8-2fa3-5c5a-9d89-47fab24efd76"
8-
Clp = "e2554f3b-3117-50c0-817c-e040a3ddf72d"
96
CutPruners = "65d46eb8-70e9-5a30-bf48-2afa3a021b8f"
107
DelimitedFiles = "8bb1440f-4735-579b-a4ab-409b98df4dab"
118
Distributed = "8ba89e20-285c-5b6f-9357-94700520ee1b"
@@ -23,10 +20,13 @@ SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
2320
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
2421

2522
[compat]
26-
julia = "^1.3.0"
23+
julia = "^1.3"
24+
JuMP = "0.21"
2725

2826
[extras]
2927
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
28+
Cbc = "9961bab8-2fa3-5c5a-9d89-47fab24efd76"
29+
Clp = "e2554f3b-3117-50c0-817c-e040a3ddf72d"
3030

3131
[targets]
32-
test = ["Test"]
32+
test = ["Test", "Cbc", "Clp"]

README.md

Lines changed: 37 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,78 @@
11
# StochDynamicProgramming
22

33

4-
**WARNING:** *This package is currently in development. Any help or feedback is appreciated.*
5-
6-
7-
**Latest release:** v0.5.0
8-
94
| **Documentation** | **Build Status** | **Social** |
105
|:-----------------:|:----------------:|:----------:|
116
| | [![Build Status][build-img]][build-url] | [![Gitter][gitter-img]][gitter-url] |
127
| [![][docs-stable-img]][docs-stable-url] | [![Codecov branch][codecov-img]][codecov-url] | [<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Discourse_logo.png/799px-Discourse_logo.png" width="64">][discourse-url] |
138

14-
15-
16-
This is a Julia package for optimizing controlled stochastic dynamic system (in discrete time). It offers three methods of resolution :
9+
This is a Julia package for optimizing controlled stochastic dynamic system,
10+
in discrete time. It offers three methods of resolution :
1711

1812
- *Stochastic Dual Dynamic Programming* (SDDP) algorithm.
1913
- *Extensive formulation*.
2014
- *Stochastic Dynamic Programming*.
2115

16+
It is built on top of [JuMP](https://github.com/JuliaOpt/JuMP.jl).
17+
18+
StochDynamicProgramming asks the user to provide explicit the cost `c(t, x, u, w)` and
19+
dynamics `f(t, x, u, w)` functions. Also, the package was developed back
20+
in 2016, and some parts of its API are not idiomatic, in a Julia sense.
21+
For other implementations of the SDDP algorithm in Julia, we advise to
22+
have a look at these two packages:
23+
24+
* [SDDP.jl](https://github.com/odow/SDDP.jl)
25+
* [StructDualDynProg.jl](https://github.com/JuliaStochOpt/StructDualDynProg.jl)
26+
27+
2228

23-
It is built upon [JuMP]
29+
## What problems solves this package ?
2430

25-
## What problem can we solve with this package ?
31+
StochDynamicProgramming targets problems with
2632

2733
- Stage-wise independent discrete noise
2834
- Linear dynamics
29-
- Linear or convex piecewise linear cost
35+
- Linear or convex piecewise linear costs
3036

3137
Extension to non-linear formulation are under development.
32-
Extension to more complex alea dependance are under developpment.
3338

34-
## Why Extensive formulation ?
39+
40+
### Why SDDP?
41+
42+
SDDP is a dynamic programming algorithm relying on cutting planes. The algorithm requires convexity
43+
of the value function but does not discretize the state space. The complexity is linear in the
44+
number of stage, and can accomodate higher dimension state spaces than standard dynamic programming.
45+
The algorithm returns exact lower bound and estimated upper bound as well as approximate optimal
46+
control strategies.
47+
48+
### Why Extensive formulation ?
3549

3650
An extensive formulation approach consists in representing the stochastic problem as a deterministic
37-
one with more variable and call a standard deterministic solver. Mainly usable in a linear
51+
one and then calling a standard deterministic solver. It is mainly usable in a linear
3852
setting. Computational complexity is exponential in the number of stages.
3953

40-
## Why Stochastic Dynamic Programming ?
54+
### Why Stochastic Dynamic Programming ?
4155

4256
Dynamic Programming is a standard tool to solve stochastic optimal control problem with
43-
independent noise. The method require discretisation of the state space, and is exponential
44-
in the dimension of the state space.
57+
independent noise. The method requires discretizing the state space, and its
58+
complexity is exponential in the dimension of the state space.
4559

46-
## Why SDDP?
47-
48-
SDDP is a dynamic programming algorithm relying on cutting planes. The algorithm require convexity
49-
of the value function but does not discretize the state space. The complexity is linear in the
50-
number of stage, and can accomodate higher dimension state than standard dynamic programming.
51-
The algorithm return exact lower bound and estimated upper bound as well as approximate optimal
52-
control strategies.
5360

5461
## Installation
55-
Installing StochDynamicProgramming is an easy process.
56-
Currently, the package depends upon `StochasticDualDynamicProgramming.jl`, which is not
57-
yet registered in Julia's METADATA. To install the package,
58-
open Julia and enter
62+
63+
StochDynamicProgramming is a registered Julia package.
64+
To install the package, open Julia and enter
5965

6066
```julia
61-
julia> Pkg.update()
62-
julia> Pkg.add("StochDynamicProgramming")
67+
julia> ]
68+
pkg> add StochDynamicProgramming
6369

6470
```
6571

6672

6773
## Usage
6874

69-
IJulia Notebooks will be provided to explain how this package work.
75+
IJulia Notebooks are provided to explain how this package works.
7076
A first example on a two dams valley [here](http://nbviewer.jupyter.org/github/leclere/StochDP-notebooks/blob/master/notebooks/damsvalley.ipynb).
7177

7278

test/runtests.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99

1010
using StochDynamicProgramming
11-
using Clp, JuMP, Nullables #,Gurobi
11+
using Clp, JuMP, Nullables
1212
using Printf
1313
using Statistics
1414
using Test

0 commit comments

Comments
 (0)