Competing Technologies (iPhone vs Blackberry) v4
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This is a classic model of forces competing for a limited resource. In this model, the two forces are Apple (iPhone) and Blackberry. The limited resource is customers, and the setting is the mobile market. These two forces accumulate income based on how many customers they have, and the user controls how these two forces invest that income.
This model shows how different methods of investment can drastically change the market share.
HOW IT WORKS
Customers are represented by circles. Orange circles signify iPhone users, and magenta circles signify Blackberry users. Marketing influence is represented by patches. The darker the patch, the more influence Blackberry has on that patch. The bluer and lighter the patch, the more influence iPhone has on that patch.
Setup: An inital amount of customers is created, with their phone choices already made. The patches are present, with a roughly 50/50 split between iPhones and Blackberries. Each customer has their own set of preferences, represented by a number. The larger the number, the bigger the preference. The preferences are:
- Susceptibility to marketing
- Preference to what their friends use
- Attraction to advanced technology
Each tick:
- New customers are introduced into the market. They follow an inverse exponential graph, unless the controlling switch is off.
- Both forces gain an income based on how many customers they have, and spend it based on user controlled sliders
- Marketing upgrade changes the color of one patch by one, and the cost of marketing does not change
- Technology upgrades cost increasingly more, unless the controlling switch is off
- New customers and customers renewing their contract make their decision based on the current environment and their personal preferences.
- Customers with contracts expiring remake their decision on a new phone
HOW TO USE IT
You control how the two companies spend their resources. Try and find the most optimal combination of spending for one corporation to spend their money so that the amount of customers using their technology is maximized. Or see how an equilibrium can be achieved. Or see what a corporation should avoid to not be completely wiped from the market.
You may adjust switches to see if they have any affect on the outcome of market share. You may also adjust the maximum adopters allowed slider to see how that affects the effectiveness of investment percentages.
You may also adjust the turtle size, if there are too many turtles on the screen.
This model may run a little slow at times, so try turning the speed to fastest.
THINGS TO NOTICE
When the model is run, at first it may seem that spending on technology dictates the market share, but be sure to wait for the model to run for a while, before noticing changes caused by marketing.
Take note of the population and marketing percentage if you see one techonology's market share surpass the other's, and compare it with other spending patterns.
THINGS TO TRY
Don't just keep the spending percentages the same throughout a run. Change it and see if any emergent behaviors occur as you change the sliders. This more realistically simulates a company, as they do not just have the same spending percentage throughout their entire lifespan.
Pretend that you are the CEO of one of the companies. If the competing company is ahead, what can you do to regain market share? If the competing company is behind, what can you do to secure your lead?
EXTENDING THE MODEL
There are many things that can make this model more realistic. Here are some suggestions.
- Phone technology is tricky to model, as there are milestones that technology reaches, which causes essentially all adoptors to never choose the phone which does not contain that milestone. For example, regardless of how good the marketing is for a flip phone, it is going to sell nominally compared to a touch screen phone.
- Add competition (bidding) for patch spots that more more densely populated. Allow population to also cluster. This simulates cities, and places that are expensive to advertise in, such as Times Square.
- Have customers change their friends around, based on people around them, and personal preference.
- Have customers walk around in random paths, and befriend other customers which have similar paths.
- Have companies specifically target a patch which has a density of customers not using their technology.
Comments and Questions
breed [customers customer] turtles-own [group-pref phantom-group-pref tech-pref influence-by-marketing friends contract-time] globals [ iphone-resources blackberry-resources tech-iphone tech-blackberry iphone-upgrade-cost blackberry-upgrade-cost marketing-percentage-iphone patches-sum current-turtle-size current-friend-status growth-rate cost-of-marketing iphone-marketing-spending iphone-tech-spending blackberry-marketing-spending blackberry-tech-spending iphone-spent-on-marketing blackberry-spent-on-marketing iphone-spent-on-tech blackberry-spent-on-tech iphone-tech-next-stage blackberry-tech-next-stage iphone-marketing-next-stage blackberry-marketing-next-stage ] to setup clear-all initialize-variables set-default-shape customers "circle" create-customers initial-customers [ ifelse random 100 < initial-iphone-percent [ set color orange ][ set color magenta ] create-helper ] ask turtles [ create-links ] ask patches [ set pcolor 5 ] setup-marketing reset-ticks end to go set-go-variables set-marketing-variable add-resources spend-resources change-turtle-size update-friends-status update-growth-rate add-customers update-contracts-and-remake-decision-if-expired tick end to update-growth-rate ; this procedure updates the growth rate based on an inverse exponential function ifelse inverse-exp-growth? [ ifelse e ^ (ticks / maximum-new-adoptors) > maximum-new-adoptors [ set growth-rate maximum-new-adoptors ][ set growth-rate int (e ^ (ticks / maximum-new-adoptors)) ] ][ set growth-rate 1 ] end to add-customers ; introduce customers to the world based on the function given by update-growth-rate if ticks mod growth-rate = 0 [ create-customers 1 [ create-helper create-links set-phone-choice ] ] end to update-contracts-and-remake-decision-if-expired ; turtle proceture -- updates when their contract expires, and remakes their decision if expired ask customers [ ifelse contract-time = 0 [ set-phone-choice set contract-time 4 * 356 ][ set contract-time contract-time - 1 ] ] end to add-resources ; give each company an income based on the amount of customers they have set iphone-resources iphone-resources + count turtles with [color = orange] set blackberry-resources blackberry-resources + count turtles with [color = magenta] end ; this procedure also updates tech and marketing levels for both companies, after spending both company's income ; if the income is not enough to pay for a technology upgrade, the company still puts money towards it, but only ; gets the point after it has put enough money towards it ; this procedure also increases the technology cost as it updates to spend-resources ifelse random (iphone-tech-spending + iphone-marketing-spending) < iphone-marketing-spending [ set iphone-spent-on-marketing iphone-spent-on-marketing + iphone-resources if iphone-spent-on-marketing > iphone-marketing-next-stage [ if any? patches with [pcolor != 109] [ ask one-of patches with [pcolor != 109] [ set pcolor pcolor + 1 set iphone-resources iphone-resources - cost-of-marketing ] ] set iphone-marketing-next-stage iphone-marketing-next-stage + cost-of-marketing ] ][ set iphone-spent-on-tech iphone-spent-on-tech + iphone-resources if iphone-spent-on-tech > iphone-tech-next-stage [ set tech-iphone tech-iphone + 1 set iphone-tech-next-stage iphone-tech-next-stage + cost-of-marketing + tech-iphone * 300 ] ] set iphone-resources 0 ifelse random (blackberry-tech-spending + blackberry-marketing-spending) < blackberry-marketing-spending [ set blackberry-spent-on-marketing blackberry-spent-on-marketing + blackberry-resources if blackberry-spent-on-marketing > blackberry-marketing-next-stage [ if any? patches with [pcolor != 100] [ ask one-of patches with [pcolor != 100] [ set pcolor pcolor - 1 set blackberry-resources blackberry-resources - cost-of-marketing ] ] set blackberry-marketing-next-stage blackberry-marketing-next-stage + cost-of-marketing ] ][ set blackberry-spent-on-tech blackberry-spent-on-tech + blackberry-resources if blackberry-spent-on-tech > blackberry-tech-next-stage [ set tech-blackberry tech-blackberry + 1 set blackberry-tech-next-stage blackberry-tech-next-stage + cost-of-marketing + tech-blackberry * 300 ] ] set blackberry-resources 0 end to setup-marketing ; this sets the initial random gradient marketing environment on setup ask one-of patches [ set pcolor 104 ask-neighbors ] end to ask-neighbors ; this is a recursive procedure for patches let my-color pcolor ask neighbors [ if pcolor = 5 [ ifelse random 10 < 5 [ ifelse my-color + 1 > 109 [ set pcolor 109 ][ set pcolor my-color + 1 ] ][ ifelse my-color - 1 < 100 [ set pcolor 100 ][ set pcolor my-color - 1 ] ] ask-neighbors ] ] end to set-phone-choice ; turtles use this procedure to decide which which preference they will consider when choosing a phone let sum-of-preference group-pref + tech-pref + influence-by-marketing let r random sum-of-preference ifelse r < group-pref [ set-according-to-neighbors ][ ifelse r < tech-pref + group-pref [ set-according-to-tech ][ set-according-to-marketing ] ] end to set-according-to-neighbors ; this procedure is called if turtles prefer what their friends use over other preferences ifelse any? friends [ let blackberry-neighbors 0 let iphone-neighbors 0 ask friends [ ifelse color = orange [ set iphone-neighbors iphone-neighbors + 1 ][ set blackberry-neighbors blackberry-neighbors + 1 ] ] let r blackberry-neighbors + iphone-neighbors ifelse random r < iphone-neighbors [ set color orange ][ set color magenta ] ][ ifelse random tech-pref + influence-by-marketing < tech-pref [ set-according-to-tech ][ set-according-to-marketing ] ] end to set-according-to-tech ; this procedure is called if turtles prefer technology use over other preferences ifelse tech-blackberry < tech-iphone [ set color orange ][ set color magenta ] end to set-according-to-marketing ; this procedure is called if turtles are more susceptible to marketing over other preferences ifelse random 10 <= pcolor - 100 [ set color orange ][ set color magenta ] end to create-links ; this is a turtle procedure which sets a random amount of friends for each turtle if random 100 < 40 [ set friends min-n-of random 15 turtles [distance myself] ] end to initialize-variables ; initialize variables at setup set patches-sum count patches set iphone-resources 0 set blackberry-resources 0 set tech-blackberry 0 set tech-iphone 0 set current-turtle-size turtle-size set current-friend-status 999 set cost-of-marketing 3000 set iphone-spent-on-marketing 0 set blackberry-spent-on-marketing 0 set iphone-spent-on-tech 0 set blackberry-spent-on-tech 0 set iphone-tech-next-stage cost-of-marketing set blackberry-tech-next-stage cost-of-marketing set iphone-marketing-next-stage cost-of-marketing set blackberry-tech-next-stage cost-of-marketing end to create-helper ; this sets up the variables required whenever a customer is introduced into the world--mostly personal preference variables setxy random-xcor random-ycor set size turtle-size set friends no-turtles set group-pref random-normal 10 3 set phantom-group-pref group-pref set tech-pref random-normal 10 3 set influence-by-marketing random-normal 10 3 set contract-time 4 * 356 end to set-go-variables ; this procedure updates spending for companies, and is updated every tick set iphone-marketing-spending percentage-spent-on-marketing-iphone set iphone-tech-spending 100 - percentage-spent-on-marketing-iphone set blackberry-marketing-spending percentage-spent-on-marketing-blackberry set blackberry-tech-spending 100 - percentage-spent-on-marketing-blackberry end to change-turtle-size ; this procedure updates the size of turtles, and is called at every tick if current-turtle-size != turtle-size [ set-turtle-size set current-turtle-size turtle-size ] end to set-turtle-size ; ; this is a helper procedure used by change-turtle-size ask turtles [ set size turtle-size ] end to update-friends-status ; this procedure updates the status of friends, and is called at every tick if current-friend-status != friends? [ ifelse friends? [ set-back-group ][ set-group-zero ] set current-friend-status friends? ] end to set-group-zero ; this is a helper procedure used by update-friends-status ask turtles [ set group-pref 0 ] end to set-back-group ; this is a helper procedure used by update-friends-status ask turtles [ set group-pref phantom-group-pref ] end to set-marketing-variable ; this procedure updates the the percentage of marketing influence iphone has in the world. let iphone-sum 0 ask patches [ set iphone-sum iphone-sum + pcolor - 100 ] set marketing-percentage-iphone iphone-sum / (9 * patches-sum) end
There is only one version of this model, created about 12 years ago by Felix Hu.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
EECS 372 Proposal.pdf | Original Project Proposal | about 12 years ago, by Felix Hu | Download | |
FelixHu_June2.docx | word | June 2nd Progress Report | about 12 years ago, by Felix Hu | Download |
FelixHu_May20.docx | word | May 20th Progress Report | about 12 years ago, by Felix Hu | Download |
FelixHu_May27.docx | word | May 27th Progress Report | about 12 years ago, by Felix Hu | Download |
Final Report.docx | word | Final Report | about 12 years ago, by Felix Hu | Download |
Hu_Felix_Slam.pptx | powerpoint | Slam Powerpoint Presentation | about 12 years ago, by Felix Hu | Download |
poster.ppt | Poster | about 12 years ago, by Felix Hu | Download |