Booktrade
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
Bookshops
Purpose
This simulation explores the causes and indirectly observed behaviors of seventeenth-century London booksellers. It examines when and how books run through multiple editions, when they are held for sale, and when they are reverted to pulp. Its main purpose is to test the relative importance of production and inventory costs to booksellers' success.
Entities, state variables, and scales
The model contains the following entities: readers, booksellers, books, and manuscripts. Each reader is assigned a single, unchanging state variable, "money." Money for readers does not represent an account that rises and falls, but instead represents their general purchasing power. Readers maintain collections of books (kept as a list of titles). Booksellers are hatched in random positions but do not move. They maintain a money account ("capital") that increases and decreases as they sells and publish books. They produce and maintain collections of books and manuscripts. If they go too deeply into debt, they goes bankrupt and die. If all booksellers die the simulation stops.
Manuscripts have unique and unchanging variables: title, price, appeal, my-owner. Books are hatched by manuscripts and retain their parents' variables. As books sit in a bookseller's inventory waiting to be purchased, their appeal gradually decreases. As their appeal falls, they are less likely to be purchased, and when their appeal reaches zero, they die.
The model is greatly compressed in time, space, and number. Each tick is meant to represent approximately one day of real time. The size of the space and the number of readers, books, and booksellers (versus seventeenth-century London) is reduced by an adjustable factor of approximately 100 to 1.
Money is not meant to directly reflect actual monetary units. Various price values are meant to be tested in relation to each other. What percentage of printing costs are fixed? What is the proportion between a book's average price and the volatility of a booksellers' capital account? What is the ideal proportion of print runs to book-buyers? How do changing financial conditions change the kinds of bookselling businesses that are successful.
Process overview and scheduling
Booksellers manage their inventory by looking through the agentset of their books and manuscripts. They ask their books to "age" and they look for opportunities to reprint existing manuscripts or publish new ones.
When first published, books are given an "appeal" score. Every tick, that score depreciates according to an adjustable rate. If the books lose all consumer appeal, the bookseller will sell them off at a cheap rate as paper-stock.
If a bookseller's inventory falls below the adjustable "inventory-to-print-run" rate, they review their existing manuscripts. They then call their manuscripts to perform the procedure "review-for-reprint." When reviewed, manuscripts check themselves to see if they remain viable. If no copies of the manuscript exist (that is, if the book failed to sell and all copies were destroyed), the manuscript is destroyed. If the manuscript is still selling, it will be reprinted.
If a bookseller's stock of manuscripts falls below the minimum level, he will print new ones.
Each tick, the following sequence of procedures is called:
- Readers move randomly and look for books to buy.
- If readers move through the bookstore, they might purchase a book.
- The bookseller examines inventory to see if it meets minimum quantity and diversity
- Bookseller calls inventory, the agentset "my-books," to perform procedures
- Books in inventory gradually decrease in appeal according to the "depreciation rate"
- Books with appeal zero die, then ask parent manuscript to retire.
- Bookseller publishes new books by asking existing manuscripts to hatch new books.
- The bookseller calculates his account and confirms that he has not gone bankrupt.
Design Concepts
Adaptation. The bookseller is constantly evaluating his inventory, discarding unsold books and attempting to maintain an inventory with maximum appeal.
Fitness. Fitness of a book is determined by how much appeal it has. If many copies sell, it will be reprinted and maintain its appeal. If it sits unsold, it will be pulped and its parent manuscript will be retired.
Prediction. The bookseller has no ability to predict the success of a newly published manuscript, but will reprint works that have sold well in the past. If a title fails to sell, it will not be reprinted.
Interaction. Readers choose books by weighing the books' appeal versus the books' price. (These interactions are adjusted randomly in each case.) The bookseller controls the books by managing his inventory.
Initialization
At set up, the bookseller is placed at the center and readers are distributed randomly. Various factors are controlled using sliders. These are:
1. Number of readers. Ranges from 0 to 500 in increments of 20. 2. Initial capital. Ranges from 100 to 1000 in increments of 20. This sets the booksellers' initial money account. 3. Overhead. Ranges from 0 to 1 in increments of .02. This decreases the bookseller's account each tick. 4. Average price. Ranges from 3 to 7 in increments of 1. This sets the average price of each book. 5. Depreciation rate. Ranges from 0 to .5 in increments of .1. This sets the rate at which books lose appeal each click. 6. Compositor rate. Ranges from 10 to 50 in increments of 5. This sets the fixed cost for any new edition. 7. Printing cost. Ranges from .1 to .9 in increments of .1. This sets the percentage of per-copy cost of new editions. 8. Print run. Ranges from 5 to 100 in increments of 5. This sets the average size of each print run. 9. "Inventory to print run." Ranges from .5 to 5 in increments of .5. This sets the ratio of inventory the bookseller keeps in relation to the average print run. 10. Minimum title diversity. Ranges from 1 to 10 in increments of 1. Sets the minimum number of book titles the bookseller will keep on hand at any moment.
Submodels
CREDITS AND REFERENCES
This model was created by Michael Gavin, University of South Carolina. 2013.
Comments and Questions
breed [readers reader] breed [booksellers bookseller] breed [manuscripts manuscript] readers-own [ book-list number-of-books money curiosity my-seller ] booksellers-own [ my-manuscripts min-title-diversity preferred-print-run price-target career-span capital ] manuscripts-own [ my-publisher title editions appeal price depreciation-rate book-age-threshold earnings expenses copies-on-the-shelf shelf-time viable failed-solicitations ] to setup ca ; Booksellers publish and distribute manuscripts. They have a capital of money, and if they slip ; into too much debt, they go bankrupt and die. set-default-shape booksellers "house" create-booksellers initial-booksellers [ set color brown set size 3 set career-span 0 set min-title-diversity 0 set preferred-print-run 200 - random 190 set price-target 0.5 + random-gamma 1 2 set my-manuscripts nobody set capital initial-capital setxy random-xcor random-ycor ] ; Readers' behavior is controlled by several variables: color, closed-mindedness, and money. All readers will ; seek out books of their own color. If they are curious (that is, not incurious) they will also ; look for books of different color. They gain money every tick and use money to buy books. set-default-shape readers "circle" create-readers number-of-readers [ set color 55 + random-float 4 set money 0.5 + random-gamma 1 2 set book-list [] set size 1.5 set curiosity random 100 set my-seller one-of booksellers setxy random-xcor random-ycor ] ; Manuscripts are owned by booksellers. They are "published" by hatching ; a number of books that share their variables. set-default-shape manuscripts "star" reset-ticks end ; Go activates readers and booksellers. to go tick ask readers [ determine-behavior ] ask booksellers [manage-inventory check-accounts] if not any? booksellers [ stop ] if mean [capital] of booksellers > initial-capital * 2 or mean [career-span] of booksellers > 500 [ create-booksellers 1 [ set color brown set size 3 set career-span 0 set preferred-print-run 200 - random 190 set price-target 0.5 + random-gamma 1 2 set my-manuscripts nobody set capital initial-capital setxy random-xcor random-ycor ] ] end to determine-behavior set curiosity curiosity + 1 if my-seller = nobody [ set my-seller one-of booksellers ] ifelse curiosity > curiosity-threshold [ buy-books ] [ move ] end ; Readers move about randomly and carry their books with them. to move rt random 50 lt random 50 fd 0.5 end ; Reader look for books to buy. The decision to purchase a book is based on ; a simple randomization of the books' appeal. to buy-books if my-seller != nobody [ face my-seller ] fd 1 if count booksellers in-radius seller-radius > 0 [ let temp-list [book-list] of self let books-to-buy manuscripts in-radius seller-radius with [ ; creates agentset of nearby books copies-on-the-shelf > 0 and ; must be owned by bookseller not member? title temp-list and (appeal + random-float 1 - random-float 1) >= price and ; appeal (randomly adjusted) must be higher than price price <= [money] of myself ; reader must have enough money ] let chosen-book one-of books-to-buy ; reader chooses one of the eligible books ifelse chosen-book != nobody [ let chosen-seller [my-publisher] of chosen-book set book-list fput [title] of chosen-book book-list set number-of-books length book-list set curiosity 0 ask chosen-seller [ set capital capital + [price] of chosen-book ] ; booksellers account is increased ask chosen-book [ set earnings earnings + price set copies-on-the-shelf copies-on-the-shelf - 1 ] ] [ set my-seller one-of booksellers ] ] end ; Booksellers check their inventory. to manage-inventory set capital capital - overhead set career-span career-span + 1 set min-title-diversity abs capital / 100 set my-manuscripts manuscripts with [my-publisher = myself] ask my-manuscripts [update-mss] if count my-manuscripts with [viable = true] <= min-title-diversity [ acquire-copy ] if count my-manuscripts with [copies-on-the-shelf > 0] < min-title-diversity [ print-mss ] end ; When sitting on the shelf, books lose appeal over time. to update-mss set appeal appeal - depreciation-rate if earnings >= expenses [ set viable true set shelf-time 0 ] if expenses > earnings [ set viable false set shelf-time shelf-time + 1 ] if shelf-time > book-age-threshold [ ask my-publisher [ set capital capital + ([price] of myself * pulp-rate) ] die ] if failed-solicitations > 5 [ die ] if appeal < 0 [ die ] end ; Bookseller creates a new title. to acquire-copy hatch-manuscripts 1 [ set size 1 set color 25 + random-float 4 set title random-float 100 ; The title create an identifier that can be inherited by copies set viable true set appeal 1.5 - random-float 1 set my-publisher myself set price [price-target] of myself - random-float .5 set depreciation-rate 0.01 - random-float .009 set book-age-threshold 700 - random 600 ] end ; Manuscripts "hatch" copies of themselves as books. When manuscripts hatch books ; those books retain the original's title, appeal, and price. to print-mss let chosen-manuscript one-of my-manuscripts with [ viable = true ] if chosen-manuscript != nobody [ set capital capital - (fixed-cost + ([price] of chosen-manuscript * (preferred-print-run * per-unit-cost))) ask chosen-manuscript [ set expenses expenses + (fixed-cost + ([price] of chosen-manuscript * ([preferred-print-run] of myself * per-unit-cost))) set copies-on-the-shelf copies-on-the-shelf + [preferred-print-run] of myself ] ] end ; Booksellers check to see if they have gone bankrupt. to check-accounts if capital < -200 [ ask my-manuscripts [ die ] die ] end
There are 2 versions of this model.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Booktrade.png | preview | Preview for 'Booktrade' | over 11 years ago, by Michael Gavin | Download |
This model does not have any ancestors.
This model does not have any descendants.