pub struct ConsensusSection {
pub self_weight: f64,
pub susceptibility: f64,
pub tolerance: f64,
pub max_iterations: usize,
pub susceptibility_of: BTreeMap<String, f64>,
pub trust: BTreeMap<String, BTreeMap<String, f64>>,
}Expand description
Who listens to whom, and how hard the consensus iteration tries.
The trust rows are the influence graph DeGroot averages over. Each row names
the agents one agent listens to, in whatever units the author finds natural:
only the ratios matter, because crate::consensus normalises the row. An
agent with no row listens to itself with self_weight and splits the rest
equally over the others, which makes an unconfigured tracker report the tally
as a fraction rather than something surprising.
[consensus]
self_weight = 0.5
susceptibility = 0.8
[consensus.trust]
reviewer = { maintainer = 3.0, worker = 1.0 }
worker = { maintainer = 1.0 }
[consensus.susceptibility_of]
maintainer = 0.2Fields§
§self_weight: f64Weight an agent puts on its own opinion when its row does not name it.
susceptibility: f64How far an agent moves off the ballot it cast, in [0, 1].
One is DeGroot: an agent keeps nothing of its own starting position and the group converges on a single number. Below one is Friedkin and Johnsen’s generalisation, where each agent stays partly anchored to the ballot it actually cast, and what the iteration settles on is a profile of persistent disagreement rather than one shared position.
One by default, so a tracker that configures nothing keeps the reduction to the tally. Below one is the honest setting where reviewers are not expected to abandon their own reading, and it also removes the periodic case: any anchor at all makes the iteration a contraction.
tolerance: f64Largest disagreement that still counts as settled.
max_iterations: usizeRounds to try before calling the trust graph periodic.
susceptibility_of: BTreeMap<String, f64>Susceptibility for one named agent, where it differs from the default.
Friedkin and Johnsen’s susceptibility is a diagonal rather than one
number: a maintainer who has read the code for years and a reviewer
seeing it for the first time are not equally movable, and saying so is
the difference between the model and an average. An agent named here
uses this value; every other agent uses Self::susceptibility.
trust: BTreeMap<String, BTreeMap<String, f64>>Trust rows, keyed by the identity that holds the opinion.
Trait Implementations§
Source§impl Clone for ConsensusSection
impl Clone for ConsensusSection
Source§fn clone(&self) -> ConsensusSection
fn clone(&self) -> ConsensusSection
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ConsensusSection
impl Debug for ConsensusSection
Source§impl Default for ConsensusSection
impl Default for ConsensusSection
Source§impl PartialEq for ConsensusSection
impl PartialEq for ConsensusSection
impl StructuralPartialEq for ConsensusSection
Auto Trait Implementations§
impl Freeze for ConsensusSection
impl RefUnwindSafe for ConsensusSection
impl Send for ConsensusSection
impl Sync for ConsensusSection
impl Unpin for ConsensusSection
impl UnsafeUnpin for ConsensusSection
impl UnwindSafe for ConsensusSection
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more