在this thread中,我想在再次解决Optaplanner问题之前删除实体(重复计划)。
但我不确定如何获得在生成第一个解决方案时使用的得分导演以及在删除实体时调用得分者上的Before / AfterEntityRemoved和Before / AfterVariableChanged的重要性?
假设我删除了一辆车和所有分配给它的客户 - 我自己还没有建立一个scoreDirector - 那么我是否可以忽略一个scoredirector上的调用方法,并且仍然能够通过正确计算再次解决它得分?
答案 0 :(得分:1)
1)你确定不是删除实体,而是想让它们保持未分配状态吗?如果是,则执行过度约束计划(参见文档)。
2)如果在将解决方案实例提供给csproj
之前删除实体,则可以在不通知ScoreDirector的情况下删除它们。
3)删除实体通常会改变计划问题,因此实时计划(=在解决过程中更改问题)。因此,如果您想在解决过程中删除实体,则需要在 = form_for @order do |form|
= form.hidden_field 'browserInfo[userAgent]', value: request.env['HTTP_USER_AGENT']
= form.hidden_field 'browserInfo[acceptHeader]', value: env['HTTP_ACCEPT']
中完成。请参阅有关如何获取solve(Solution s)
以及您的通知义务的文档。