protected override void onInstanceActivated(ConceptInstance instance, BeamGenerator generator) { var parameterValue = generator.GetValue(instance, _parameter); var relevantInstances = getRelevantInstances(instance, parameterValue.Concept, generator).ToArray(); foreach (var relevantInstance in relevantInstances) { //avoid reference circles if (relevantInstance.Concept == instance.Concept) { continue; } if (!generator.IsDefined(relevantInstance.Concept)) { continue; } //try tunnel instances between turns generator.Push(new StaticScoreEvent(0.05)); generator.Push(new InstanceReferencedEvent(relevantInstance)); generator.Pop(); generator.Pop(); } }
protected override void onInstanceActivated(ConceptInstance instance, BeamGenerator generator) { var activations = generator.GetInstanceActivations(); foreach (var relevantInstanceActivation in activations) { if (!relevantInstanceActivation.CanBeReferenced) { continue; } var relevantInstance = relevantInstanceActivation.Instance; if (relevantInstance == instance) { //dont reference self continue; } //try tunnel instances between turns generator.Push(new StaticScoreEvent(0.05)); generator.Push(new InstanceReferencedEvent(relevantInstance)); generator.Pop(); generator.Pop(); } }
public static void BeamBranchTesting() { var b = new BeamGenerator(); b.Push(new InputPhraseEvent("x")); b.Pop(); b.Push(new InputPhraseEvent("y")); b.PushSelf(); }