Dynamic Structure Modeling Advantages: Increase the Modeling Power Biological Systems, e.g., adapt to a evolving environment Engineered Systems, e.g., dynamically adding/removing computing nodes Deal with Simulation Performance for large scale models
An Simple Example addModel(C); addCoupling(C, COutputPort, B, BInputPort); removeModel(A);
Dynamical Structure Operations Add Model Remove Model Add Coupling Remove Coupling Add interfaces (ports) Remove interfaces (ports)
Who initiates a change and what to change The structure change is controlled by a centralized Executor Every atomic model can initiate a structure change with operation boundaries Every atomic model can initiate a structure change for models everywhere in the model tree
Operation Boundaries addModel(…): a model can only add components to its parent coupled model. removeModel(…): a model can only remove itself and its brothers. addCoupling(…): a model can only add couplings involving itself, its parent, and its brothers. removeCoupling(…): a model can only remove couplings involving itself, its parent, and its brothers. adding/removing ports: a model can only add/remove ports of itself and its brothers.
An Demonstrative Example in SimView variableStructure.CouplingHier
Variable Structure Example: Pulse Pipeline One Dimensional Cell Space 1 2 3 4 5 6 7 8 initialize the cell space with first, second and last cells oneDCell zero = addCell(0,new pulseCell( 0, fireDelay )); oneDCell one = addCell(1,new pulseCell( 1, fireDelay )); oneDCell last = addCell(numCells-1,new pulseCell( numCells-1, fireDelay )); addCoupling( this, "in", zero, "in" ); addCoupling(last, "out", this, "out" ); addCoupling(zero, "out",one,"in"); The advantage of VS is that we do not have to load all of the cells at initialization -- important for large numbers public void addPipeNeighbor(){ addNeighbor(1,new pulseCell(id+1,10)); addNeighborCoupling(+1,"out","in"); } add a call in deltext to create a neighbor and its couplings add neighbor cells as they become active public void deltext( double e, message x ) { addPipeNeighbor(); Continue( e ); if ( phaseIs( "passive" ) && somethingOnPort( x, "in" ) ) holdIn( "fire", rg.expon( fireDelay ) ); } oneDimCellSpace. pipeLineRand
Example: Variable GPT Model Models can be added/removed at the same digraph level and levels underneath it, but they can’t be added to the parent level or from one digraph model into another digraph model at the peer-level.
ForestFire (a) (b) (c) (d) (e) (f)
ForestFire -- Dynamical Resolution Simulation using all low resolution cells Simulation using all high resolution cells Simulation using dynamic resolution cells