код слюни для логики подсчета очков

Я хочу запланировать события с помощью optaplanner, в котором требуемый ресурс по событию является мягким ограничением.

Я выполнил подсчет очков в java-коде, например:

int resources = 0;
int quantity = 0;
for(ResourceAvailability availability : eventDate.getResourceAvailabilities()){
    for(ResourceAvailability required : event.getResourceAvailabilities()){
         if(availability.equals(required)){
              resources += required.getQuantity();
              quantity += availability.getQuantity();
         }
    }
}
// Soft constraints
int resourcesAvailable = quantity - resources;
if (resourcesAvailable < 0) {
    softScore += resourcesAvailable;
}

Это работает, но медленно, я хочу получить эквивалентный код слюни для этой логики расчета мягких оценок.

Так как же написать для этого код слюни ??

Я проверил файл слюни о проблеме переназначения машины, но не смог связать его с моей проблемой.

Здесь Event - это объект моего планирования, а EventDate - переменная планирования.

Я пишу правило слюни вроде:

rule "requiredResources"
    when
        $eventDate : EventDate()
        $requiredResources : Number(intValue > 1) from accumulate(
            Event(
                eventDate == $eventDate,
                //here logic for comparing required and available resource and then find
                //sum of required resources and available resoulces
                //add difference to score
            ),
            sum($quantity)
        )
    then
        System.out.println($requiredResources+$availableResources);
end

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


Ответы (1)


Из пример переназначения машины:

rule "machineUsage"
  when
    $machineCapacity : MrMachineCapacity($machine : machine, $resource : resource)
    accumulate(
        $processAssignment : MrProcessAssignment(machine == $machine),
        $usageTotal : sum($processAssignment.getUsage($resource))
    )
  then
    scoreHolder.addHardConstraintMatch($capacity - $usage); // see docs chapter score calculation
end
person Geoffrey De Smet    schedule 26.08.2014
comment
Пожалуйста, еще раз внимательно посмотрите на пример переназначения машины и главу справочного руководства по движку правил Drools, посвященную языку правил (и главу о вычислении оценок в справочном руководстве OptaPlanner). - person Geoffrey De Smet; 26.08.2014