A general setup for deterministic system identification problems on graphs with Dirichlet and Neumann boundary conditions is introduced. When control nodes are available along the boundary, we apply a discretize-then-optimize method to estimate an optimal control. A key piece in the present architecture is our boundary injected message passing neural network. This will produce more accurate predictions that are considerably more stable in proximity of the boundary. Also, a regularization technique based on graphical distance is introduced that helps with stabilizing the predictions at nodes far from the boundary.
The main contribution of this project is a Boundary Injected Message Passing Layer for a structural approach to enforce boundary values visualied as follows:
See BoundaryInjectedMessagePassingLayer
in both core/bignode_no_ctrl.py
and core/bignode_with_ctrl.py
for details.
System requirements:
- Python <= 3.12
- Pip package manager or alternative
Simply run:
./setup.sh
Installation steps:
git clone https://github.com/mehdi-gital/bignode.git
cd bignode
python -m venv .venv
source .venv/bin/activate
For system identification, dataset selection, hyperparameter optimization, go to scripts/graph_sysid.py
. Once set, run it using:
python scripts/graph_sysid.py
For optimal control go to scripts/graph_ocp.py
, and run:
python scripts/graph_ocp.py
Below are some step by step walkthroughs with a mix of concept and code:
@misc{garrousian2024inverseboundaryvalueoptimal,
title={Inverse Boundary Value and Optimal Control Problems on Graphs: A Neural and Numerical Synthesis},
author={Mehdi Garrousian and Amirhossein Nouranizadeh},
year={2024},
eprint={2206.02911},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2206.02911},
}
Feel free to reach out with any questions/comment.
mgarrous@alumni.uwo.ca
amirhossein.nouranizadeh@gmail.com