Hard Constraint Optaplanner - PullRequest
       25

Hard Constraint Optaplanner

0 голосов
/ 03 октября 2018

Я хотел бы заставить каждую медсестру работать в 9 смен в течение 2 недель.Жесткое ограничение.Я также хотел бы обеспечить трехдневный перерыв после ночной смены.Оба это жесткие ограничения для медсестер.Будет ли работать следующая

 salience 1 // Do these rules first (optional, for performance)
when
    $contractLine : MinMaxContractLine(contractLineType == ContractLineType.TOTAL_ASSIGNMENTS, enabled == true,
        $contract : contract)
    $employee : Employee(contract == $contract)
    accumulate(
        $assignment : ShiftAssignment(employee == $employee);
        $total : count($assignment)
    )
then
    int totalInt = $total.intValue();
    if ($contractLine.isMinimumEnabled() && totalInt < $contractLine.getMinimumValue()) {
        scoreHolder.addHardConstraintMatch(kcontext,
                (totalInt - $contractLine.getMinimumValue()) * $contractLine.getMinimumWeight());
    } else if ($contractLine.isMaximumEnabled() && totalInt > $contractLine.getMaximumValue()) {
        scoreHolder.addHardConstraintMatch(kcontext,
                ($contractLine.getMaximumValue() - totalInt) * $contractLine.getMaximumWeight());
    } else {
        // Workaround for https://issues.jboss.org/browse/PLANNER-761
        scoreHolder.addHardConstraintMatch(kcontext, 0);
    }
...