using Google.OrTools.Sat; CpModel model = new CpModel(); //第一个时间段 var start_var = model.NewIntVar(0, 200, "start_var"); var end_var = model.NewIntVar(0, 200, "end_var"); var duration = model.NewIntVar(10, 50, "duration"); var task_interval = model.NewIntervalVar(start_var, duration, end_var, "task_interval"); model.Add(end_var == start_var + duration); //第二个时间段 var start_var2 = model.NewIntVar(0, 200, "start_var2"); var end_var2 = model.NewIntVar(0, 200, "end_var2"); var duration2 = model.NewIntVar(20, 60, "duration2"); var task_interval2 = model.NewIntervalVar(start_var, duration, end_var, "task_interval2"); model.Add(end_var2 == start_var2 + duration2); model.Add(end_var == start_var2); model.Maximize(duration); model.Maximize(duration2); var solver = new CpSolver(); var status = solver.Solve(model); if (status == CpSolverStatus.Optimal) { Console.WriteLine("任务开始时间:{0}", solver.Value(start_var)); Console.WriteLine("任务结束时间:{0}", solver.Value(end_var)); Console.WriteLine("任务持续时间:{0}", solver.Value(duration)); Console.WriteLine("2任务开始时间:{0}", solver.Value(start_var2)); Console.WriteLine("2任务结束时间:{0}", solver.Value(end_var2)); Console.WriteLine("2任务持续时间:{0}", solver.Value(duration2)); } else { Console.WriteLine("找不到可行解。"); } Console.ReadKey();

浙公网安备 33010602011771号