public IntervalVar NewOptionalFixedSizeIntervalVar <S>(S start, long duration, ILiteral is_present, string name) { LinearExpr startExpr = GetLinearExpr(start); LinearExpr durationExpr = GetLinearExpr(duration); LinearExpr endExpr = LinearExpr.Sum(new LinearExpr[] { startExpr, durationExpr }); LinearExpressionProto startProto = GetLinearExpressionProto(startExpr); LinearExpressionProto durationProto = GetLinearExpressionProto(durationExpr); LinearExpressionProto endProto = GetLinearExpressionProto(endExpr); return(new IntervalVar(model_, startProto, durationProto, endProto, is_present.GetIndex(), name)); }
/** * <summary> * Creates an interval variable from an affine expression start, and a fixed size. * </summary> * * <remarks>An interval variable is a constraint, that is itself used in other constraints like * NoOverlap. * </remarks> * * <param name="start"> the start of the interval. It needs to be an affine or constant expression. * * </param> * <param name="size"> the fixed size of the interval </param> * <param name="name"> the name of the interval variable </param> * <returns> An IntervalVar object</returns> */ public IntervalVar NewFixedSizeIntervalVar <S>(S start, long size, string name) { LinearExpr startExpr = GetLinearExpr(start); LinearExpr sizeExpr = GetLinearExpr(size); LinearExpr endExpr = LinearExpr.Sum(new LinearExpr[] { startExpr, sizeExpr }); LinearExpressionProto startProto = GetLinearExpressionProto(startExpr); LinearExpressionProto sizeProto = GetLinearExpressionProto(sizeExpr); LinearExpressionProto endProto = GetLinearExpressionProto(endExpr); return(new IntervalVar(model_, startProto, sizeProto, endProto, name)); }
public static LinearExpr Sum(this IntVar[] vars) { return(LinearExpr.Sum(vars)); }