public void SolveFromString() { string model_str = @" { ""variables"": [ { ""name"": ""C"", ""domain"": [ ""1"", ""9"" ] }, { ""name"": ""P"", ""domain"": [ ""0"", ""9"" ] }, { ""name"": ""I"", ""domain"": [ ""1"", ""9"" ] }, { ""name"": ""S"", ""domain"": [ ""0"", ""9"" ] }, { ""name"": ""F"", ""domain"": [ ""1"", ""9"" ] }, { ""name"": ""U"", ""domain"": [ ""0"", ""9"" ] }, { ""name"": ""N"", ""domain"": [ ""0"", ""9"" ] }, { ""name"": ""T"", ""domain"": [ ""1"", ""9"" ] }, { ""name"": ""R"", ""domain"": [ ""0"", ""9"" ] }, { ""name"": ""E"", ""domain"": [ ""0"", ""9"" ] } ], ""constraints"": [ { ""allDiff"": { ""vars"": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] } }, { ""linear"": { ""vars"": [ 6, 5, 9, 4, 3, 7, 8, 2, 0, 1 ], ""coeffs"": [ ""1"", ""0"", ""-1"", ""100"", ""1"", ""-1000"", ""-100"", ""10"", ""10"", ""1"" ], ""domain"": [ ""0"", ""0"" ] } } ] }"; CpModelProto model = Google.Protobuf.JsonParser.Default.Parse <CpModelProto>(model_str); SolveWrapper solve_wrapper = new SolveWrapper(); CpSolverResponse response = solve_wrapper.Solve(model); Console.WriteLine(response); }
public IntVar(CpModelProto model, int index) { model_ = model; index_ = index; var_ = model.Variables[index]; negation_ = null; }
public CpModel() { model_ = new CpModelProto(); constant_map_ = new Dictionary <long, int>(); var_value_map_ = new Dictionary <int, long>(10); terms_ = new Queue <Term>(10); }
public static LinearExpr RebuildLinearExprFromLinearExpressionProto(LinearExpressionProto proto, CpModelProto model) { int numElements = proto.Vars.Count; long offset = proto.Offset; if (numElements == 0) { return(LinearExpr.Constant(offset)); } else if (numElements == 1) { IntVar var = new IntVar(model, proto.Vars[0]); long coeff = proto.Coeffs[0]; return(LinearExpr.Affine(var, coeff, offset)); } else { LinearExpr[] exprs = new LinearExpr[numElements]; for (int i = 0; i < numElements; ++i) { IntVar var = new IntVar(model, proto.Vars[i]); long coeff = proto.Coeffs[i]; exprs[i] = Prod(var, coeff); } SumArray sum = new SumArray(exprs); sum.Offset = sum.Offset + offset; return(sum); } }
internal static LinearExpr RebuildLinearExprFromLinearExpressionProto(LinearExpressionProto proto, CpModelProto model) { int numElements = proto.Vars.Count; long offset = proto.Offset; if (numElements == 0) { return(LinearExpr.Constant(offset)); } else if (numElements == 1) { IntVar var = new IntVar(model, proto.Vars[0]); long coeff = proto.Coeffs[0]; return(LinearExpr.Affine(var, coeff, offset)); } else { LinearExprBuilder builder = LinearExpr.NewBuilder(numElements); for (int i = 0; i < numElements; ++i) { builder.AddTerm(new IntVar(model, proto.Vars[i]), proto.Coeffs[i]); } builder.Add(offset); return(builder); } }
public IntVar(CpModelProto model, Domain domain, string name) { index_ = model.Variables.Count; var_ = new IntegerVariableProto(); var_.Name = name; var_.Domain.Add(domain.FlattenedIntervals()); model.Variables.Add(var_); }
public IntVar(CpModelProto model, long lb, long ub, string name) { index_ = model.Variables.Count; var_ = new IntegerVariableProto(); var_.Name = name; var_.Domain.Capacity = 2; var_.Domain.Add(lb); var_.Domain.Add(ub); model.Variables.Add(var_); }
public IntVar(CpModelProto model, IEnumerable <long> bounds, string name) { model_ = model; index_ = model.Variables.Count; var_ = new IntegerVariableProto(); var_.Name = name; var_.Domain.Add(bounds); model.Variables.Add(var_); negation_ = null; }
public IntVar(CpModelProto model, IEnumerable <long> bounds, int is_present_index, string name) { model_ = model; index_ = model.Variables.Count; var_ = new IntegerVariableProto(); var_.Name = name; var_.Domain.Add(bounds); var_.EnforcementLiteral.Add(is_present_index); model.Variables.Add(var_); negation_ = null; }
static void TestSimpleLinearModel2() { CpModelProto model = new CpModelProto(); model.Variables.Add(NewIntegerVariable(-10, 10)); model.Variables.Add(NewIntegerVariable(-10, 10)); model.Constraints.Add(NewLinear2(0, 1, 1, 1, -1000000, 100000)); model.Objective = NewMaximize2(0, 1, 1, -2); CpSolverResponse response = SatHelper.Solve(model); Console.WriteLine("model = " + model.ToString()); Console.WriteLine("response = " + response.ToString()); }
public void SimpleLinearModelProto2() { CpModelProto model = new CpModelProto(); model.Variables.Add(NewIntegerVariable(-10, 10)); model.Variables.Add(NewIntegerVariable(-10, 10)); model.Constraints.Add(NewLinear2(0, 1 , 1, 1, -1000000, 100000)); model.Objective = NewMaximize2(0, 1, 1, -2); //Console.WriteLine("model = " + model.ToString()); CpSolverResponse response = SatHelper.Solve(model); Assert.Equal(CpSolverStatus.Optimal, response.Status); Assert.Equal(30, response.ObjectiveValue); Assert.Equal(new long[] {10, -10}, response.Solution); //Console.WriteLine("response = " + response.ToString()); }
public IntervalVar(CpModelProto model, int start_index, int size_index, int end_index, string name) { model_ = model; index_ = model.Constraints.Count; interval_ = new IntervalConstraintProto(); interval_.Start = start_index; interval_.Size = size_index; interval_.End = end_index; ConstraintProto ct = new ConstraintProto(); ct.Interval = interval_; ct.Name = name; model_.Constraints.Add(ct); }
public IntervalVar(CpModelProto model, LinearExpressionProto start, LinearExpressionProto size, LinearExpressionProto end, string name) { model_ = model; index_ = model.Constraints.Count; interval_ = new IntervalConstraintProto(); interval_.Start = start; interval_.Size = size; interval_.End = end; ConstraintProto ct = new ConstraintProto(); ct.Interval = interval_; ct.Name = name; model_.Constraints.Add(ct); }
public IntervalVar(CpModelProto model, LinearExpressionProto start, LinearExpressionProto size, LinearExpressionProto end, int is_present_index, string name) { model_ = model; index_ = model.Constraints.Count; interval_ = new IntervalConstraintProto(); interval_.StartView = start; interval_.SizeView = size; interval_.EndView = end; ConstraintProto ct = new ConstraintProto(); ct.Interval = interval_; ct.Name = name; ct.EnforcementLiteral.Add(is_present_index); model.Constraints.Add(ct); }
public IntVar(CpModelProto model, int index) { index_ = index; var_ = model.Variables[index]; }
public BoolVar(CpModelProto model, String name) : base(model, 0, 1, name) { }
public CircuitConstraint(CpModelProto model) : base(model) { }
public NoOverlap2dConstraint(CpModelProto model) : base(model) { }
public ReservoirConstraint(CpModel cp_model, CpModelProto model) : base(model) { this.cp_model_ = cp_model; }
public AutomatonConstraint(CpModelProto model) : base(model) { }
public BoolVar(CpModelProto model, int index) : base(model, index) { }
public Constraint(CpModelProto model) { index_ = model.Constraints.Count; constraint_ = new ConstraintProto(); model.Constraints.Add(constraint_); }
public CpModel() { model_ = new CpModelProto(); constant_map_ = new Dictionary <long, int>(); terms_ = new Queue <Term>(); }
public MultipleCircuitConstraint(CpModelProto model) : base(model) { }
public CumulativeConstraint(CpModel cp_model, CpModelProto model) : base(model) { this.cp_model_ = cp_model; }
public CpModel() { model_ = new CpModelProto(); constant_map_ = new Dictionary <long, int>(); }
public TableConstraint(CpModelProto model) : base(model) { }