powered by NetLogo
view/download model file: Innovation Ecosystem.nlogo
This model explores the dynamics of an innovation eco-system. It simulates firms cooperatively developing new technologies to generate revenue and to enhance their technological knowledge. The model builds on recent research on technological innovation which suggests that increasingly firms' innovation success depends on available and capable innovation partners as technological knowledge required for such innovation becomes more complex and specialized among firms.
In a stable environment firms search for and form partnerships with other firms, jointly invest in a development effort for a new product, and - if this development is successful - launch the product and gain revenue from the launched product. Collaboration partners also gain knowledge through their collaboration efforts. All product development is carried out through collaboration.
There are two critical variables that change the dynamics of the eco-system.
The first regards the variety of knowledge in the system. If the variety is low, only one type of knowledge that the different firms hold in different amounts. Through collaboration firms combine this same type of knowledge to develop "normal" products (type 0; blue boxes). If the variety is high, two different types of knowledge exist and can be combined by firms. Successfully combining the same type of knowledge produces "normal" products (type 0; blue boxes). Successfully combining different types of knowledge produces "special" products (type 1; red boxes).
The second critical variable regards the strategy followed by firms during development. If they are ambitious, firms - as they grow older - will increasingly try to develop products that exceed the technological standard set by previous products. If firms are not ambitious, they aim to develop products that simply meet, not exceed, the technological standard. Different levels of revenues are gained from products that do and those that do not exceed the technological standards of previously launched products.
Product development is a risky affair. Firms are given a MAXIMUM DEVELOPMENT TIME to push their development projects' progress to or beyond the TECHNOLOGICAL HURDLE, which is initial set a certain level and then increases depending on the technological progress in the industry. To advance their projects' progress they apply their KNOWLEDGE. Each tick they have a chance that their applied knowledge successfully advances the project. That chance is improved the more products the collaborating firms have already launched. Once the hurdle is reached the product can be launched.
In the course of their operation, firms consume resources. Every tick, each firm incurs a set level of OPERATING COSTS, which increases the more products that firm has launched successfully. During product development firms incur DEVELOPMENT COSTS for each unit of knowledge they apply to the project to advance its progress to the technological hurdle.
1. Set the KNOWLEDGE-VARIETY slider to 1 or 2, to determine the number of different knowledges in the system. If 2 varieties exist, the SPECIAL-KNOWLEDGE-LIKELIHOOD slider determines how rare the second type of knowledge is. Firms that hold the first type of knowledge are shown as circles. Firms that hold the second type of knowledge are shown as triangles.
2. Switch the AMBITIOUS? switch from FALSE to TRUE to have firms strive to exeed the technological level of previously launched products.
3. Adjust the slider parameters (see below), or use the default settings.
4. Press the SETUP button.
5. Press the GO button to begin the simulation.
6. Look at the monitors to see the current population statistics (age, knowledge, resources, level of technology, collaboration success rates)
World
===============
Firm-no.: initial number of firms generated for the simulation at setup.
Knowledge-variety: number of different set of knowledge in the system. Every firm can only hold one type of knowledge.
Firm-spawn: likelihood of a new firm being founded at each tick.
Max-firms: maximum number of firms that can exist in the system. As long as the maximum number is reached, no new firms will be founded.
Firms
==============
Link-capacity:
Initial-resources:
max-initial-knowledge:
regular-knowledge-gain:
hightech-price1: multiplier that determines how much revenue firms earn from special (type 1, red) products that exceed the technology of previous products.
lowtech-price1: multiplier that determines how much revenue firms earn from special products that do not exceed the technology of previous products.
hightech-price0: multiplier that determines how much revenue firms earn from normal products (type 0, blue) that exceed the technology of previous products.
lowtech-price0: multiplier that determines how much revenue firms earn from normal products (type 0, blue) that do not exceed the technology of previous products.
(generally: multiplier * level of technology of new product = revenue)
logged?: switches between linear (FALSE) to log (TRUE) increase of operating costs relative to a firm's number of products launched.
oper-cost: operating costs incured by firm at each tick.
admin-factor: multiplier that influences how much operating costs increase for a firm that have successfully launched products (if logged? is on FALSE). (calculation: # of successfully lauched products * admin-factor * oper-costs = total operating costs)
log-multiple: multiplier that influences how much operating costs increase for a firm that have successfully launched products (if logged? is on TRUE).
partnering-likelihood: percentage chance that a firm is establishing a partnership with an elegible partner it has detected. A firm is an eligible if it has not yet reached its link capacity and has no current link with the other firm.
partner-radius: within the partner firms can detect elegible partners.
radius-increase: multiplier that influence how much the radius for detecting partners increases with a firm's age
dev-risk: development risk determines the likelihood that a firm's contribution of knowledge successfully advances the progress of the development project.
experience-multiplier: multiplier that influences how much firms improve their chances of successfully advance their development projects depending on their track record of successful product launches.
knowledge-multiplier: multiplier that influences how much firms' knowledge assets are applied to the development project.
learning-success: percentage of the successfully launched product's level of technology that firms benefit from to increase their knowledge assets. (lessons-learned from success)
learning-success: percentage of an unsuccessful development effort's level of technology (before the project was abandoned) that firms benefit from to increase their knowledge assets. (lessons-learned from failure)
dev-costs: cost per unit of knowledge that is applied the the development effort.
devtime-max: maximum number of ticks firms have to progress their development projects to or beyond the hurdle.
initial-hurdle: level technology that new project developments must reach before they can be launched.
min-tech-hurdle: if the technology has significantly progressed beyond the initial technology hurdle, this percentage indicates the minimum level of technology, relative to the most advanced product so far, new products must reach before they can be launched.
ambitious?: determines whether firms try to push new products beyond previous products' level of technology.
Under many parameter combinations the eco-systems total resources (sum of all resources held by all firms) roughly follows a sinus curve. What produces they spikes of wealth in the system and the eventual collapse to a low level?
How do the dynamics of the system change when firms become technologically ambitious, i.e. when they try to push new products beyond previous products' level of technology?
Try adjusting the parameters under various settings. How sensitive is the stability of the model to the particular parameters?
Can you find any parameters that generate a stable ecosystem in which the industry continues indefinetly without incumbent firms dominating the system ?
Which (partnering & development) parameters have the strongest impact on technological advance, on average age of firms, and on resources held by firms?
The model is already complicated, but the their are a few feature worth adding:
Partnering strageties: firms can be given different partnering strategies (either adaptive strategical or generic fixed strategies at birth) that influence their choice of partners. Criteria for partner selection could be partners' track record of development, the knowledge endowment, their resources, or the number of times they have previously colloborated with the other firm.
Knowledge dynamics: an optional knowledge mechanism could be that firms' knowledge assets' value depreciate at an increasing rate with age. That mean an old firm may have a lot of knowledge, but that knowledge is not up-to-date and thus contributes little value to a development effort. This might create and interesting tipping point in situations where incumbents see their wealth and knowledge explode thus all-but exclude new comers from the system.
While, the "interesting" uses of NETLOGO feature may appear so only to the author of this model, here are a two tentative suggestions:
Use of links as development projects which absorb / combine properties of the actors they connect.
Dynamically advancing technology thresholds.
Products that gracefully fade out of the market.
M Iansiti, R Levien (2004). The keystone advantage: what the new dynamics of business ecosystems mean for strategy, innovation, and sustainability. Cambridge, MA: Havard Business School Press.
R Adner (2006). Match your innovation strategy to your innovation ecosystem. In: Harvard Business Review. vol:84 iss:4 pg:98
B Iyer, TH Davenport (2008). Reverse engineering Google's innovation machine. In:
Harvard Business Review. vol:86 iss:4 pg:58
;to dos: ; adaptive partnering strategies (regarding type of knowledge and depths of experience of partners; preference for repeat partnerships) ; should firms be learning from bad partnering experience? ; should there be some experimentation with partnering preferences? globals [ progress-hurdle0 progress-hurdle1 knowledge-check0 knowledge-check1 total-blue total-red firm-deaths firm-births gsuccessful-collab0 gsuccessful-collab1 gunsuccessful-collab0 gunsuccessful-collab1 tech-leveltmp highest-tech0 highest-tech1 oldest biggest wisest oldest-death biggest-death wisest-death ] breed [products product] breed [firms firm] firms-own [ resources resourcesi firm-age knowledge-type knowledge-depth knowledge-depthi knowledge-breadth my-radius contribution accum-dev-costs max-resources successful-collab0 successful-collab1 unsuccessful-collab0 unsuccessful-collab1 ] links-own [ link-duration product-type progress partners-successes0 partners-successes1 partners-knowledge ] products-own[ life tech-level ] to setup clear-all create-firms firm-no ;; create the firms [ set shape "circle" setxy random-xcor random-ycor set resources initial-resources set resourcesi resources set firm-age 0 set knowledge-type knowledge-variety if knowledge-variety > 1 [ if random-float 100 < special-knowledge-likelihood [set knowledge-type random knowledge-variety set shape "triangle"] ] set knowledge-depth random ( max-init-knowl + 1) set knowledge-depthi knowledge-depth set resourcesi resources if resources > 0 [set size ln resources / 4 ] ] set-default-shape products "box" set progress-hurdle0 initial-hurdle set progress-hurdle1 initial-hurdle end to go ask patches [set pcolor black] ask firms [ if resources > max-resources [set max-resources resources]] ask firms with [resources <= 0] [ set firm-deaths firm-deaths + 1 if firm-age > oldest-death [set oldest-death firm-age] if max-resources > biggest-death [set biggest-death max-resources] if knowledge-depth > wisest-death [set wisest-death knowledge-depth] die ] if count firms = 4 [ stop ] if stop-at-5000? [if ticks >= 5000 [stop]] ask firms [ set firm-age firm-age + 1 if knowledge-depth > 0 [set knowledge-depth knowledge-depth + regular-knowledge-gain] if knowledge-type = knowledge-variety [set shape "circle"] if knowledge-type < knowledge-variety [set shape "triangle"] if resources > 0 [set size ln resources / 4] ] ask firms [set my-radius (partner-radius + (radius-increase / 100) * ln (firm-age + 1))] create-newfirm move learn partner collaborate age-products if (highest-tech0 * (min-tech-hurdle / 100)) > initial-hurdle [set progress-hurdle0 highest-tech0 * (min-tech-hurdle / 100)] if (highest-tech1 * (min-tech-hurdle / 100)) > initial-hurdle [set progress-hurdle1 highest-tech0 * (min-tech-hurdle / 100)] tick do-statistics end ;======================================================================================== ; basic stuff to create-newfirm if count firms < max-firms [ if random 100 < firm-spawn [create-firms 1 [ set shape "circle" set size 2 ;; easier to see setxy random-xcor random-ycor ask patches in-radius 2 [set pcolor white] set resources initial-resources set firm-age 0 set knowledge-type knowledge-variety if knowledge-variety > 1 [ if random-float 100 < special-knowledge-likelihood [set knowledge-type random knowledge-variety set shape "triangle"] ] set knowledge-depth random ( max-init-knowl + 1) set knowledge-depthi knowledge-depth set resourcesi resources set firm-births firm-births + 1 ] ]] end to move ask firms [rt random 50 lt random 50 fd 1] ifelse logged? [ask firms [set resources resources - (oper-costs * (1 + (3 * ln ( successful-collab0 + successful-collab1 + 1)))) ]] [ask firms [set resources resources - (oper-costs * (1 + ((successful-collab0 + successful-collab1) * admin-factor))) ]] end to learn ; ask firms [set knowledge-depth knowledge-depth + knowledge-gain] end ;======================================================================================== ; partnering to partner let new-partner nobody if any? firms with [any? other firms in-radius my-radius ] [ ask firms with [any? other firms in-radius my-radius] [ if count my-links < link-capacity [ if random 101 <= partnering-likelihood [ if any? other firms with [count link-neighbors < link-capacity] with [not link-neighbor? myself] in-radius my-radius [ set new-partner one-of other firms with [count link-neighbors < link-capacity] with [not link-neighbor? myself] in-radius my-radius create-link-with new-partner set knowledge-check0 [knowledge-type] of self set knowledge-check1 [knowledge-type] of new-partner ask link-with new-partner [ set link-duration 0 if knowledge-check0 != knowledge-check1 [set product-type 1] ]] ] ] ] ] end ;observer> ask turtles with [shape = "arrow"] with [color = red ] [fd 5] ;======================================================================================== ; collaborating and launching products to collaborate ; ask links [ask both-ends [set resources resources - dev-costs]] ;; old linear/fixed development costs ask links [set partners-successes0 (sum [successful-collab0] of both-ends) set partners-successes1 (sum [successful-collab1] of both-ends)] ask links [ ifelse product-type = 1 ;; decision tree for special products [ ifelse link-duration >= devtime-max [ if progress < progress-hurdle1 [ask both-ends [set unsuccessful-collab1 unsuccessful-collab1 + 1 set gunsuccessful-collab1 gunsuccessful-collab1 + 1 ] set tech-leveltmp [progress] of self ask both-ends [set knowledge-depth knowledge-depth + (tech-leveltmp * (learning-failure / 100))] die] launch-product1] [ ifelse ambitious? [if progress >= progress-hurdle1 [ if random (partners-successes0 + 1) = partners-successes1 [launch-product1]]] [if progress >= progress-hurdle1 [launch-product1]] ;; firms with more successes are more likely to push further in dev. ] ] [ ;; decision tree for normal products ifelse link-duration >= devtime-max [ if progress < progress-hurdle0 [ask both-ends [set unsuccessful-collab0 unsuccessful-collab0 + 1 set gunsuccessful-collab0 gunsuccessful-collab0 + 1 ] set tech-leveltmp [progress] of self ask both-ends [set knowledge-depth knowledge-depth + (tech-leveltmp * (learning-failure / 100))] die] launch-product0] [ ifelse ambitious? [if progress >= progress-hurdle0 [ if random (partners-successes0 + 1) = partners-successes0 [launch-product0]]] [if progress >= progress-hurdle0 [launch-product0]] ] ] ] ;; closing bracket for collaborate decision tree ask links [add-knowledge] ask links [set link-duration link-duration + 1] end to launch-product1 ;; link procedure set tech-leveltmp [progress] of self ifelse tech-leveltmp > highest-tech1 [set highest-tech1 tech-leveltmp ask both-ends [set resources resources + ((tech-leveltmp * hightech-price1 * dev-costs) / 2)]] [ask both-ends [set resources resources + ((tech-leveltmp * lowtech-price1 * dev-costs) / 2)]] ask one-of both-ends [ hatch-products 1 [ set color red set total-red total-red + 1 set tech-level tech-leveltmp set size (ln tech-level) / 2 ]] ask both-ends [ if knowledge-type = knowledge-variety [set shape "circle 2"] if knowledge-type < knowledge-variety [set shape "triangle 2"] ; set resources resources + (product1-price * product-life) set successful-collab1 successful-collab1 + 1 set knowledge-depth knowledge-depth + (tech-leveltmp * (learning-success / 100)) ] set gsuccessful-collab1 gsuccessful-collab1 + 1 die end to launch-product0 ;; link procedure set tech-leveltmp [progress] of self ifelse tech-leveltmp > highest-tech0 [set highest-tech0 tech-leveltmp ask both-ends [set resources resources + ((tech-leveltmp * hightech-price0) / 2)]] [ask both-ends [set resources resources + ((tech-leveltmp * lowtech-price0) / 2)]] ask one-of both-ends [ hatch-products 1 [ set color blue set total-blue total-blue + 1 set tech-level tech-leveltmp set size (ln tech-level) / 2 ]] ask both-ends [ if knowledge-type = knowledge-variety [set shape "circle 2"] if knowledge-type < knowledge-variety [set shape "triangle 2"] ; set resources resources + (product0-price * product-life) ;; old product pricing set successful-collab0 successful-collab0 + 1 set knowledge-depth knowledge-depth + (tech-leveltmp * (learning-success / 100)) ] set gsuccessful-collab0 gsuccessful-collab0 + 1 die end ; to add-knowledge ;; link procedure, old development-procedure: random base + added progress proportional to partners' combined knowledge ; ; set progress progress + (random (random-progress)) ; set combined-knowledge (sum [knowledge-depth] of both-ends / 2) ; set progress progress + ((ln combined-knowledge) * experience-multiplier) ; end to add-knowledge ask one-of both-ends [ set contribution (knowledge-multiplier * (ln (knowledge-depth + 1))) ;;* ((1 + (ln (successful-collab0 + successful-collab1 + 1)* experience-multiplier) ))) set resources resources - (contribution * dev-costs) set accum-dev-costs accum-dev-costs + (contribution * dev-costs) ask other-end [set contribution (knowledge-multiplier * (ln (knowledge-depth + 1))) ;; * ((1 + (ln (successful-collab0 + successful-collab1 + 1)* experience-multiplier) ))) set resources resources - (contribution * dev-costs) set accum-dev-costs accum-dev-costs + (contribution * dev-costs)] ] if random (101 - ((1 + (ln (partners-successes0 + partners-successes1 + 1)* experience-multiplier) ))) < dev-risk [set progress progress + (sum [contribution] of both-ends)] end ;to collaborate-old ; ask links [ if link-duration > devtime-max [ ifelse product-type = 1 [ ; ask one-of both-ends [ if random 100 < success-rate [ hatch-products 1 [ ; set color red ; set heading 180 ; set total-red total-red + 1 ; ]]] ; ask both-ends [set resources resources + (product1-price * product-life)] ; die ; ] ; ; [ ; ask one-of both-ends [ if random 100 < success-rate [hatch-products 1 [ ; set color blue ; set heading 180 ; set total-blue total-blue + 1 ; ]]] ; ask both-ends [set resources resources + (product0-price * product-life)] ; die ; ]] ; ask both-ends [set resources resources - dev-costs] ; set link-duration link-duration + 1 ; ] ; ;end ;======================================================================================== to age-products ask products [set life life + 1 set color color - 0.1 if life >= 40 [die]] ; if color ; [ ; ask products with [life > product-life] [die] ; ; ask products with [ycor > -16] [fd .1] ; set life life + 1 ; ] end ;======================================================================================== to do-statistics set-current-plot "firms-counter" plot count firms set-current-plot "sum-resources" plot sum [resources] of firms set-current-plot "tech-dev-plot" set-current-plot-pen "prod0" plot highest-tech0 set-current-plot-pen "prod1" plot highest-tech1 if max [firm-age] of firms > oldest [set oldest max [firm-age] of firms] if max [resources] of firms > biggest [set biggest max [resources] of firms] if max [knowledge-depth] of firms > wisest [set wisest max [knowledge-depth] of firms] end ;======================================================================================== ;to hippo-mate ; ask hippos [ if pcolor = blue [ ; let mate count other hippos in-radius shy-ness ; if mate = 1 ; [ if random 100 < fertility [hatch 1 rt random-float 360 fd 1]]]] ; end ; to hippo-die ; ask ufos [ask patches with [pcolor = green] in-radius tractor-beam [set pcolor yellow]] ; ask hippos [ if pcolor = yellow [ die ]] ; end