Mechanism details of the AD-algorithm
Each proposal has a certain accumulated support, which is represented by a any number between -1 and +1. When the voting starts, the accumulated support for the proposal is set to 0. For every day with a certain balance of votes for and against, the accumulated support grows by a constant. If there is a side switch from pro to against of vice versa, the accumulated support is set back to zero.
A vote is considered accepted or rejected when:
(Current value, called mean value in the graph) + (accumulated support) > 1 (accepted) or> -1 (rejected) (Formula corrected by Magnus G, Aktivdemokrati)
This means that many votes, in relation to the total in the electors list, for or against a proposal without majority switches gives a shorter voting period than in a very narrow field of interest (few voters).
for:
P (a proposal)
A (accumulated support)
A* (New accumulated support today)
M (Momentary support) (the sum of all votes for yes)
M* (New momentary support today)
t (days the vote has run when calculation of A)
d (democray constant), could be set to 1, 7, 30 or 356 for pedagogic reasons Z (polulation number)
At start of the vote A and M are set to zero. This is also made every time the momentary support have passed the level of zero to the other side (switching majority).
During the continous vote the value of A is calculated once a day:
Daily Update
Between 00:00 and 02:00 each day the system runs an update on all propositions in the system that have the status in-voting.
Momentary and Accumulated Support Update
When a proposition is first created its values momentary-support* and accumulated-support* are both set to 0.
Once each day the support values for a proposition P is updated as follows:
1. Set momentary-support* to the sum of all votes on P (all who have not actively voted on P are assumed to have voted blank).
2. Increase accumulated-support* with momentary-support*. (since momentary-support* could have a negative value, this could in practice mean a decrease)
Giving formula 1:
A* = M* + A
Finish Condition Check:
In addition, we have to check if the voting on a proposition is finished. To do so we need to calculate the accumulated support (without the star). Just follow these steps:
Set the accumulated support to the accumulated-support* divided by the total number of members and the democratic-constant (which is typically 7).
This would give formula 2:
A = A* /(dxZ)
Actions for the program: When A reaches +1 or -1, the vote is over and +1 means that the proposal is approved, -1 that it's rejected. If M* have been dropping down to or under zero due to a majority switch, A is set to zero. Next day, the value of A is used again in formula 1. And so on..
Conclusion:
Depending of the set value of d, the vote will take number of days in the relation of how many are voting out of all members of the electoral list. Basicly: For a certain amount of yes-voters in a particular proposal, P, many members and a high value for d will mean longer voting times (many days) until enough M* has been added to A making it as large as (d times Z), compared with few members and/or a small democracy constant, d.