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);
            }
        }
Exemple #2
0
        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);
            }
        }