public override void Run() { if (ge1 == null) { ge1 = workspace.PickRandomGroupElementByRecency(); } if (ge1 == null) { return; } if (ge2 == null) { ge2 = workspace.PickRandomGroupElementByRecency(); } if (ge2 == null || ge2 == ge1) { return; } // Reorder in time if out-of-order. m1 comes first. if (ge1.Location > ge2.Location) { GroupElement tmp = ge1; ge1 = ge2; ge2 = tmp; } // Add to attention history. workspace.RecordCodeletAttentionHistory(this, ge1.MinLocation, ge1.MaxLocation); workspace.RecordCodeletAttentionHistory(this, ge2.MinLocation, ge2.MaxLocation); float similarity = workspace.ComputeSimilarity(ge1, ge2, this, coderack); double r = Utilities.rand.NextDouble() * 100; if (r < similarity) { if (similarity > 99.999) { workspace.AddRelationship(new RelationshipIdentical(ge1, ge2, similarity)); } else { workspace.AddRelationship(new RelationshipSimilar(ge1, ge2, similarity)); } // Post labeling codelets. FormLabelAssignerCodelet flc = new FormLabelAssignerCodelet((int)Urgency, this, coderack, workspace, slipnet, ge1); coderack.AddCodelet(flc); flc = new FormLabelAssignerCodelet((int)Urgency, this, coderack, workspace, slipnet, ge2); coderack.AddCodelet(flc); } }
public override void Run() { if (measure1 == null) { measure1 = workspace.PickRandomMeasureByRecency(); } if (measure1 == null) { return; } if (measure2 == null) { measure2 = workspace.PickRandomMeasureByRecency(); } if (measure2 == null || measure2 == measure1) { return; } // Reorder in time if out-of-order. m1 comes first. if (measure1.Location > measure2.Location) { Measure tmp = measure1; measure1 = measure2; measure2 = tmp; } // Add to attention history. workspace.RecordCodeletAttentionHistory(this, measure1.Location); workspace.RecordCodeletAttentionHistory(this, measure2.Location); float similarity = measure1.ComputeRhythmicSimilarity(measure2); double r = Utilities.rand.NextDouble() * 100; if (r < similarity) { workspace.AddMeasureLink(measure1, measure2, similarity); // Try to label the measures. FormLabelAssignerCodelet c = new FormLabelAssignerCodelet(90, this, coderack, workspace, slipnet, measure1); coderack.AddCodelet(c); c = new FormLabelAssignerCodelet(60, this, coderack, workspace, slipnet, measure2); coderack.AddCodelet(c); } }