점수 계산의 관점에서 쉐도우 변수를 사용하지 않는 것보다 쉐도우 변수가 더 빨리 솔루션에 도달하는 것으로 가정하는 것이 맞습니까?쉐도우 변수를 사용하여 점수 계산 성능
그림자 변수를 사용하면 VariableListner가 종속 엔티티 값을 최종/최적 값에 더 가깝게 재설정 할 수 있습니다.
점수 계산의 관점에서 쉐도우 변수를 사용하지 않는 것보다 쉐도우 변수가 더 빨리 솔루션에 도달하는 것으로 가정하는 것이 맞습니까?쉐도우 변수를 사용하여 점수 계산 성능
그림자 변수를 사용하면 VariableListner가 종속 엔티티 값을 최종/최적 값에 더 가깝게 재설정 할 수 있습니다.
에 달려 있습니다. 그림자 변수와 점수 계산 모두 델타를 사용하여 증분 계산을 만듭니다. 이러한 델타 값은 스케일 아웃하여 초당 스코어 계산 속도가이됩니다 (마지막 INFO 로깅 라인과 벤치 마크 보고서 참조). 무엇을 하든지 적어도 크기가 다른 데이터 세트에 대해서는이 값에 유의하십시오.
이론상 점수 규칙을 단순화하기 위해 그림자 변수가 있거나 그림자 변수가없고 점수 규칙이 더 복잡하면 (insertLogicals
등을 사용할 수도 있음) 이론적으로 중요하지 않습니다.
실제적으로 차량 라우팅의 경우 IIRC에서 섀도우 변수 arrivalTime
의 성능과 확장 성이 눈에 띄게 향상되었음을 알았습니다.
내 조언은 그림자 변수를 도메인에서 사용하는 것이 좋습니다. 예를 들어 도착 시간 등. 그러나 충분할 때 간단한 계산 된 getter (루프없이)를 사용하십시오 : 예를 들어 departureTime (= arrivalTime + duration). 나머지 점수 규칙을 사용하십시오.
결국 디자인 선택입니다. 점수 규칙은 departureTime 또는 arrivalTime을 직접 알아 내야하나요? 아니면 모델에 넣음으로써이를 추상화하고 규칙을 더 자연스럽게 읽을 수 있습니까?