麦田

不积跬步无以至千里.

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
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();

 

posted on 2025-02-19 15:37  一些记录  阅读(42)  评论(0)    收藏  举报