neuromancer.dynamics.ode module

class neuromancer.dynamics.ode.BrusselatorHybrid(block, insize=2, outsize=2)[source]

Bases: ODESystem

ode_equations(x)[source]
class neuromancer.dynamics.ode.BrusselatorParam(insize=2, outsize=2)[source]

Bases: ODESystem

ode_equations(x)[source]
class neuromancer.dynamics.ode.CSTR_Param(insize=3, outsize=2)[source]

Bases: ODESystem

ode_equations(x, u)[source]
class neuromancer.dynamics.ode.DuffingParam(insize=3, outsize=2)[source]

Bases: ODESystem

ode_equations(x, u)[source]
class neuromancer.dynamics.ode.GeneralNetworkedODE(map=None, agents=None, couplings=None, insize=None, outsize=None, inductive_bias='additive')[source]

Bases: ODESystem

Coupled nonlinear dynamical system with heterogeneous agents. This class acts as an aggregator for multiple interacting physics that contribute to the dynamics of one or more agents.

coupling_physics(x, *args)[source]

This coupling physics assumes that each coupling physics nn.Module contains the connection information, including what agents are connected and if the connection is symmetric.

intrinsic_physics(x, *args)[source]

Calculate and return the contribution from all agents’ intrinsic physics

ode_equations(x, *args)[source]
Select the inductive bias to use for the problem:
  • Additive: f(x_i) + sum(g(x_i,x_j))

  • General: f(x_i, sum(g(x_i,x_j)))

  • Composed: f(sum(g(x_i,x_j)))

class neuromancer.dynamics.ode.LorenzControl(insize=5, outsize=3)[source]

Bases: ODESystem

ode_equations(x, u)[source]
class neuromancer.dynamics.ode.LorenzParam(insize=3, outsize=3)[source]

Bases: ODESystem

ode_equations(x)[source]
class neuromancer.dynamics.ode.LotkaVolterraHybrid(block, insize=2, outsize=2)[source]

Bases: ODESystem

ode_equations(x)[source]
class neuromancer.dynamics.ode.LotkaVolterraParam(insize=2, outsize=2)[source]

Bases: ODESystem

ode_equations(x)[source]
class neuromancer.dynamics.ode.ODESystem(insize, outsize)[source]

Bases: Module, ABC

Class for defining RHS of arbitrary ODE functions, can be mix-and-matched according to expert knowledge.

forward(x, *args)[source]

Define the computation performed at every call.

Should be overridden by all subclasses.

Note

Although the recipe for forward pass needs to be defined within this function, one should call the Module instance afterwards instead of this since the former takes care of running the registered hooks while the latter silently ignores them.

abstract ode_equations(x, *args)[source]
class neuromancer.dynamics.ode.SINDy(library, threshold=0.01)[source]

Bases: ODESystem

Sparse Identification of Nonlinear Dynamics Reference: https://www.pnas.org/doi/10.1073/pnas.1517384113

ode_equations(x)[source]
Parameters:

x – (torch.tensor) time series data

class neuromancer.dynamics.ode.SSM(fx, fu, nx, nu, fd=None, nd=0)[source]

Bases: Module

Baseline class for (neural) state space model (SSM) Implements discrete-time dynamical system:

x_k+1 = fx(x_k) + fu(u_k) + fd(d_k)

with variables:

x_k - states u_k - control inputs d_k - disturbances

forward(x, u, d=None)[source]
Parameters:
  • x – (torch.Tensor, shape=[batchsize, nx])

  • u – (torch.Tensor, shape=[batchsize, nu])

  • d – (torch.Tensor, shape=[batchsize, nd])

Returns:

(torch.Tensor, shape=[batchsize, outsize])

class neuromancer.dynamics.ode.TwoTankParam(insize=4, outsize=2)[source]

Bases: ODESystem

ode_equations(x, u)[source]
class neuromancer.dynamics.ode.VanDerPolControl(insize=3, outsize=2)[source]

Bases: ODESystem

ode_equations(x, u)[source]