LinearInteractionLinear model of interaction between two stocks |
|
This information is part of the Business Simulation Library (BSL). Please support this work and ► donate.
The LinearInteraction component allows to model the interaction between two stocks A (portA) and B (portB) as linear equations:
Note: Capital letters were chosen to represent the stocks (state variables) connected at portA and portB in the formula above. Also dot notation is used for a stock's rate of flow—its first derivative with respect to time.
| Coefficient | Unit | Description |
|---|---|---|
a_0 |
base units for flow to A ( |
Rate of growth for stock A |
|
|
base units for flow to B ( |
Rate of growth for stock B |
|
|
1/s |
Fractional rate of growth for stock A |
|
|
1/s |
Fractional rate of growth for stock B |
|
|
base units for flow to A ( |
Rate of growth for stock A per stock B |
|
|
base units for flow to B ( |
Rate of growth for stock B per stock A |
The coefficients can be given as parameters or as variables via the expandable connector dataIn.
A linear harmonic oscillator can be modeled as a special case of linear interactions where the rates for the mutual influences (e.g., fractionalGrowthRate_B_per_A and fractionalGrowthRate_A_per_B) are negative. In that case, positive stock A will decrease stock B and vice versa.
The Linear Interaction can be used to model Strogatz' famous model for the dynamics of a love affair (conspicuously between "Romeo" and "Juliet") as shown in →LoveHateDynamics [16].
OutputType_A and OutputType_B will be used to conveniently set the types, e.g., units, of the parameters a_0,a_B and b_0, b_A.a_B might have rather convoluted units, e.g., base units of A/(base units of B.s). For convenient modeling, a_B will be divided by refB, which allows to use displayUnit should unit conversion be required. Since TypeB by default is set to Unspecified in most cases nothing needs to be done.b_A.| hasConstantGrowthRates |
Value: false Type: Boolean Description: = true, if the linear growth rates are given by constant parameters |
|---|---|
| hasConstantFractionalGrowthRates |
Value: false Type: Boolean Description: = true, if the fractional growth rates are given by constant parameters |
| hasConstantCouplingCoefficients |
Value: false Type: Boolean Description: = true, if the induced growth rates are given by constant parameters |
| a_0 |
Value: unspecified Type: OutputType_A Description: Constant rate of growth for stock A [OutputType_A] |
| b_0 |
Value: unspecified Type: OutputType_B Description: Constant rate of growth for stock B [OutputType_B] |
| a_A |
Value: unspecified Type: Rate (1/s) Description: Constant fractional rate of growth for stock A (self-coupling) |
| b_B |
Value: unspecified Type: Rate (1/s) Description: Constant fractional rate of growth for stock B (self-coupling) |
| a_B |
Value: unspecified Type: OutputType_A Description: Constant rate of growth for stock A per reference units of B (coupling B to A) |
| refB |
Value: 1 Type: TypeB Description: Reference value for B, i.e., divisor for a_B |
| b_A |
Value: unspecified Type: OutputType_B Description: Constant rate of growth for stock B per reference units of A (coupling A to B) |
| refA |
Value: 1 Type: TypeA Description: Reference value for A, i.e., divisor for b_A |
| portA |
Type: FlowPort Description: Flow from/to Stock A |
|
|---|---|---|
| portB |
Type: FlowPort Description: Flow to/from Stock B |
|
| y_B |
Type: RealOutput_B Description: Rate for flow to and from B (positive value indicates inflow) |
|
| y1_B |
Type: RealOutput_B Description: Rate for flow to and from B (positive value indicates inflow) |
|
| y1_A |
Type: RealOutput_A Description: Rate for flow to and from A (positive value indicates inflow) |
|
| y_A |
Type: RealOutput_A Description: Rate for flow to and from A (positive value indicates inflow) |
|
| dataIn |
Type: Input_Connector Description: Continuous inputs for the component |
|
| u_growthRate_A |
Type: RealOutput Description: Output signal |
|
| u_fractionalGrowthRate_A |
Type: RealOutput Description: Output signal |
|
| u_growthRate_A_per_B |
Type: RealOutput Description: Output signal |
|
| u_growthRate_B_per_A |
Type: RealOutput Description: Output signal |
|
| u_fractionalGrowthRate_B |
Type: RealOutput Description: Output signal |
|
| u_growthRate_B |
Type: RealOutput Description: Output signal |
| parGrowthRateA |
Type: ConstantConverter Description: Constant growth rate for A (optional) |
|
|---|---|---|
| parFractionalRateA |
Type: ConstantConverter Description: Constant fractional growth rate for A (optional) |
|
| parCrossFractionalRateA |
Type: ConstantConverter Description: Constany growth rate for A per B (optional) |
|
| parGrowthRateB |
Type: ConstantConverter Description: Constant growth rate for B (optional) |
|
| parFractionalRateB |
Type: ConstantConverter Description: Constant fractional growth rate for B (optional) |
|
| parCrossFractionalRateB |
Type: ConstantConverter Description: Constant growth rate for B per A (optional) |
|
| unitMultiplierA |
Type: Gain Description: The factor should have units 1/[base units of B] |
|
| unitMultiplierB |
Type: Gain Description: The factor should have units of 1/[base units of A] |
|
| growingA1 |
Type: ExogenousChange Description: Linear growth |
|
| growingA2 |
Type: ExponentialChange Description: Exponential growth for A |
|
| growingA3 |
Type: ExogenousChange Description: Cross-fractional growth rate for A per B |
|
| stockB |
Type: FlowPortSensor Description: Amount in stock B |
|
| stockA |
Type: FlowPortSensor Description: Amount in stock A |
|
| inducedGrowthA |
Type: Product_2 Description: Rate of growth induced by stock B |
|
| totalRateA |
Type: Add_3 Description: Total of three inputs |
|
| growingB1 |
Type: ExogenousChange Description: Linear growth |
|
| growingB2 |
Type: ExponentialChange Description: Exponential growth for B |
|
| growingB3 |
Type: ExogenousChange Description: Cross-fractional growth rate for B per A |
|
| inducedGrowthB |
Type: Product_2 Description: Rate of growth induced by stock A |
|
| totalRateB |
Type: Add_3 Description: Total of three inputs |
|
BusinessSimulation.Examples Romeo and Juliet model as introduced by Strogatz |
|
BusinessSimulation.Flows.Interaction Combined linear and nonlinear interaction |
Input_Connector defined as encapsulated expandable connector in v2.1.0.unspecified in v2.1.0.