Exemple #1
0
        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);
        }
Exemple #2
0
        /**
         * <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);
        }