public Constraint Add(BoundedLinearExpression lin) { switch (lin.CtType) { case BoundedLinearExpression.Type.BoundExpression: { return(AddLinearExpressionInDomain(lin.Left, new Domain(lin.Lb, lin.Ub))); } case BoundedLinearExpression.Type.VarEqVar: { return(AddLinearExpressionInDomain(lin.Left - lin.Right, new Domain(0))); } case BoundedLinearExpression.Type.VarDiffVar: { return(AddLinearExpressionInDomain( lin.Left - lin.Right, Domain.FromFlatIntervals(new long[] { Int64.MinValue, -1, 1, Int64.MaxValue }))); } case BoundedLinearExpression.Type.VarEqCst: { return(AddLinearExpressionInDomain(lin.Left, new Domain(lin.Lb, lin.Lb))); } case BoundedLinearExpression.Type.VarDiffCst: { return(AddLinearExpressionInDomain( lin.Left, Domain.FromFlatIntervals(new long[] { Int64.MinValue, lin.Lb - 1, lin.Lb + 1, Int64.MaxValue }))); } } return(null); }
/** * <summary> * Adds a linear constraint to the model. * </summary> */ public Constraint Add(BoundedLinearExpression lin) { switch (lin.CtType) { case BoundedLinearExpression.Type.BoundExpression: { return(AddLinearConstraint(lin.Left, lin.Lb, lin.Ub)); } case BoundedLinearExpression.Type.VarEqVar: { return(AddLinearConstraint(lin.Left - lin.Right, 0, 0)); } case BoundedLinearExpression.Type.VarDiffVar: { return(AddLinearExpressionNotEqualCst(lin.Left - lin.Right, 0)); } case BoundedLinearExpression.Type.VarEqCst: { return(AddLinearConstraint(lin.Left, lin.Lb, lin.Lb)); } case BoundedLinearExpression.Type.VarDiffCst: { return(AddLinearExpressionNotEqualCst(lin.Left, lin.Lb)); } } return(null); }