modelDiffusion
Extends from Icons.SubsystemActuator (Icon for subsystems with flow ports).
Information
This information is part of the Business Simulation Library (BSL). Please support this work and ► donate.
This is more or less the classical Bass diffusion model [5] that explains how new products get adopted in a population: Potential adopters turn into adopters being affected either by advertising or promotion (i.e., as innovators) or by social interaction ("word of mouth") with adopters (i.e., as imitators).
The basic model for diffusion can also be used to model the spread of infectious diseases (→SIR). Since the disease is ultimately spread by contact with an infected person, the fractionalAdoptionRate in this case should be zero.
While the structure in principle folllows Sterman's implementation [3, chapter 9], the component has been put in a more general form. We have to distinguish the following subgroups that make up the total population of potential contacts for social interaction:
- Potential adopters ("susceptible")—the stock connected to
portA - Adopters ("infected")—the stock connected to
portB - Other population ("immune") the sub population that is neither adopter or potential adopter
- Other adopters ("other infected") the sub population that is also influencing potential adopters, but not the "next stage" (adopters/infected)
Depending upon the structural parameter nextStageIsInfluencing we may choose to take the converted adopters out of the group of influencers, e.g., a freshly converted adopter may not yet be entusiastic enough, while more elaborate epidemic models like the SEIR model distinguish an exposed stage, that is not yet infectious.
Implementation
The behavior of the component is exactly specified by the following equations:
totalPopulation = potentialAdopters + otherPopulation + adopters + otherAdopters
adoptionRate = potentialAdopters · fractionalAdoptionRate
conversionRate = potentialAdopters·(otherAdopters [+ adopters])·adoptionFraction·contactRate / totalPopulation
totalAdoptionRate = adoptionRate + conversionRate
Notes
- All else being equal the process will produce S-shaped growth of adopters.
- If advertising has no effect there needs to be a seed of initial adopters to set off the dynamics.
- The classical Bass model only has two parameters. This can be obtained as a special case of the given structure by simply setting contactRate and totalPopulation to 1. The parameters fractionalAdoptionRate and adoptionFraction then correspond to the parameters used by Bass (note: the units for adoptionFraction are then different.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| String | iconLabel (from SubsystemActuator) | "" | |
| People | otherAdopters | unspecified | Other adopters involved in influencing potential adopters |
| People | otherPopulation | unspecified | Other potential contacts that are neighter adopters or potential adopters |
| Rate | contactRate | unspecified | Social contacts per person per period for adopters |
| Rate | fractionalAdoptionRate | unspecified | Basic conversion rate independent from social contacts |
| Fraction | adoptionFraction | unspecified | Fraction of social contacts that will result in adoption |
| Structural Parameters | |||
| Boolean | hasConstantOtherAdopters | false | = true, if other adopters are given by the parameter and not by the continuous input |
| Boolean | hasConstantOtherPopulation | false | = true, if other population is given by the parameter and not by the continuous input |
| Boolean | hasConstantContactRate | false | = true, if the rate of social contacts is given by the parameter and not by the continuous input |
| Boolean | hasConstantFractionalAdoptionRate | false | = true, if the fractional adoption rate is given by the parameter and not by the continuous input |
| Boolean | hasConstantAdoptionFraction | false | = true, if true the adoption fraction is given by the parameter and not by the continuous input |
| Boolean | nextStageIsInfluencing | true | = true, if true the next stage (adopters) are influencing potential adopters |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Interfaces.Connectors.FlowPort | portA | Port connected to stock of potential adopters | |
| Interfaces.Connectors.FlowPort | portB | Port connected to stock of adopters | |
| DataOutPort | dataOut | Expandable connector for output | |
| DataInPort | dataIn | Expandable connector for input |
Contents
| Name | Description |
|---|---|
| Output connector | |
| Input connector |
Revisions
- Connectors
DataOutPortandDataInPortchanged toencapsulated expandable connectorclasses in v2.1.0. - Values for optional parameter inputs changed to
unspecifiedin v2.1.0.