[BUG?] Popularity went from 77% to 2% With No Understandable Reason

Hi all,
I’m on 1.086
Wanting to report something weird and I can’t figure it out. I am playing USA and was doing reasonable, slowly moving a bit left. At about 6 turns to the next election, right after I did a cabinet reshuffle of 4 to get them all green and happy, my popularity went from 77% to 2%.

The only other thing I did on that policy was increase Technology Colleges, which take 4 turns to go into full effect. The ‘Everyone’ group has me trending exactly the same as well. I looked through the top 5 most popular groups from Everyone down and none of them have a big drop in popularity. Capitalist, Middle Income, Liberalist, Religious, Environmentalist, Conservatives show no change to their Happiness.

I’ve created a Save Game right after this happens if anyone wants to look at it let me know. Couple screenshots below for context, hopefully this helps a bug —or maybe I’m just a bad leader :stuck_out_tongue:

Lets see how approval rate calculated (I suggested weighted average, adjusted by electioneering stuff), popularity should be simple average of approval rates.

Approval rate is scaled from 0 to 1, there is 1.06%, or 0.0106
To make it -1 to 1 we need to double and then subtract 1 - its -0.9788
Clearly voter approval is not average, while it should be.
Currently its partially normalized value - good thing for most of things.
Membership/opinion stats:
1, -0.16
1, -0.09
0.98, -0.36
0.89, -0.89
0.85, -0.13
0.85, 0.04
0.63, -0.96
0.59, -0,34
0.53, 0.18
Electioneering stuff doesn’t influence this voter.
Weighted average: Sum of memberships*opinions/Sum of memberships.
-1.746627/7.32 = -0.23861
Scaling back to 0 - 1: 38.07 approval rate.

This voter dislikes you for various reasons, but hates you as commuter and motorist.
End result should be bit stronger dislike nor outright hate.
For terrorist stuff even voter who loves you, but hates you as one of voter groups should at least have chance joining peaceful protests group - single issue voters are a thing in reality. Especially if you have fake news and polarization active.
Voter is 1/2000 of population, that can vote.
Probably some countries would need bigger or smaller latent distrust in government as country grudge, making more likely for voters to join certain pressure groups.
Also pressure group should ask you to minimize/maximize happiness impact of most hated/loved policies, if such change is possible.

Without averaging its too easy to reach 100% popularity.

I may experiment with this, play a few games and see how it changes things. Its quite a fundamental change so I am wary of screwing stuff up!

Ha. Actually amusingly when doing this, I end up with this distribution for the start of the USA (normal difficulty)

Which results in 99-100% popularity. Basically peoples opinions are very calmed down, but the campaigning ability of the cabinet is pushing them upwards, and thus everyone is just slighlt yabove 50%. No party membership but 100% support :smiley:

I think that sanity lies somewhere in the middle. I should point out that the current build (1.09) has the normalisation rate for everything the game set to 82%*, whereas it might make sense to leave that,m but set it to maybe 85 or 90% for voters. I shall experiment.

*FWIW you can edit that yourself in data/simconfig.txt. its NEURON_NORMALIZATION_SCALAR

1 Like

Is cynicism and complacency done separately after voter group happiness normalization?
That is normalized voter happiness (would exclude cynicism and complacency) + cynicism + complacency.
This way cynicism and complacency would always work at full strength.
Maybe cynicism and complacency should be much more powerful?
For example even 50% happiness would trigger 10% complacency, and 100% happiness would trigger 75% complacency.
Cynicism could wary +25% at extremes too.

Also why popularity is 100% if it should be less than 75% according to this pic?
Maybe make voter approval proportional to chance of vote for you.
So voter having 50% approval has 50% chance to vote for you.
It can be x - constant or x^2 or whatever.

I guess electioneering stuff, loyalty, activism and stuff was build around old system.

Maybe something more akin to softmax could work better.
Basically, people can be members of many groups, but they can only vote once, and they are gonna care quite a bit more about things they strongly identify with than about things they just kinda identify with (but certainly those things should still matter)

This voter is

  • 100% Everyone (0.4)
  • 100% Self Employed (0.21)
  • 100% Wealthy (-1)
  • 86% Ethnic Minority (0.48)
  • 70% Capitalist (-0.85)
  • 67% Conservative (-0.54)
  • 61% Patriot (-0.14)
  • 53% Environmentalist (0.87)

The current calculation nets her an approval rate of 48.43%

Using Softmax, depending on the exponent, will emphasize what’s more important. A base of 1 means literally every piece of approval will count the same regardless of membership - an unweighted average. This is definitely not desired.
Base 1

At higher exponents, the things the voter identifies with the most are the things most likely to cause them to change their vote.
There is one small problem: The Everyone group is always at 100% so it probably has more influence than it should. (This is debatable) Here’s two versions, once with Everyone’s influence at 100% and once with it counting as if anyone only is half way in Everyone at 50%.

Base e

At very high exponents only the strongest group memberships matter with the other things only causing minute differences. (note how the normalized memberships below 86% base membership contribute less than 10% of the overall approval)
Base 1000

Effectively that exponent represents how opinionated people are. It could also serve as an extremely simple polarization mechanic as Fake News represents: Just increase the base! People will be more opinionated.

Here is an example of somebody who loves me instead:

At base 1 approval ends up being dramatically lower

Considering membership in this way further hurts it (base e)

At extremes, it becomes even lower but doesn’t necessarily die outright. It’s gonna tend towards Trade Unionist, Middile Income, Envionrmentalist average opinion, with Liberal having influence for a very long time as well. If only those groups mattered (and did so equally), approval would bottom out at like 0.62875 or, if even Liberal influence fades away, 0.57167. It’d take extremely bases to make that happen though, and at base 1000, opinion is still higher than those values:

One slightly strange thing about this variant is, that 0 membership does, in fact, also add a small contribution. It will inevitably be tiny (unless you use a base very close to 1) but it will be there. Due to the nature of the exponential function, it always being positive, any collection of real numbers, even very large negative ones, will end up being turned into a set of values normalized between 0 and 1 such that their sum will be 1.
I’m not sure if you, behind the scenes, calculate the weighted sum over all categories or just the shown ones.

But since values outside the 0-1 range work, you could, if you wanted to, have some sort of multiplier like “activism”, perhaps derived from complacency of the given group, which can push effective membership beyond this range to even more strongly emphasize particular opinions. I’d argue that’d more likely happen for stuff people disagree with you about, simulating the common problem where people who agree with you are less likely to vote than people who hate your guts (because “eh clearly things are fine so why bother” vs. “This person is killing everything I believe in they HAVE to GO”)
But I’d consider that future possibilities and not necessarily something you’d want to pursue right now.

Here is the table I built for this:

This is all very interesting stuff, and makes for some interesting comparisons. Its true that there is a LOT of data that currently exists based on the relatively simple system that is already in place.
I need to give this careful consideration.
Also I should point out that there are already (hidden) systems in game that already make people with moderate views (in line with the current state of the country). noticeably less likely to vote (because the status quo is fine for them). You should notice a higher turnout if you have a more divided country or take extreme stances.


Undoubtedly neat stuff here. I still think though that something isn’t quite right with the playthrough I attempted. I really didn’t do anything crazy with big policy shifts…and even if I did…some people should’ve liked that haha.

To go from 77% positive to 2% seems crazy.

1 Like

The current build is missing a pending bug fix which will alter the difficulty of the game a fair bit. Basically a lot of influences that triggered negative events (such as hurricanes) were simply not working, so not only was the game missing some content effectively, it was also too easy, because many bad things never happened…

I think I’ll let those changes go in, along with another country (Germany in soon!) before i revisit the balancing of this calculation.


@cliffski you can check all dilemmas too - same bug could have happened.
Also someone reported dilemma without text

Have all these calculations been worked out now?