This repository contains code for the 3-D temperature control of a cube. This is a linear model predicitve control (MPC) problem constructed in DynamicNLPModels.jl
and solved with Ipopt
and MadNLP.jl
. The results are presented in the conference proceedings, "Interior Point Methods on GPU/SIMD Architecture for Linear MPC".
The file PDE_boundary_3d_heating.jl
contains the code for building the temperature control model. This model is the discretization of the problem
where
We solve two instances of this problem, the condensed problem (where the states are eliminated; see Jerez et al., 2012) and the initial sparse problem where the states are not eliminated. The sparse problem is solved with Ipopt
using Ma27 as the linear solver. Scripts for solving the sparse problem are contained in the files time_pde_heating_ipopt_fixedT.jl
and time_pde_heating_ipopt_nz4.jl
. Scripts for solving the condensed problem are contained in the files time_pde_heating_fixedT.jl
and time_pde_heating_nz4.jl
. The condensed problem can be solved on both CPU and GPU.
Output data can be found in the directory output_files
. .jld files contain dictionaries with dataframes containing the outputs of our runs. Solver outputs are also available, and are identified by the number of states (ns) and the time horizion (T). Since we tested a range of nz values while maintaining a fixed T as well as a range of T values while maintaining a fixed nz, identifiers are also included in the solver output names to correspond to the range of nz or the range of T tests. Lastly, there is a file write_data.jl
that will output the data from the .jld files to a single .csv.