This repository contains MATLAB code for controllability analysis, driver placement, and optimal control design on large-scale dynamical networks using the concept of information neighborhood. The algorithms, underlying theory, and application example details will be described in an upcoming paper, Prevalence and scalable control of localized networks by C. Duan, T. Nishikawa, and A. E. Motter.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
The full text of the GNU General Public License can be found in the file "LICENSE.txt".
The control design computations require MATLAB Control System Toolbox. Some of the application examples leverage MATLAB Parallel Computing Toolbox. The power grid control example requires Matpower 6.0 (https://matpower.org/download/) for power flow calculation.
(Note: The run times for these examples were measured on a desktop computer with Intel i7-7700K / 4 cores / 16GB RAM.)
-
driverplacement.m
runs the gradient-based greedy algorithm for driver placement (Algorithm 2) on a Barabási–Albert (BA) random network with Laplacian dynamics. (Run time: ~1 min) -
run_kuramoto_control.m
runs the local control design algorithm (Algorithm 3) and dynamical simulations on the network of Kuramoto oscillators. The folderKuramoto
contains supporting code and data files.newtonraphson.m
in this folder was obtained from: asmaa lakhdar (2021). newtonraphson (https://www.mathworks.com/matlabcentral/fileexchange/87884-newtonraphson), MATLAB Central File Exchange. (Run time: ~1 min) -
run_power_control.m
runs the local control design algorithm (Algorithm 3) and dynamical simulations on a synthetic Texas power grid (case_ACTIVSg2000.m
, obtained from https://electricgrids.engr.tamu.edu). The code requires Matpower 6.0 to be installed on the MATLAB search path. The folderPower grid
contains supporting code and data files. (Run time: ~2 min) -
run_epidemic_control.m
runs the local control design algorithm (Algorithm 3) and dynamical simulations on the epidemics spreading over the global airline transportation network. The folderEpidemics
contains supporting code and data files. This script uses MATLAB Parallel Computing Toolbox. (Run time: ~22 min) -
run_brain_control.m
runs the local control design algorithm (Algorithm 3) and dynamical simulations on the whole brain network. The folderBrainnet
contains supporting code and data files. This script uses MATLAB Parallel Computing Toolbox. (Run time: ~3.5 min)
-
Wup = InfoDistanceUpperbdd(normA)
calculates the upper bound on the information distance matrix from the norm of the blocks of the system coupling matrix A, i.e.,normA(i,j) = norm(A_{ij})
. -
[nlist, dlist] = ucs_geodesic_k(Wup,i,k)
calculates the information neighborhood of sizek
centered at nodei
(Algorithm 1). The outputnlist
is the node list for the information neighborhood, anddlist
is the corresponding list of information distances. -
[nlist, dlist] = ucs_geodesic_tau(Wup,i,tau)
calculates the information neighborhood of radiustau
centered at nodei
(Algorithm 1). The outputnlist
is the node list for the information neighborhood, anddlist
is the corresponding list of information distances. -
k = DesignLocalContrl(A,B,Q,R,Cset_aug0,Cset_aug,i,n)
runs the algorithm to design a local optimal controller at nodei
by solving the projected Riccati equation (a subroutine of Algorithm 3). -
averge_neighborhood_rate = average_k_rate(normA,k)
calculates the averagek
th neighbor reduction rate of the system coupling matrix A, i.e.,normA(i,j) = norm(A_{ij})
. -
PriorityQueue.m
provides the priority queue data structure used in the UCS algorithm (Algorithm 1). -
ba_net.m
generates BA random networks. This code was obtained from: Gregorio Alanis-Lobato (2021). CNM (https://www.mathworks.com/matlabcentral/fileexchange/45734-cnm), MATLAB Central File Exchange.