optaplnner оценка, какие ограничения не выполняются

Я изучаю optaplanner и обнаружил, что он дает мне одно лучшее решение вместе с некоторым значением оценки, например -4Hard/-3hard.

Я хочу получить больше информации об этой оценке, например, перечислить жесткие и мягкие ограничения, которые не были удовлетворены в данном решении, чтобы пользователь мог немного изменить ограничения, чтобы получить еще лучшее решение.

Возможно ли это в optaplanner и если да, то как?


person Ankit Gupta    schedule 04.09.2014    source источник


Ответы (1)


Ваши жесткие/мягкие оценки зависят от вашей реализации.

Возьмите CloudBalancingEasyScoreCalculator (см. документы) из примеров в Optaplanner. Вы видите, что баллы на самом деле являются накопленными суммами. У Optaplanner нет возможности узнать детали каждого ограничения, учитываемого в этой сумме. Нигде не определен набор ограничений. Мы просто собираем их как глобальную цель.

Решение 1. В таком случае решение состоит в том, чтобы самостоятельно отслеживать несоблюдение ограничений при подсчете баллов.

В том же примере вы бы вставили эту обработку сюда:

        // Hard constraints

        int cpuPowerAvailable = computer.getCpuPower() - cpuPowerUsage;

        if (cpuPowerAvailable < 0) {

            hardScore += cpuPowerAvailable;

            cloudbalance.trackUnrespectedHardConstraint(...)


        }

вместо

        // Hard constraints

        int cpuPowerAvailable = computer.getCpuPower() - cpuPowerUsage;

        if (cpuPowerAvailable < 0) {

            hardScore += cpuPowerAvailable;

        }

Я не исследовал конфигурацию оценки Drools, которая может быть решением 2 для ваших нужд.

Надеюсь это поможет.

ThePolyscope.com

person RandomCoder    schedule 17.09.2014