Skip to main content

ConsensusSection

Struct ConsensusSection 

Source
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.2

Fields§

§self_weight: f64

Weight an agent puts on its own opinion when its row does not name it.

§susceptibility: f64

How 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: f64

Largest disagreement that still counts as settled.

§max_iterations: usize

Rounds 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

Source§

fn clone(&self) -> ConsensusSection

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ConsensusSection

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ConsensusSection

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl PartialEq for ConsensusSection

Source§

fn eq(&self, other: &ConsensusSection) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for ConsensusSection

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.