/// <summary> /// Adds input constraint to current /// </summary> /// <param name="constraint">Constraint that must be equal</param> /// <exception cref="FormatException">If one of the constraints is not equal</exception> public void Add(Constraint constraint) { if (constraint.Sign != "=" || Sign != "=") throw new FormatException("Constraints must be equal constraints"); var current = new EqualityConstraint(LeftSide, RightSide); var input = new EqualityConstraint(constraint.LeftSide, constraint.RightSide); current.Add(input); _leftSide = new List<Variable>(current.LeftSide); _rightSide = current.RightSide; }
/// <summary> /// Adds limitation to current limitation /// </summary> public void Add(EqualityConstraint limitation) { foreach (var var in limitation.LeftSide) AddVariable(var, false); SetRightSide(RightSide + limitation.RightSide); }
/// <summary> /// Subtracts limitation from current limitation /// </summary> public void Subtract(EqualityConstraint limitation) { foreach (var var in limitation.LeftSide) AddVariable(new Variable(var.Coefficient * -1, var.Label, var.Power), false); SetRightSide(RightSide - limitation.RightSide); }
/// <summary> /// Represents copy of math limitation(equality) /// </summary> public EqualityConstraint(EqualityConstraint limitation) : base(limitation) { }