using System; using System.Collections.Generic; using System.Linq; using System.Text; using HeuristicLab.Common; using HeuristicLab.Core; using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; using HeuristicLab.Random; namespace HeuristicLab.Problems.TradeRules { [StorableClass] public sealed class BoolConstantTreeNode : SymbolicExpressionTreeTerminalNode { public new BoolConstant Symbol { get { return (BoolConstant)base.Symbol; } } private double BoolConstantValue; [Storable] public double Value { get { return BoolConstantValue; } set { BoolConstantValue = value; } } [StorableConstructor] private BoolConstantTreeNode(bool deserializing) : base(deserializing) { } private BoolConstantTreeNode(BoolConstantTreeNode original, Cloner cloner) : base(original, cloner) { BoolConstantValue = original.BoolConstantValue; } private BoolConstantTreeNode() : base() { } public BoolConstantTreeNode(BoolConstant BoolConstantSymbol) : base(BoolConstantSymbol) { } public override bool HasLocalParameters { get { return true; } } public override void ResetLocalParameters(IRandom random) { base.ResetLocalParameters(random); if (random.Next(1) == 0) Value = -1; else Value = 1; } public override IDeepCloneable Clone(Cloner cloner) { return new BoolConstantTreeNode(this, cloner); } public override string ToString() { return BoolConstantValue.ToString("E5"); } } }