NetLogo User Community Models
(back to the NetLogo User Community Models)
Technology diffusion ABM
by Peter Bodo
## WHAT IS IT?
This model simulates technology diffusion. It postulates a duopoly with heterogeneous consumers and includes several interface variables that control
* the number of buyers and their preference distribution;
* buyers’ sensitivity to local or global social pressures;
* the frequency and distribution of innovation activity;
* firms' advertising efficiency;
* buyers' mobility (a proxy for network randomness).
The model outputs the overall technology diffusion curve and diffusion curves for the competing brands and products. Also, it reports the effect of local/global social pressures on technology adoption decisions.
## HOW IT WORKS
The motivation for this model was the digital camera industry. The program creates a market with two firms (or brands; _s_, say _Sony_, and _c_, say _Canon_) at fixed locations. Both firms produce two types of products, 1 and 2. At setup initial reserve prices are defined plus the radius within which buyers can acquire information about the products and brands. If switch _demo___effect_ is on this radius proportionally increases with the brand’s diffusion in the total population, otherwise it remains constant.
In the market there are two types of buyers: type I and II (in the code _b1s_ and _b2s_). Buyers are created at a random initial locations. _b1s_ have a preference for product 1 and like product 2 less while _b2s_ have a preference for product 2 and a secondary taste for product 1. The total number of buyers is constant throughout a simulation however their types may change . At every tick buyers move in a random direction (360 degrees) certain number of squares forward, defined by an input variable named _mobility_.
Firms innovate according to a regular schedule. Innovation may or may not be successful. If it is, the producer's reserve price of the product in question diminishes.
**FIRST TIME PURCHASE:**
At every tick the program considers those who do not own a product yet and checks the following:
* Is the player in a buying distance from a producer and if yes does his reserve price for the product of his primary preference exceed the producer's reserve price? If both conditions apply then the player will buy the product.
* If the _local-influ-buy_ switch is on: is peer pressure high enough in the potential consumer's neighborhood and do reserve prices allow purchase? If yes then due to local social pressures the player will buy the majority product even if he is not in buying distance from the producer.
If the _local-influ-buy_ switch is on the above conditions are checked in a random order.
**SWITCHING DUE TO GLOBAL PRESSURES:**
The program regularly checks (according to variable _how-often-switch_) if those who already purchased a product are within buying distance of a brand AND if they are either ready (reserve prices allow) to switch types AND brands or they are ready to switch only brands. Under favorable conditions the player will switch brands and/or products.
**SWITCHING DUE TO PEER (LOCAL) PRESSURES:**
The program regularly checks if there is a dominant product/brand in the neighborhood of consumers who already own a product. If yes, and reserve prices allow, consumers owning a minority brand/product will cave in to peer-pressure and switch brand and/or product type, no matter of their location.
## HOW TO USE IT
When on, simulation stops if either all consumers have a product or the simulation runs out of time [i.e. ticks >= 10,000]. When off, simulation stops only when the simulation time expired [ticks >= 10,000], i.e. switching will continue even if new purchases stop.
When on _buy-distance-s_ and _buy-distance-c_ proportionally increase with the brand’s diffusion in the total population [NB: not within owners only!] within the same simulation. Otherwise they are constant interface input parameters.
When on the program checks if those who already purchased a product are within buying distance of a brand AND if they are ready to switch types and/or brands. When off this type of switching is impossible after purchase.
When on, the routine considers those who already own a camera and checks if in the 8-cell neighborhood of an owner
* the total number of neighbors >= _min-#-neighbor-switch_ AND
* the proportion of a product > _local-influ-hurdle_ AND
* reserve prices allow switching.
If all these apply then the consumer who owns a minority brand/product in a neighborhood will cave in to peer-pressure and switch brand and/or type.
When on, a first time buyer will consider buying the product even if he is not in buying distance due to local pressure (conditions are the same as with _local-influ-switch_); when off, local peer pressure will not affect first time purchase.
Buyers are heterogeneous: either type I or type II (b1s and b2s); they are created at random locations. The difference is that type I has primarily a taste for product 1 and a secondary preference for product 2 while type II has a primary preference for product 2 and a secondary taste for product 1. These sliders specify the initial number of type I and type II buyers, minimum 0, maximum 100 each. When switching is allowed the proportion of the different types will change while the aggregate number of costumers remains the same.
_**b1-dist-mean, b2-dist-mean, b1-dist-stdev, b2-dist-stdev**_
Parameters of the normal distribution functions that the code uses to generate individual buyers' reserve prices for the two different products. For example an individual type I buyer's reserve price for product 1 (in the code: _b1_ _ _preference_) is a random draw from N(_b1-dist-mean, b1-dist-stdev_) and his reserve price for product 2 (in the code: _b1_ _ _pref_ _ _for2_) is equal to _b1___preference_ – 2*_b1-dist-stdev_. Reserve prices for a type II buyer are generated similarly by using _b2-dist-mean_ and _b2-dist-stdev_.
_Mobility_ determines the number of squares playes move in a random direction per tick. _Mobility_ is between 1 and 5.
Determines how frequently firms innovate. Its value is between 1 and 500 ticks.
_**s1-innov-mean, s2-innov-mean, c1-innov-mean, c2-innov-mean, innov-stdev**_
Parameters that determine if an innovation was successful or not. In a round when firms innovate the code produces four random draws: one from N(_s1-innov-mean, innov-stdev_), a second from N(_s2-innov-mean, innov-stdev_), etc. If the first random number is less that the producer's current reserve price for s1 [_s1_ _ _strength_], then _s1_ _ _strength_ will be replaced by the first number i.e. the innovation was successful. If the second number is less than _s2___strength_, then it will be replaced by the lower number, etc. The means are between 6 and 10, the standard deviation is between 0 and 2.
These parameters define the radius in which buyers can buy without local social pressure. Outside of this radius and without group pressure buyers cannot buy even if their reserve prices would allow (because, say, they don’t have sufficient information about the product). These parameters remain constant within a simulation except when _demo___effect_ is true; then they change, say due to advertising, according to a formula specified in the sub-routine called _count-without-cam_. Values are between 0 and 20.
_**local-influ-hurdle, min-#-neighbor-switch, how-often-switch**_
If buyers are influenced by their peers, i.e. switch _local-influ-switch_ is on, then the code considers those who already own a camera and checks in every (12 - _how-often-switch_) tick if
* in the 8-cell neighborhood of an owner the total number of neighbors >= _min-#-neighbor-switch_,
* the proportion of a product > _local-influ-hurdle_ [which has to be > 0.5],
* reserve prices allow the switch [switch preference exceeds product strength].
If all these apply then the owner who owns a minority brand/product will cave in to peer-pressure and switch to the majority brand and/or type. _how-often-switch_ is between 1 (= players consider switching in every 11 tick) and 10 (= players consider switching in every other tick). _local-influ-hurdle_ is between 0.51 and 0.99, and _min-#-neighbor-switch_ is between 2 and 8.
## THINGS TO NOTICE, THINGS TO TRY
This section could give some ideas of things for the user to notice while running the model.
## EXTENDING THE MODEL
This section could give some ideas of things to add or change in the procedures tab to make the model more complicated, detailed, accurate, etc.
## NETLOGO FEATURES
This section could point out any especially interesting or unusual features of NetLogo that the model makes use of, particularly in the Procedures tab. It might also point out places where workarounds were needed because of missing features.
## RELATED MODELS
This section could give the names of models in the NetLogo Models Library or elsewhere which are of related interest.
## CREDITS AND REFERENCES
Department of Economics and Finance
Southern Connecticut State University
501 Crescent Street
New Haven, CT 06515
Voice: 203 392-5617