TimeStruct is a Julia package that supports the efficient development of optimization models with multi-horizon time modeling and possible uncertainty. The package is designed to be used in combination with JuMP for optimization modeling in Julia.
TimeStruct.jl is a registered Julia package. Install it using the package manager:
using Pkg
Pkg.add("TimeStruct")Or in the Julia REPL package mode (press ]):
pkg> add TimeStruct
The following shows a simple example of usage. For further details, refer to the documentation.
using JuMP
using TimeStruct
periods = SimpleTimes(10, 1) # 10 periods of length 1
income = FixedProfile(5.0) # Fixed income profile
model = Model()
@variable(model, x[periods] >= 0)
@constraint(model, sum(x[t] for t in periods) <= 4)
@objective(model, Min, sum(income[t] * x[t] for t in periods))If you find TimeStruct useful in your work, we kindly request that you cite the following paper:
@article{Flatberg2025,
doi = {10.21105/joss.07578},
url = {https://doi.org/10.21105/joss.07578},
year = {2025},
publisher = {The Open Journal},
volume = {10},
number = {107},
pages = {7578},
author = {Truls Flatberg and Julian Straus and Lars Hellemo},
title = {TimeStruct.jl -- flexible multi-horizon time modelling in optimization models},
journal = {Journal of Open Source Software}
}
This material is based upon work supported by the Research Council of Norway through the projects ZeroKyst (328721), MaritimeNH3 (328679) and CleanExport (308811).