using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using HEAL.Attic; using HeuristicLab.Common; using HeuristicLab.Core; using HeuristicLab.Data; using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; using HeuristicLab.Parameters; namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Regression { [StorableType("4E416693-1051-4987-A972-F869C4ACE3D4")] public class ExtendedConstraint : ParameterizedNamedItem { #region Constants private const string ExpressionParameterName = "Expression"; private const string ShapeConstraintsParameterName = "Shape Constraints"; #endregion public IFixedValueParameter ExpressionParameter => (IFixedValueParameter)Parameters[ExpressionParameterName]; public IFixedValueParameter ShapeConstraintsParameter => (IFixedValueParameter)Parameters[ShapeConstraintsParameterName]; public string Expression => ExpressionParameter.Value.Value; public ISymbolicExpressionTree Tree => Parser.Parse(Expression); public ShapeConstraints ShapeConstraints => ShapeConstraintsParameter.Value; private InfixExpressionParser Parser => new InfixExpressionParser(); #region Constructors & Cloning public ExtendedConstraint() { Parameters.Add(new FixedValueParameter(ExpressionParameterName, new StringValue(""))); Parameters.Add(new FixedValueParameter(ShapeConstraintsParameterName, new ShapeConstraints())); } protected ExtendedConstraint(ExtendedConstraint original, Cloner cloner) : base(original, cloner) { } [StorableConstructor] protected ExtendedConstraint(StorableConstructorFlag _) : base(_) { } public override IDeepCloneable Clone(Cloner cloner) => new ExtendedConstraint(this, cloner); #endregion } }