The Paranoid Imaginarium of Roger L'Estrange
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
The Paranoid Imaginarium of Roger L'Estrange
WHAT IS IT?
This model simulates the censorship practices of the seventeenth-century book trade in London under state licenser Roger L'Estrange. It creates a field of bookshops and highly politicized readers. It is designed to simulate, not so much the history of the seventeenth-century print marketplace, but the history of how censors imagined the reading public they were tasked with policing.
The model is designed to simulate the impact that seditious publication might have had on a reading public during the hand-press era. As politically engaged books are circulated through a population, that population becomes either more or less radical, perhaps leading towards the revolution that censors fear and hope to prevent.
HOW TO USE IT
The SETUP button initializes the model. Brown bookshops are distributed around the world, as are a number of readers and informers. Slider bars control the number of each breed created at initialization. Additionally, the slider bars on the top right, "number-of-radicals" and "number-of-propagandists" create additional "reader" turtles with special properties.
Readers' behavior is determined by several variables: color, expressivity, and money. All readers will seek out books of their own color. They gain money every tick and use money to buy books. Each reader also has an "expressivity" score that increases gradually with each tick; when the expressivity score reaches 1, the reader produces a manuscript and its expressivity score is returned to baseline level. Readers are defined primarily by their "opinion" score. As they move about, the talk to each other, read books, and their opinions gradually change. When a reader's opinion score falls below -.9, it is considered a "radical."
Manuscripts are composed by readers and given to booksellers. They are "published" by hatching a number of books that share their variables. They maintain a "profit" score, which increases whenever a copy is sold, and profitable manuscripts are chosen for reprinting.
Booksellers collect manuscripts and publish them as books. Books are passive objects owned by booksellers and readers. They have appeal and a price. Books slowly lose their appeal, and if they remain too long in the booksellers' inventory, they die. They are hatched in identical batches from manuscripts. Like readers, they have an opinion score and if they are radical (-.9 or lower) they are marked by the color red.
At the start of each tick, informers check to see if there are radical readers or books in their vicinity. If so, they move around and hunt for seditious books. If informers find a red colored bookstore in their region, that destroy all the books and manuscripts and send the bookseller to prison. If "hunt-authors" is activated, informers will also kill radicals that have published multiple books.
The simulation will STOP if one of three conditions are met. If more than 50% of the population turns radical (revolution succeeds), if all persuadable readers are rendered docile (revolution fails), or if the system reaches 3,000 ticks (equilibrium/stability).
THINGS TO NOTICE
As the model runs, watch to see if the revolution succeeds. What factors seemed to influence the outcome?
How does the system react when a radical book is published?
Follow the informers.
THINGS TO TRY
Try varying the number of "radicals" or "propagandists" at initialization. How do they change behavior of the system?
Try toggling the "hunt authors" option. How does turning on the "hunt authors" option affect the outcome?
Try increasing or decreasing the income rate. How does that affect reader behavior?
EXTENDING THE MODEL
In the seventeenth century, informers hunted authors much the way law enforcement today tracks drug dealers--they captured peddlers on the street and then tried to get information up the chain of supply. In this model, there is no anonymity, and informers are able to identify and execute radical authors. A procedure could be included, when informers raid bookstores, of gaining information from the sellers about the authors of the books they distribute.
CREDITS AND REFERENCES
The model was inspired most directly by: Jody Greene. The Trouble with Ownership: Literary Property and Authorial Liability in England, 1660-1730. Philadelphia: University of Pennsylvania Press, 2005.
Copyright
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
This model was created by Michael Gavin, University of South Carolina. 2014.
Comments and Questions
;; The Paranoid Imaginarium of Roger L'Estrange ;; Michael Gavin, University of South Carolina ;; ;; Breeds created at initialization. breed [readers reader] breed [booksellers bookseller] breed [books book] breed [manuscripts manuscript] breed [informers informer] globals [ bookshops-raided ; record of informer behavior authors-executed ; record of informer behavior crowds-dispersed ; record of informer behavior book-age-threshold ; global variable that determines book life-span tolerated-publications ; global variable that determines informer behavior ] turtles-own [ opinion ] ; all turtles (books and people) have opinions on scale of -1 , 1 booksellers-own [ my-manuscripts ; (agentset) sellers keep track of owned manuscripts my-books ; (agentset) maintain inventory imprisoned ; (true/false) can be imprisoned time-served ; (numerical) keep track of time served ] readers-own [ my-books ; (agentset) readers carry books with them my-manuscripts ; (agentset) readers sometimes write new manuscripts publications ; (numerical) number of successful publications initial-expressivity ; (numerical) baseline desire to write, normal distribution expressivity ; (numerical) current fluctuating state of desire to write defensiveness ; (numerical) determines how readers respond to others' opinions talent ; (numerical) determines quality of a reader's manuscripts initial-money ; (numerical) baseline money level, normal distribution money ; (numerical) current fluctuating state of money ] manuscripts-own [ my-owner ; (agentset) current owner of manuscript my-author ; (agentset) creator of manuscript my-copies ; (agentset) books hatched from manuscript book-age ; (numerical) number of ticks since hatch title ; (numerical) randomly generated ID number editions ; (numerical) record of printings appeal ; (numerical) appeal of text, normal distribution profit ; (numerical) record of profit generated for seller price ; (numerical) price, normal distribution ] books-own [ my-owner ; (agentset) current owner my-author ; (agentset) original creator book-age ; (numerical) number of ticks since hatch appeal ; (numerical) appeal of text, taken from parent manuscript price ; (numerical) price of text, taken from parent manuscript title ; (numerical) title of text, taken from parent manuscript ] to setup ca set bookshops-raided 0 set authors-executed 0 set crowds-dispersed 0 set book-age-threshold 50 ; global variable (could be converted to slider bar) set tolerated-publications 2 ; global variable (could be converted to slider bar) ; creates readers (randomized properties) set-default-shape readers "person" create-readers number-of-readers [ set opinion 1 - random-float 2 ifelse opinion < -.9 [ set color red ] [ set color violet + opinion ] set talent random 10 set initial-expressivity (1 - random-float 1) set expressivity initial-expressivity let defensiveness-randomization random-float 10 ifelse defensiveness-randomization > 5 [ set defensiveness one-of [ 1 -1 ] ] [ set defensiveness 1] set initial-money random 10 set money initial-money set my-books nobody set my-manuscripts nobody set publications 0 set size 2 setxy random-xcor random-ycor ] ; creates readers with pre-determined properties typical of "radicals" create-readers number-of-radicals [ set opinion -1 ; strong negative opinion set talent 9 ; high talent set initial-expressivity .95 ; very expressive set expressivity initial-expressivity set defensiveness -1 ; very defensive set initial-money 0 set money random 10 set my-books nobody set my-manuscripts nobody set publications 0 set size 2 setxy random-xcor random-ycor ] ; creates readers with pre-determined properties typical of "propagandists" create-readers number-of-propagandists [ set opinion 1 ; strong negative opinion set talent 9 ; high talent set initial-expressivity .95 ; very expressive set expressivity initial-expressivity set defensiveness -1 ; very defensive set initial-money 0 set money random 10 set my-books nobody set my-manuscripts nobody set publications 0 set size 2 setxy random-xcor random-ycor ] ; create informers set-default-shape informers "person" create-informers number-of-informers [ set color white set size 2 set opinion 0 setxy random-xcor random-ycor ] ; create booksellers set-default-shape booksellers "house" create-booksellers number-of-booksellers [ set color brown set size 3 set my-manuscripts nobody set imprisoned false setxy random-xcor random-ycor ] ; create books set-default-shape books "box" create-books number-of-readers [ set opinion 1 - random-float 2 ifelse opinion < -.9 [ set color red ] [ set color violet + opinion ] set my-owner one-of booksellers setxy ([xcor] of my-owner) ([ycor] of my-owner) ] ; set shapes for manuscripts (none created at initialization) set-default-shape manuscripts "star" reset-ticks end ; Go activates readers and booksellers. to go ask readers [ manage-books update-color discuss move buy-books ] ask booksellers [ check-for-booksellers-freedom ] ask informers [ determine-behavior ] if percentage-red >= 50 [stop] if not any? readers with [ opinion < -0.5 and defensiveness > 0 ] [ stop ] if ticks = 3000 [stop] tick end ; informer to determine-behavior let potential-rebels readers with [color = red] in-radius informer-radius let seditious-books books with [color = red] in-radius informer-radius if count potential-rebels + count seditious-books > 1 [ hunt-for-books ] end ; Hunting for books means that informers move around the screen and look for red booksellers to hunt-for-books rt random 20 lt random 20 fd .5 let booksellers-to-oppress booksellers with [color = red] in-radius informer-radius if any? booksellers-to-oppress [ ask booksellers-to-oppress [ ask my-books [ die ] ask my-manuscripts [ die ] go-to-jail set bookshops-raided bookshops-raided + 1 ] ] if count ( readers with [color = red ] in-radius informer-radius ) > 2 [ ask readers with [color = red ] in-radius informer-radius [ setxy random-xcor random-ycor ] set crowds-dispersed crowds-dispersed + 1 ] if hunt-authors = true [ let authors-to-oppress readers with [ color = red and publications > tolerated-publications ] if any? authors-to-oppress in-radius informer-radius [ ask one-of authors-to-oppress [ hatch 1 [ set opinion 1 - random-float 2] ask my-books [die] ask my-manuscripts [die] die ] set authors-executed authors-executed + 1] ] end ; booksellers do this when raided to go-to-jail set imprisoned true set color black set time-served 0 serve-time end ; while imprisoned, booksellers count down their sentences to serve-time set time-served time-served + 1 if time-served >= sentence-length [ set imprisoned false ] end ; if they're free, sellers manage their inventory to check-for-booksellers-freedom ifelse imprisoned = false [ manage-inventory ] [ serve-time ] end ; 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. to manage-inventory set my-books books with [my-owner = myself] ifelse any? my-books with [color = red] [set color red] [set color brown] ask my-books [ setxy ( [xcor] of myself) ( [ycor] of myself) age] set my-manuscripts manuscripts with [my-owner = myself] ask my-manuscripts [ setxy ( [xcor] of myself) ( [ycor] of myself) ] let old-manuscripts my-manuscripts with [editions > 5] ask old-manuscripts [die] if count my-manuscripts > 0 and count my-books < (2 * 25) [ reprint ] end ; 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-capital. to age if my-owner = one-of booksellers [ set book-age book-age + 1 set appeal appeal - depreciation-rate if book-age > book-age-threshold [ let my-original manuscripts with [title = [title] of myself] ask my-original [ die ] die ] ] if my-owner = one-of readers [ set book-age book-age + 1 if book-age > book-age-threshold [die ] ] end ; "Reprint" is a command that booksellers give to their ; manuscripts. Each manuscript looks through the agentset of books that ; share their title. If the capital of books has been depleted, and if the ; title has been profitable, it will be reprinted. If too many copies of the ; book remain unsold when the title loses appeal, all copies of the book are ; pulped, and the manuscript is retired. -- NOTE: As written, this command ; leads to overproduction and certain bankruptcy for booksellers. It must be improved. to reprint if count my-manuscripts >= 1 [ ask max-one-of my-manuscripts [my-copies] [ set editions editions + 1 hatch-books 25 ] ] end ; Readers move about randomly, always updating their "my-books" agentset and ; carrying those books along with them. to manage-books set my-books books with [my-owner = myself] ask my-books [ setxy ([xcor] of myself) ([ycor] of myself) ] if any? my-books [read-books ask my-books [ ; set appeal appeal - (depreciation-rate / 2) ; but their holdings gradually become obsolete and die. if appeal <= 0 [die] ] ask my-manuscripts [ set appeal appeal - (depreciation-rate / 5) if appeal <= 0 [die] ] ] set my-manuscripts manuscripts with [my-owner = myself] ask my-manuscripts [ setxy ([xcor] of myself) ([ycor] of myself) ] if any? my-manuscripts [solicit-publishers] set money money + income-rate set expressivity expressivity * 1.001 if expressivity >= 1 [ compose ] end ; Here is the major function that this version includes. The readers trade ; opinions as they more around. to update-color ifelse opinion < -.9 [ set color red ] [ set color violet + opinion ] end ; When agents "discuss" they update their opinion score based on the mean of all ; turtles within their radius. to discuss let discussants turtles in-radius gossip-radius let zeitgeist mean [ opinion ] of discussants ifelse opinion * zeitgeist > 0 [ set opinion opinion + ( zeitgeist * .001 ) ] [ set opinion opinion + ( zeitgeist * .001 * defensiveness) ] if opinion < -1 [ set opinion -1 ] if opinion > 1 [ set opinion 1] end ; This is a simple rule for updating readers' opinion. Basically, they read their books ; every click. If both the "discuss" and "read-books" procedures are called, this ; basically counts the books twice. This is probably not an ideal way of dealing with ; books, and I think these two procedures should be joined into a single "update-opinion" ; function. to read-books let my-reading mean [opinion] of my-books ifelse opinion * my-reading > 0 [ set opinion opinion + ( my-reading * .001 ) ] [ set opinion opinion + ( my-reading * .001 * defensiveness) ] end to move ifelse ( opinion < 0 and money > 10 ) [ let books-for-me books with [ color = red and my-owner = one-of booksellers ] if any? books-for-me [ face min-one-of books-for-me [ distance myself ] ] rt random 50 lt random 50 ] [ rt random 50 lt random 50 ] ifelse (count readers with [color = [color] of myself] in-radius gossip-radius) > 2 [ fd 0.5 ] [ fd 1.5 ] end ; readers with manuscripts are always on the lookout for publishers to solicit-publishers if any? booksellers in-radius 3 [ ; notice that publishing radius is set arbitrarily to 3. could be converted to slider bar let publisher one-of booksellers in-radius 3 let offered-manuscript max-one-of my-manuscripts [appeal] if [appeal] of offered-manuscript > [price] of offered-manuscript [ ask offered-manuscript [ set my-owner publisher ] set publications publications + 1 ] ] end ; when "expressivity" reaches 1, readers compose manuscripts ; note that "opinion" is not explicitly mentioned below, but that ; manuscripts automatically have the opinion score of their parent turtles to compose hatch-manuscripts 1 [ set size 1 set my-author myself set my-owner myself set book-age 0 set title random-float 100 set appeal ([talent] of my-author - random-float 10) set price 10 - random-float 9 ] set expressivity initial-expressivity end ; When readers buy-books, they create an agentset "books-to-buy" of ; nearby books. Eligible books must be owned by a bookseller and be priced below the ; reader's money level. Among the bookseller's collection, the reader will focus on books ; of the same color or books that are especially appealing. Incurious readers are ; not likely to purchase any book outside their preferred type (color). From the "books-to-buy" ; agentset, the reader chooses one book at random and buys it. to buy-books let books-to-buy books in-radius 1 with [ ; creates agentset of nearby books that meet one of the following two sets of (my-owner = one-of booksellers with [ imprisoned = false ] and ; criteria: must be owned by a bookseller, same color, and affordable color = [color] of myself and ; price <= [money] of myself) or ; or, (my-owner = one-of booksellers and ; book's appeal (randomly adjusted) must overcome the reader's incuriosity. (appeal + random-float 2 - random-float 2) >= price and price <= [money] of myself) ] let chosen-book one-of books-to-buy ; Among the eligible books, reader chooses one and if chosen-book != nobody [ ask chosen-book [ set my-owner myself ; asks chosen-book to update its "my-owner" variable let my-original manuscripts with [title = [title] of myself] ask my-original [ set my-copies my-copies + 1 ] ] set money money - [price] of chosen-book ; reader's money is depleted ask manuscripts with [title = [title] of chosen-book] [ set profit profit + [price] of chosen-book] ; money is subtracted, and the purchase is complete. ] end to-report percentage-red let R count readers with [color = red] let A count readers report R / A * 100 end ;; ;; ;; ;; END ;; ;; ;;
There are 3 versions of this model.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
The Paranoid Imaginarium of Roger L'Estrange.png | preview | Preview for 'The Paranoid Imaginarium of Roger L'Estrange' | over 10 years ago, by Michael Gavin | Download |
This model does not have any ancestors.
This model does not have any descendants.