Consensus Mechanisms

The swarm employs multiple consensus strategies:

Weighted Voting

// Weighted voting consensus
function weightedVotingConsensus(signals, weights) {
  const tally = {};
  
  // Initialize tally for each asset and direction
  signals.forEach(signal => {
    const key = `${signal.asset}-${signal.direction}`;
    
    if (!tally[key]) {
      tally[key] = {
        asset: signal.asset,
        direction: signal.direction,
        weightedConfidence: 0,
        votes: 0,
        signals: []
      };
    }
  });
  
  // Add weighted votes
  signals.forEach(signal => {
    const key = `${signal.asset}-${signal.direction}`;
    const agentWeight = weights[signal.agentId] || 1;
    
    tally[key].weightedConfidence += signal.confidence * agentWeight;
    tally[key].votes += 1;
    tally[key].signals.push(signal);
  });
  
  // Calculate final confidence scores and sort by strength
  const results = Object.values(tally).map(result => {
    return {
      ...result,
      consensusConfidence: result.weightedConfidence / 
        result.signals.reduce((sum, signal) => sum + weights[signal.agentId], 0)
    };
  });
  
  // Sort by consensus confidence
  return results.sort((a, b) => b.consensusConfidence - a.consensusConfidence);
}

// Example usage
const consensusResults = weightedVotingConsensus(allAgentSignals, agentWeights);
console.log('Consensus results:', consensusResults);

Bayesian Aggregation

Collective Decision Making

Signal Composition

Decision Refinement

Last updated