From Earlham CS Department
October 28 I have found three papers on some old version of the 'racial neighborhood segregation' cellular automaton. I will read these papers and for tomorrow will try to add some probabilistic features to my Netlogo simulation.
October 29 Today, I met with Jim, and we talked about the possible extensions we can do to the automaton. I told Jim that I am going to finish adding the probabilistic features in the next few days. We also looked at the papers I was talking about and did not necessarily find any new magnificent implementation ideas about them. Still, it seems that those papers are going to be useful for the paper.
October 30 Today I finished adding probabilities to my simulator. So here are the news: About 2/3 of the time, the patch color stays the same. Of the other 1/3, what color the patch will become depends on the colors of the neighbors (the color of the patch itself not included) and there always is a 1/17 (which is about 6%) chance that it will randomly selected (1/3 chance for each color).
I also made the colors probabilistic, where now blues and greens are majorities (equally likely), where the reds are minorities (only about 1/11 of the population initially are reds). One thing that helps reds catch up is the mechanism explained above, where the probability of a red emerging is the same.
Now I am thinking that maybe we should make two different versions of this simulator, so that we can compare: 1- One or two gossips/superstitions/religions/beliefs/whatever we call it come about, and people tend to believe and tell more depending on how many times they heard each one. 2- Same thing, but this time there is also lingual fractionalization. So greens and blues can speak only their own languages, while the reds are the bilingual minorities.
October 31 Today I created a project page and placed a project summary in it. Of course, it still does not have to be the final final idea, but to me it seems that it might be.
November 1 Okay, I have made up my mind. There should be three different versions, which we compare. Which variables we are going to choose is still ambiguous, however, that should be evident soon. The three versions of the simulator that I am going to implement and compare are:
1- Racial fractionalization (the on I finished on October 29). 2- Racial-linguistic fractionalization (the one I explained on October 29). 3- Racial-linguistic-religious fractionalization. This one is the most complicated one. This one starts out as the racial-linguistic fractionalization simulator. However, after a number of ticks (when the simulator is coming closer to an equilibrium), two different religions/beliefs come up in the two major races (Greens and Blues). They cannot, however, talk to each other, as only Reds are bilingual (religion spurs out of blues to greens and vice versa, via Reds only). However, being of a different religion acts as an extra segregation factor.
November 2 I am still trying to decide, what variables we should be looking at. The definitely important variables are:
- The percent of the cells have at least one neighbor that is of a different race - The percent of the cells that are of the majority race in their neighborhood
November 3 I am done with the racial-linguistic version also. The probabilistic structure of the racial segregation model was a two-step process. Just tampering with the second process a little gave me a nice racial-linguistic segregation model.
November 4 & 5 Today, I am working on the variables to be outputted. Right now I am developing the code, so that it will output and plot some variables (starting with, but not limited to the ones on November 2) in a given time.
Right now the program uses text for output, but I think, I will make them into graphs as soon as possible.
November 6 I am thinking about what to do about the paper. Maybe, one solution is, not just talking about the project itself, but also about the evolution of the project and the small-sized programs we created before we ended up with the finished job.
November 7 Today I went to Jim's office hours. We decided that, for monday, I am going to be working on the gossip simulator from the Netlogo models library. Although we seem to be still improving the idea of what the final product will become, it seems that we will use the idea of the gossip simulator to implement the idea of "religion/belief" into the simulator. Of course, ours is going to have significant differences. For example, in the gossip simulator, there is only one gossip, whereas, we will make our simulator emerge two religions. Furthermore, ours is going to be probabilistic (so, someone who has heard the news is not certainly going to tell one's neighbors).
Then we will have 2 switches. One is deciding, whether or not there is discrimination based on color. The other one is to state whether or not there is discrimination based on religion. Similarly, we are thinking of adding other switches, such as, whether the transfer or the religion between different colors is slower/harder.
November 8 Good news. This religion thing just had its first step. Now we have two religions come out at random places in the grid. People start out as 0, depending on under the effects of which religion they stay, they go higher (up to 10, religion A) or lower (down to -10, religion B). The coloring also worked out very nicely. If the value is lower than 0, the color of the cell becomes darker (i.e. red becomes dark red), and if it is higher than 0, it becomes lighter (i.e. blue becomes bright blue). Soon we have two seperate groups of light and dark.
November 9 Now, I think we should have 3 switches. One is religion on-off switch. Basically, when we do not have that, it becomes no different than what we mostly finished on November 3 (then we just have different colored people and two languages). When we choose that to be on, we have two more switches. One is, whether we have discrimination based on color while transferring religion - so when it is active, inter-color religion transfers are harder. The second switch states whether we have discrimination based on religion, in which case, people have a slight preference to reside near people of their own religion.
So, tonight, I finished implementing the first of these switches. By the way, my computer is still having trouble adding some stuff into the graphical user interface, but I am placing them into the program as global variables, and my plan is to ameliorate it later on the ACLs.
November 10 & 11 The news are great. I did not finish implementing 2 of the 3 switches I explained above, but added some others, which I finished implementing. Now the program has some cool functionalities. The additions include:
1- A graph plot, which plots three variables: The percentage of people that are in majority in respect to color, the percentage of people that are in majority in respect to religion and the percentage of people that are in majority in respect to both. The lingual majority issue I have not placed into the graph, because Jim did not approve that yet, but we can add it if he does.
2- We implemented the prefer same religion switch (I talked about it on November 9). If they prefer same religion, and if someone new comes to a cell, that person has to be of the same religion (but does not have to believe to the same extent). If they do not prefer same religion, then a random person comes in.
3- We have the religious mood variable (the sum of the religious values of the neighbors plus that of the cell, divided by 9).
4- Now we have the "religion already there" switch. So, religion does not have to start from two points, but we can start with religion already there (everyone is assigned a random religion in the beginning. And that crates some crazy textures.
5- Now the new person who comes to a cell does not have to have the exact same religion as the people that come in. Before, if the religious value of a patch was 5, for example, the newcomer was having 5 as the religious value also, which did not make sense, now it is fixed.
November 12 I went to Jim's office hours, and showed him the developments. Now we seem to have three main issues: 1- The religion is running on top of race, unrelated to the color segregation. It is as if two different filters are shown on one screen. How will we combine these two?
2- How will we increase the validity of the project? For this, Jim gave me homework, to find some other automata and find out their parameters and find out my own parameters.
3- The graphical user interface still is insufficient. What can we do to increase the control of the user over the essential variables?
November 12-November 15 I am looking at a variety of segregation automata, but most of them are so similar.
To combine religion and color segregations, one simple solution might be, placing an extra, slight, prejudice. We can check at any given time the average level of belief in any single group. That might have an extra effect on the probability of that group's members believing in that religion at that level. We should still think how exactly we will implement that, but vaguely, this is some beginning point.
November 16 Here is the parameter listing I sent to Jim:
1- Netlogo segregation model's parameters:
- Number (of people): 0 to 2500
- %similar wanted: 0 to 100
Output monitors/graphs: Percent similar, percent unhappy
2- Netlogo rumor mill model's parameters:
- Eight mode (eight neighbors or four neighbors): on/off
- init-clique (the percent of people that know the rumor initially): 0 to 10
- setup one: place one starting dot
- setup random: place multiple starting dots
Output monitors/graphs: rumor spread, successive differences, successive ratios
3- My program's parameters (so far):
- religion ;; whether to have religions come out or not (1 for religion, 0
for no religion) (no religion = usual segregation simulator)
- transferdiscrimination ;; 1 means it is harder to transfer from the
member of one race to the member of another 0 means spreads freely
- prefersamereligion ;; 1 means people prefer to have members of the same
religion around them
- religionalreadythere ;; 1 means people start already with some religion
- I will add another parameter for religious segregation only/no color
segregation this week
My program's outputs (so far):
- nowithdifferent ;; the number of cells that have a neighbor of
different type around them
- nocolormajority ;; the number of cells that are color-wise in the
majority in the neighborhood they are in
- nolanguagemajority ;; the number of cells that are language-wise in the
majority in the neighborhood they are in (this is not approved yet)
- noreligionmajority ;; the number of cells that are religion-wise in the
majority in the neighborhood they are in
- nomajority ;; the number of cells that are in all respects in the
majority in the neighborhood they are in
November 17-19 Jim wanted me to keep looking for still more companies, plus, these days I will be working on the implementation of the stuff. Even more, I have to keep thinking about the paper and upcoming presentations.
Jim also wanted me to add the religion-only option, where the simulator can demonstrate only religious segregation. The simulator had an option to have religion or not (when there is no religion, it becomes the basic color segregation). Now, when the new religion-only option is activated, all the people become of blue color, and all the newcomers become blue also, so there is only religious segregation left.
November 20-22 As I explained before, one of my problems was adding sliders and switches into the graphical user interface. Any object that had an 'i' letter in it, was causing problems as a result of Turkish/English Windows differences. Anyway, I opened the file with Wordpad, and realized that the file format was human readable. So, I added some sliders, monitors and switches, which I edited later on from the inside of the program. I will totally finish the graphical user interface as soon as I come up with all the variables.
For now, I have a bunch of switches. While adding them, I came across some other types of problems. For example, I was always using the form
if (<variable name> = 1)
however, this created a large problem, as later on I realized that switches return 'true' or 'false' and not '1' and '0' as I thought they would. Eventually I found a way to get around this problem.
Plus, I think the 'majorityoverall' value,
November 23 Here are a few extra parameter listings I sent Jim:
Visulalising Segregation: Segregation Simulator, Version 2 URL: http://www.dartmouth.edu/~segregation/version2.html
Parameters: City grid size Number of colors (2 or 3) Population percentages (how much vacant, red and blue) Maximum radius (2, 5, 10, 20, Unlimited)
Outputs: A bunch of segregation indices/some ratios
Segregation simulator - small URL: http://www.wayner.org/texts/seg/012298segregate-sim2.html
Parameters: Mouse Draws: Red blocks, blue blocks, empty blocks, closed blocks Neighbor comfort threshold: 0, 1, 2, 3, 4 Neighborhood Radius: 1 or 2
Outputs: Visual output only
November 24 At last, I have implemented this color-to-religion relation. First, I added a second graph to the user interface. So, other than the main 'results' graph object, we now also have the 'Color by religion' graph. Of course, to be able to add such a graph, I ended up needing to add some extra lines of code and many variables.
Then I moved onto the 'colorsreligious?' switch. When this switch is on, at each tick of the main clock, the average heardvalue of each color is calculated. Then this value is placed into a formula. The formula is:
average heardvalue = (((colorsreligiouseffect - 1) * <heardvalue of the current patch>) + (<total of heardvalues of the cells of the same color with this cell> + <the number of cells that are of the same color with this cell>)) / colorreligiouseffect
here, colorreligiouseffect being a user-defined value, defined by means of a slider placed on the graphical user interface.
Hence, if colorreligious effect is 10, this means, a cell's religion is defined by the sum of 9 units of its own heardvalue and 1 unit of its color's average heardvalue divided by 10. Thus, this number is inversely proportional to the effect of the cell's color's heardvalue's effect on the cell's heardvalue.
All these, it seems, is going to be good amount of material for the presentation.
November 25 Tonight, I am concentrating on my presentation only.
November 26 Today I went to Jim's office hours. It seems that 'colorsreligious' and 'colorreligiouseffect' values are building in a particular type of behavior into the program. Thus, in this case, global behavior is not resulting from local behavior as it should. So we decided to take the parts I added about those two variables out. I will still discuss those values in the paper, in the failed experiments section (or in some section with some similar name).
Anyway, there are good news though. First is that we have an alternative idea that, we think, will result in a similar effect with 'colorsreligious' and 'colorsreligiouseffect' values but from local behavior this time. Basically, we will add a switch and a slider to slow down the transfer of religion between cells of two different colors. Jim also gave me some formulae to think about. Furthermore, Jim told me that he thinks after we add these last changes, the project will be pretty much done.
In the evening, I concentrated on preparing for my presentation (I prepared some notes and presented about three times to my bedroom.
November 27 I presented what has been going on so far. I only mentioned and did not elaborate on the 'colorsreligious' and 'colorsreligiouseffect' values as we are going to take them out.
November 28 & 30 I added the 'differenttransferrates' switch. When it is on, the rate for inter-color religion transfer changes. The 'transferrate' slider sets how much exactly this rate is. When 'transferrate' is 0, there is no difference between transfers. Basically, it becomes the same as if 'differenttransferrates' switch is off. When it is 100, religion is transferred only between the cells of same color. The higher the number is, the harder it is for religion to transfer from one cell of one color to another.
This took me some time to figure out though. The problem was, I knew how to add some particular value of all neighbors, but I did not know how to add some particular value of some particular type of neighbors. Eventually, I found out the 'with [<condition>]' phrase.
So, for example, the sum of heardvalues of the neighbors is: sum values-from neighbors [heardvalue]
Similarly, the sum of heardvalues of the neighbors, those of which that are red, is: sum values-from neighbors with [colorred = 1] [heardvalue]
December 1 & 2 I added the 'environmentorself' slider. This allows the user to choose the weight of the heardvalue of the cell versus the sum of the heardvalues of the neighbors. If 'differenttransferrates' switch is on, then the sum of the heardvalues of the neighbors of the same color is also added into the equation. If the slider is 0, the heardvalue of the cell depends only on itself, which means basically, the heardvalue is not affected from the environment. 100 means, when the heardvalue is being reassigned (in the next tick of the cellular automaton's clock), the former heardvalue is not considered, but only the heardvalues of the neighbors. If it is 50, these values are equally considered, and so on.
December 3 I worked on debugging these functions and tested some of them under different conditions.