public void Visit(Compiled.And elem) { if (ArgumentIndex == 0) { if (ValueOf(elem.Left) > 0.75) { LocalDerivative = 0; } else { LocalDerivative = elem.Adjoint; } } else { if (ValueOf(elem.Right) > 0.75) { LocalDerivative = 0; } else { LocalDerivative = elem.Adjoint; } } }
public void Visit(Compiled.And elem) { if (ValueOf(elem.Left) > 0.75) { elem.Value = ValueOf(elem.Right); } else if (ValueOf(elem.Right) > 0.75) { elem.Value = ValueOf(elem.Left); } else { elem.Value = ValueOf(elem.Left) + ValueOf(elem.Right); } }
public int Visit(And and) { return(Compile(and, () => { var leftIndex = and.Left.Accept(this); var rightIndex = and.Right.Accept(this); var element = new Compiled.And { Left = leftIndex, Right = rightIndex, Inputs = new Compiled.InputEdge[] { new Compiled.InputEdge { Index = leftIndex }, new Compiled.InputEdge { Index = rightIndex }, } }; return element; })); }
public void Visit(Compiled.And elem) { double left = ValueOf(elem.Left); double right = ValueOf(elem.Right); if (left > 0.75 && right > 0.75) { elem.Value = 1; elem.Inputs[0].Weight = 0; elem.Inputs[1].Weight = 0; return; } elem.Value = 0; if (left <= 0) { elem.Value += left; elem.Inputs[0].Weight = 1; } if (right <= 0) { elem.Value += right; elem.Inputs[1].Weight = 1; } }