使用 OptaPlanner 进行单一任务分配
Single Task Assignment with OptaPlanner
我有一个具有实时消息传递功能的客户服务应用程序。当客户开始新对话时,我想将此单个对话分配给最可用的客户服务代表(他们有最小的对话数量、最小的平均对话长度和最小的平均对话持续时间)。我也可以立即获取 c.s.representatives 的列表,并且属性会动态变化。所以每次我得到这个列表时,我都有不同的 c.s.representatives 和不同的属性。我想用 OptaPlanner 实现这个优化功能。如何编写我的 PlanningEntity、PlanningSolution 和 ConstraintProvider 类?
public class CustomerServiceRepresantative {
private String id;
private int numberOfConversations;
private int avgConversationLength;
private int avgConversationDuration;
public CustomerServiceRepresantative () {}
}
public class ConversationTask {
private int id;
public ConversationTask() {}
}
使用 @PlanningPin
固定所有现有作业,因此只有一个新作业被取消固定。
将 SolverConfig.withPhases(new ConstructionHeuristicPhaseConfig())
配置为仅 运行 频道。给它无限的终止时间,它会在CH终止时终止。
我有一个具有实时消息传递功能的客户服务应用程序。当客户开始新对话时,我想将此单个对话分配给最可用的客户服务代表(他们有最小的对话数量、最小的平均对话长度和最小的平均对话持续时间)。我也可以立即获取 c.s.representatives 的列表,并且属性会动态变化。所以每次我得到这个列表时,我都有不同的 c.s.representatives 和不同的属性。我想用 OptaPlanner 实现这个优化功能。如何编写我的 PlanningEntity、PlanningSolution 和 ConstraintProvider 类?
public class CustomerServiceRepresantative {
private String id;
private int numberOfConversations;
private int avgConversationLength;
private int avgConversationDuration;
public CustomerServiceRepresantative () {}
}
public class ConversationTask {
private int id;
public ConversationTask() {}
}
使用
@PlanningPin
固定所有现有作业,因此只有一个新作业被取消固定。将
SolverConfig.withPhases(new ConstructionHeuristicPhaseConfig())
配置为仅 运行 频道。给它无限的终止时间,它会在CH终止时终止。