Announcement

Collapse
No announcement yet.

Coding the "Society Model"

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #46
    "Uzbekistani high plateau with forest wandering gypsy style itinerant worker who nevertheless has a stake in some tribal land and is a Muslim with heretical views"

    good one, Gary!

    Very briefly, this is what was on my mind when I was creating last models versions for social/govt/riots (to help you get a better idea of the models, how they're supposed to work and the problems with their "size"):
    Usually there'll be as many nationalities as players (civs). Do not confuse nationalities with EGs! (see below)
    The number of religions will be equal to the number of nationalities plus a few more (around 5 more).
    The number of social classes will be around 8. (slaves, clergy, aristocracy, etc)

    (Note:above numbers are a good proxy for the standard whole-history game)

    An EG is, simply put, a unit of population with given characteristics living in a given location.

    Suppose a player has an empire with 2 provinces. In one of them there're greek and roman populations. Greeks follow the "greek paganism" religion, while romans partialy follow "roman paganism" and the rest follow christianity. Then, you have 3 EGs: one with roman nat and christianity as religion, other with roman nat and roman paganism as religion and other with greek nat and greek paganism as religion.
    In the other province there's also a roman population, also divided between christianity and roman paganism, there's no greek pop, but there's a german population, part of which is christian and the rest embracing german paganism. Here you'd have 4 EGs.
    So, the player's empire has a total of 7 EGs, each having 8 social classes. Each social class has preferences for govt policies and structure (i.e. political preferences).

    For govt negotiation we aggregate social classes political preferences in political blocks. The number of political blocks is fixed and equal to 5. Then polblocks and the ruler negotiate to create govt decisions.

    The number of EGs can vary along the game. FE, roman pagans can be totally assimilated into christianity, thus eliminating the EGs with roman nat and roman paganism as religion.


    Note: Here I assumed EGs are handled at the province level. If they're managed at the mapsquare level you'd have more of them. You'd have as many roman-christians EGs as tiles populated by roman-christians.

    Comment


    • #47
      That was pretty much what I had expected, except I didn't know the numbers you had in mind - 8 social classes makes me very relieved.

      I think that the problem (my problem, actually), is in establishing an object hierarchy. If an ethnic group is a characteristic of a province, do they operate totally independently of an otherwise identical ethnic group in another province?

      Also, this system rather implies that provinces are fixed entities. On this basis, Portugal could never come to exist because it is part of Iberia. I feel the restriction of making provinces immutable is going to take quite a lot out of the game.

      On the other hand, if provinces are alterable, we have to have a plan to manage the ethnic groups in them. If two provinces are amalgamated, how do we determine which ethnic groups are actually identical?

      Personally (as I think I said in an earlier post in this thread) I would have an ethnic culture to which each ethnic group belongs. If provinces are amalgamated, ethnic groups belonging to the same etnic culture will be amalgamated, with a weighted average (by population) of any opinion parameters. So ethnic culture determines religion and culture, not attitudes, except insofar as they derive directly from religion or culture.

      Also, although I feel that ethnic groups should be province wide, with a uniform set of opinion parameters over the whole province, I believe that the actual population, that is. the numbers on the ground, should be specified at the square level. Thus, as you move through a province like Africa, the proportion of Berbers to Romans in a square can change.

      At this level population is the only parameter (apart from a pointerto the province ethnic group). The extra data, from the point of view of the code, is completely manageable, and I think the extra realism is worth the effort.

      What I don't want is that the Uzbekistani, etc, in this square has a different attitude to some social factor to an otherwise identical individual in the next square.

      Cheers

      Comment


      • #48
        Hi Gary:

        I am with the spec at the end of the previous post. I though it was what we'd already agreed to, but I guess the weighted-average approach wasn't explicitly stated.

        Provinces were always supposed to be fluid from way back. That is the kind of provinces that are envisioned in the model. But per your suggestion a few months back we changed it so that provinces can be fixed, at least over long periods of time, and the squares only change hands. What is called a Province in the govt/social model should be understood to be the total of all the squares controlled by a given civ in a static province.

        So when a square changes hands from Roman Gaul to Native Gaul, there is no change in population of any Roman or Gaul EGs, but we do a population-weighted-average shift in the Province-level EG characteristics of the Native Gaul province as appropriate. No change is needed in the Roman ones since that group has just lost population, but the characteristics will remain the previous values.

        Rodrigo:

        Just to let you know, I didn't get a chance to make any of the changes you mentioned above in the "Clash testbed" govt/social code. I hope you can make some sense of it. If it is more frustrating than useful at this point, just put it aside until I get back from vacation.
        Project Lead for The Clash of Civilizations
        A Unique civ-like game that will feature low micromanagement, great AI, and a Detailed Government model including internal power struggles. Demo 8 available Now! (go to D8 thread at top of forum).
        Check it out at the Clash Web Site and Forum right here at Apolyton!

        Comment


        • #49
          I agree, Gary. I don't want either having social differences at the mapsquare level. That's why I support the idea of handling EGs at the province level (how their variables change, etc). And I also agree about the need of handling populations at the mapsquare level to manage rearrangements of territories (new province sizes and military conquests). Managing provinces like Mark says would leave us without any problem.

          Where I don't share your opinion is when you say there should be some kind of high level culture/ethnicity EGs make reference to.
          I think that the problem (my problem, actually), is in establishing an object hierarchy. If an ethnic group is a characteristic of a province, do they operate totally independently of an otherwise identical ethnic group in another province?
          The problem is you're assuming germans in two different provinces should be identical. I understand your point of view: we're talking about the same ethnicity (in the normal sense of the word) but only in two different locations. But, as I've said in the past, although it's true that they'll be identical in the beginning, we must treat them as if they're independent from one and other in order to simulate cultural divergence. If we force all spanish population to be socially identical regardless of their location, then it's hard to model how spaniards in the new world changed their position, fought the spanish king and created new nations. Or, in the german case, we have to allow divergence so we can get germans in one place become french while others become austrians.
          Instead of forcing EGs to respond to a meta-culture, we should simply manage them individually. If they recently were divided geographically, all their attributes will be the same, thus making them behave in the same way. But the liberty of variables to diverge gives us the chance to model a "culture split".

          Mark:
          Hey, thanks for your welcome and good luck in your own vacations! hope you see a colored sea world with your snorkling!!

          I checked the testbed and looks good. Maybe I didn't get it right, but it looks no negotiation procedure is implemented yet.... I saw govt profile change only when I changed ruler's preferences.
          I hope one of the first things you do when you come back is add a button where we could see social classes political preferences.
          Anyway, I think we'll have to wait for your return to continue this thread.

          Comment


          • #50
            The problem is you're assuming germans in two different provinces should be identical. I understand your point of view: we're talking about the same ethnicity (in the normal sense of the word) but only in two different locations. But, as I've said in the past, although it's true that they'll be identical in the beginning, we must treat them as if they're independent from one and other in order to simulate cultural divergence. If we force all spanish population to be socially identical regardless of their location, then it's hard to model how spaniards in the new world changed their position, fought the spanish king and created new nations. Or, in the german case, we have to allow divergence so we can get germans in one place become french while others become austrians
            If they have diverged, then they should remain separate. If they haven't diverged, they should be amalgamated. One of the factors must be how long the have been separated. If it has been for two months they are unlikely to have diverged.

            The problem with providing a divergence mechanism and no amalgamation mechanism, is that eventually we will be back to a square based ethnic group system. A map of the world showing only political sub-divisions (square ownership), without ever lumping things back together, so that, if at some time some area has been under different control, the areas should be shown separately, will have the world chopped up into very small areas indeed. New Zealand, with an area of 15 squares would be cut into around 38 different areas.

            So, without an amalgamation system, we are back to the 20,000 different ethnic groups.

            Cheers

            Comment


            • #51
              I suppose that groups within a province could diverge also, though we probably would not have too great a problem with this unless a player designated the whole of Eurasia as a province (which they could do).

              Cheers

              Comment


              • #52
                Originally posted by roquijad
                I checked the testbed and looks good. Maybe I didn't get it right, but it looks no negotiation procedure is implemented yet.... I saw govt profile change only when I changed ruler's preferences.
                I hope one of the first things you do when you come back is add a button where we could see social classes political preferences.
                Anyway, I think we'll have to wait for your return to continue this thread.
                Hi Rodrigo. If you look carefully the Ruler options are limited when you enter them. They are limited by doing the negotiation procedure implicitly. As discussed in detail above, the Ruler highest possible value to select is that which would have him making a preference of 100%, and similarly for the lowest.

                BTW there is a Lot of info in the government.text file that you can check while running the program and after. It is detailed, quantified information about important stuff. Please check it out when you get a chance. It can make more clear why the exact limits there are on the ruler-selected values are chosen. I think there's more for you to look over I will have web access during my vacation, so don't give up on it yet!
                Project Lead for The Clash of Civilizations
                A Unique civ-like game that will feature low micromanagement, great AI, and a Detailed Government model including internal power struggles. Demo 8 available Now! (go to D8 thread at top of forum).
                Check it out at the Clash Web Site and Forum right here at Apolyton!

                Comment


                • #53
                  Future govt profile problem

                  Hi Rodrigo:

                  I have been looking at section VIII. Creating the Future Govt Profile for your approach to negotiation. It looks like there is a problem in the approach, in that under certain circumstances you'll get a divide-by-zero. Specifically for Political Powers of Political Blocks:

                  The political power of political block X in the Future Govt Profile is determined as:
                  S+PS+NS

                  where:
                  PS=(MX/Abs(V1))*Min(Abs(R-S),M)*Sign(1+Sign(R-S))
                  NS=(MX/Abs(V2))*Min(Abs(R-S),M)*Sign(-1+Sign(R-S))
                  MX=Max(Abs(V1),Abs(V2))
                  V1 is the sum of the expressions Min(Abs(R-S),M)*Sign(1+Sign(R-S)) over all Political Blocks.
                  V2 is the sum of the expressions Min(Abs(R-S),M)*Sign(-1+Sign(R-S)) over all Political Blocks.
                  S is the political power of political block X in the Preliminary Govt Profile.
                  R is the political power of political block X in the Ruler's Govt Profile.
                  M is as defined above.

                  where:
                  M=exp(-3+3*RULERPW)
                  RULERPW is the ruler's political power in the Real Political Structure
                  S is the variable's value in the Preliminary Govt Profile.
                  R is the variable's value in the Ruler's Govt Profile.
                  The problem is that if R-S is positive for all PBs in expression V2 then V2 = 0 making NS undefined. This problem condition will occur frequently when the ruler takes an extreme position that is "high".

                  One further point I would raise is that this is all very complicated compared to the method I used when I didn't know this existed. I talk about it above, but essentially the Ruler can set any value between Low and High for a negotiated policy or PB power level. Low is determined as if the Ruler negotiated just as a PB with a preference of 0. High is the same but with 100%. That approach is simple, clear, and follows the logic of the rest of the system. Other than the results being slightly different, it seems to give the same general answers as yours. Is there some special reason that the approach in section VIII is better than the simple straighforward one that is alread coded? I admit that given that I have other things to do than spend an hour implementing the above, the already coded part has its advantages .

                  BTW you made the point in your "return" post that you though my approach required frequent player intervention whereas yours didn't. The approach I used doesn't require frequent player intervention any more than yours does. The limitation on player choice is just the way the interface works now, because that is what I had thought we'd agreed to. If we changed the interface to allow arbitrary choices, then if the ruler wants they can set a value at 100% even though the near-future value could be at most 65% or whatever. So long as we automatically redo the negotiations every 10 turns or so without the player needing to intervene, that 100% could possibly be reached without player intervention. So although the approach I used might have other failings, I think increased player interface use isn't one of them.

                  And in other areas... the discussion that I started with

                  One thing I Am worried about is that it seems the player can consolidate power, and get it to 100% fairly rapidly with the current system.
                  Good Job Rodrigo, your response more or less convinced me things are fine as your model currently has them. At least assuming there aren't big problems in playtesting.

                  Cya,

                  Mark
                  Last edited by Mark_Everson; February 17, 2002, 11:02.
                  Project Lead for The Clash of Civilizations
                  A Unique civ-like game that will feature low micromanagement, great AI, and a Detailed Government model including internal power struggles. Demo 8 available Now! (go to D8 thread at top of forum).
                  Check it out at the Clash Web Site and Forum right here at Apolyton!

                  Comment


                  • #54
                    Mark, you're right on the "future govt problem". It is possible and with high probability that those equations go undefined. Although the system you propose instead may work for policies, it has problems with power distribution. The problem is polpowers may not sum 100% after ruler intervention in negotiations. The more complex mechanism I invented and you cited was created to guarantee a 100% sum.

                    An example: suppose there're only two polblocks (and the ruler) as political entities. The current distribution is:
                    block1 30%
                    block2 30%
                    ruler 40%

                    suppose low and high values allowed for the ruler are:
                    block1 10% 50%
                    block2 10% 50%
                    ruler 20% 60%

                    suppose ruler wants:
                    block1 0%
                    block2 40%
                    ruler 60%

                    the values the ruler wants for block2 and himself are within the ranges, but that's not true for block1. The final values would be:
                    block1 10%
                    block2 40%
                    ruler 60%
                    -----------
                    sum 110%

                    So, we need a mechanism to guarantee 100% w/o chances of going undefined. I'll think about it.


                    ********************
                    BTW you made the point in your "return" post that you though my approach required frequent player intervention whereas yours didn't.
                    No, my main concern was the speed of changes. Under the current code, changes happen from one turn to the next (given all values ruler entered are within allowed ranges) and changes are also independant from game turn length. The creation of a future govt profile gives us control over the speed of changes and that's IMO a must. Maybe I wasn't clear enough in that other post.

                    *********************
                    Mark: I'm Very lost in the testbed. I'm not understanding things well, it seems. The mails you sent me didn't help me much either....

                    For example:
                    - in the govt main screen the ruler has preferences, but the numbers are different to those shown when editing ruler's prefs.
                    - when editing ruler's pref, there's only a limited range of options for each policy. That shouldn't be so.
                    - there's no file in the /people and /social subdirectories I can open. Or at least I don't know with what program I should open them.
                    - the txt file you sent me shows more polblocks than the number of them we should have. There is a Labor block and a People's block...

                    It seems you'll have to explain things to me like I'm a 6-years-old...

                    Comment


                    • #55
                      Hi Rodrigo, sounds like I needed to add a few clarifications to the previous info...

                      Originally posted by roquijad
                      Mark, you're right on the "future govt problem". It is possible and with high probability that those equations go undefined. Although the system you propose instead may work for policies, it has problems with power distribution. The problem is polpowers may not sum 100% after ruler intervention in negotiations. The more complex mechanism I invented and you cited was created to guarantee a 100% sum.
                      The approach I've been using assumes the Ruler makes a Valid choice for political power. That is all powers must sum to 100%. This can be Ensured in the software but isn't for now (though it is stated clearly where the ruler enters the powers that they must add to 100%). Provided the Ruler makes a Valid power selection my method is guaranteed to result in power in the correct range.

                      No, my main concern was the speed of changes.
                      Ah, that one is simple. The future govt profile simply takes immediate effect now because I have ignored the gradual change part. That is simply because I haven't done it yet! I agree with you it must be put right, but seemed less important than the other things I needed to do.

                      Mark: I'm Very lost in the testbed. I'm not understanding things well, it seems. The mails you sent me didn't help me much either....

                      For example:
                      - in the govt main screen the ruler has preferences, but the numbers are different to those shown when editing ruler's prefs.
                      Sorry, I should have told you... the Ruler Prefs one is what the player uses. The other one is what a scenario creator would use. It allows immediate and arbitrary change in the power distribution of the govt. It was something F_Smith put in that I didn't take out. Maybe I should have.

                      - when editing ruler's pref, there's only a limited range of options for each policy. That shouldn't be so.
                      I agree. Recall I was using my approach above, because I Missed your whole section VIII. The sliders show what the player's choices are that can be implemented in the current cycle of govt. action. That is, the low is the value if the player were to choose 0 for the policy or power, and the high is that if the player chose 1. The player is choosing the Final policy values, to avoid the "machiavellian ruler effect". But of course the player should be able to select numbers outside that range as Eventual targets. That didn't occur to me when I was doing the coding! The way I did it does have the advantage that the player knows what can be achieved in This cycle.

                      The reason I am pushing just a little bit to leave it that way is (first, I'm lazy, and second...) that with your approach the player won't know if the chosen policy will take effect or not. In either case, what is in there now, or your methods using section VIII, we need a way for the player to enter any valid value, and also a way to let the player know what that value will result in for the govt profile. Both your approach and mine can be fixed to do that relatively easily, I think.

                      In summary I just want to try a bit to convince you that my approach works ok. If we go back and forth a bit, and you're still not convinced I will (almost) happily do it the "section VIII" way, once you fix the equations so they are guaranteed to work.

                      - there's no file in the /people and /social subdirectories I can open. Or at least I don't know with what program I should open them.
                      if you look in ClashTestbed/game/people FE there should be a bunch of .java files. They can be read by any text editor, FE notepad, or "dropped on" Word. Same for /social.

                      - the txt file you sent me shows more polblocks than the number of them we should have. There is a Labor block and a People's block...
                      Like I thought I said, just IGNORE the Labor one. Pretend it doesn't exist. It is a mistake that I couldn't get rid of in 5 minutes. I wanted to get the testbed out before I left on the vaction that it turned out didn't happen. Labor is not in the GUI, just those text outputs. I will fix it when I can.

                      Sorry my previous explanations weren't clear. These may not be either since I"m home sick and my brain is barely functional! I hope these responses help at least resolve some of the issues.

                      I'm not sure if I mentioned it, but if you play the game long enough with either your side or the other taking territory (in the first, top, scenario) you will see discrimination-based riots. I freely admit the code isn't all there, and perfect, but it does do several things already.
                      Project Lead for The Clash of Civilizations
                      A Unique civ-like game that will feature low micromanagement, great AI, and a Detailed Government model including internal power struggles. Demo 8 available Now! (go to D8 thread at top of forum).
                      Check it out at the Clash Web Site and Forum right here at Apolyton!

                      Comment


                      • #56
                        I have been going over the social model code as reworked by Mark, and am quite impressed by his efforts in producing an object oriented version. I think that his appreciation of OO methods is quite a bit more advanced that he admits. As far as I can ascertain, his most significant failing in this area is a tendency to argue with me from time to time.

                        Nevertheless I have a couple of questions about the model.

                        The first relates to the equations.

                        RULERPW (ruler power) is a complicated function of NRULERPW (current government ruler power), in Section I of the equations.

                        On the other hand, in section IX of the equations, NRULERPW is a complicated function of RULERPW.

                        Are these supposed to be solved as simultaneous equations, or what?

                        My other problem, is that the whole model depends rather strongly on the population distribution among social classes.

                        Section X, "Determining the demographic share for a social class" has the text: NOT SOLVED YET.

                        It rather seems to me that if we have no means of determining the distribution of social classes, then we really cannot use them. However, it is possible that an intial distribution can be set by the scenario, unchanging for the whole game.

                        Which leads to the other thing that is lacking in the model - initial values in general. Are these all supposed to be set by the scenario?

                        Cheers
                        Last edited by Gary Thomas; February 26, 2002, 13:55.

                        Comment


                        • #57
                          I order to simplify the input of scenario data, I have devised a couple of constructs. These do not affect the model, but make it easier to specify and hold certain pieces of data.

                          The constructs are: Milieu, which contains social data common to all civilizations in a scenario. In particular, in many cases, it will contain the list of known regimes. It seems, for example, unlikely that Carthage will know about a regime that Rome does not, and conversely.

                          Also, to reduce micromanagement of the scenario design process, I have introduced a class called SocialProfile which contains a list of social classes (with their social role specifications) and a population proportion of each. Since there is, at least for the present, no mechanism for these proportions to change, these values will remain stable for the whole game. These SocialProfiles can be global (as, for example, Regimes and Religions are) or local to a scenario. Probably a mixture of both.

                          Cheers

                          Gary

                          Comment


                          • #58
                            Section X, "Determining the demographic share for a social class" has the text: NOT SOLVED YET.
                            I had tried to do that, plus figure out how government interacts with economy in the Goverment-Economic models interconnections thread, which was based on a spreadsheet I had made. My model was rather detailed but since a couple of things have changed, it is quite out of date. Since it has never been official, this is not available in the website, but I can send it to you by email if you are really interested.

                            The problem is that perhaps we will have to revise some of that stuff pretty soon. I will have a look at this again and perhaps, if I have time, I will present you with a proposal that will be befitting of our current progress and our future prospects.
                            "In a time of universal deceit, telling the truth is a revolutionary act."
                            George Orwell

                            Comment


                            • #59
                              Thanks.

                              I would assume that, as a first approximation, we can assume that each of the social classes breeds true and the proportions remain constant. Then, when we get a little more sophisticated about the forces that undermine the upper classes, or promote the middle classes (or even the workers, though I don't think that that has ever actually happened), we can introduce modification factors.

                              Cheers

                              Comment


                              • #60
                                Yes, in fact, until we really need anything more complex than what you propose, alot of time will pass. For now, do what you propose.
                                "In a time of universal deceit, telling the truth is a revolutionary act."
                                George Orwell

                                Comment

                                Working...
                                X