У меня есть класс RuleSetting, который является проблемным фактом. Он хранит тип, который может быть Soft, Medium и Hard. На основании этого будет изменен тип правила.
Поток ограничений я реализовал следующим образом:
Constraint daysCountMoreThanMaximumNumberOfDaysInContractPerWeek(ConstraintFactory
constraintFactory) {
return constraintFactory.forEach(RuleSetting.class)
.filter(ruleSetting -> ruleSetting.getRuleName().equals("E005")&& ruleSetting.getIsActive() == true)
.join(Shift.class)
.filter((ruleSetting, shift) -> shift.getEmployee().getContracts().getMaxDaysPerWeek() != null && shift.getEmployee().getContracts().getMaxDaysPerWeek() > 0)
.groupBy((ruleSetting, shift)->ruleSetting,
(ruleSetting, shift)->shift.getEmployee(),
(ruleSetting, shift)->shift.getWeekNo(),
ConstraintCollectors.countBi())
.filter((ruleSetting, employee, weekNo, noDays) -> noDays > employee.getContracts().getMaxDaysPerWeek())
.penalize(HardMediumSoftScore.ONE_SOFT
// This section is hardcoded to SOFT, I would like to make it dynamic.
// Like ruleSetting.getType().equals("Soft") ? HardMediumSoftScore.ONE_SOFT: HardMediumSoftScore.ONE_HARD
, (ruleSetting, employee, weekNo, noDays)->{
return (int)Math.abs(((double)ruleSetting.getWeight() * (double)noDays / (double) employee.getContracts().getMaxDaysPerWeek()));
})
.indictWith((ruleSetting, employee, weekNo, noDays) ->{
EmployeeScoreKeyItems res = new EmployeeScoreKeyItems(EmployeeScoreKeyItems.KeyType.BY_WEEK,
ruleSetting.getRuleName(),
employee.getEmployeeId(),
null, null, weekNo, null);
return List.of(res);
})
.asConstraint("Days Count More Than Maximum Number Of Days In Contract Per Week");
}
Пожалуйста, порекомендуйте способ решения. Я бы предпочел не использовать параметр «Настраиваемый». Но если выхода нет, возможно, мне придется использовать этот вариант.
У меня есть класс RuleSetting, который является проблемным фактом. Он хранит тип, который может быть Soft, Medium и Hard. На основании этого будет изменен тип правила. Поток ограничений я реализовал следующим образом: [code] Constraint daysCountMoreThanMaximumNumberOfDaysInContractPerWeek(ConstraintFactory
// This section is hardcoded to SOFT, I would like to make it dynamic. // Like ruleSetting.getType().equals("Soft") ? HardMediumSoftScore.ONE_SOFT: HardMediumSoftScore.ONE_HARD
return List.of(res); }) .asConstraint("Days Count More Than Maximum Number Of Days In Contract Per Week");
} [/code] Пожалуйста, порекомендуйте способ решения. Я бы предпочел не использовать параметр «Настраиваемый». Но если выхода нет, возможно, мне придется использовать этот вариант.
У меня есть класс RuleSetting, который является проблемным фактом. Он хранит тип, который может быть Soft, Medium и Hard. На основании этого будет изменен тип правила.
Поток ограничений я реализовал следующим образом:
Constraint...
Контекст : я пытаюсь решить проблему планирования турниров.
Я хочу проанализировать решение, сгенерированное алгоритмом Timefold, но столкнулся с проблемой. проблема с сериализацией:
INFO: @ timefold_solver : Validating score: type=,...
Контекст : я пытаюсь решить проблему планирования турниров.
Я хочу проанализировать решение, сгенерированное алгоритмом Timefold, но столкнулся с проблемой. проблема с сериализацией:
INFO: @ timefold_solver : Validating score: type=,...
Контекст : я пытаюсь решить проблему планирования турниров.
Я хочу проанализировать решение, сгенерированное алгоритмом Timefold, но столкнулся с проблемой. проблема с сериализацией:
INFO: @ timefold_solver : Validating score: type=,...
Предположим, что у нас есть полнофункциональное приложение, в интерфейсе которого есть страница, на которой мы можем выбрать ограничения, которые следует применить к конкретной проблеме. Список этих ограничений будет отправлен на серверную часть,...