5

문서에서 모순되는 점을 읽고 있습니다.OptaPlanner는 연속 변수에 대한 최적화 및 제약 조건을 지원합니까?

계획 값 범위는 계획 가변 가능한 계획 값들의 집합이다 : 한편

이 통로 연속 기획 변수가 가능하다는 것을 나타내는 것으로 보인다. 이 세트는 불연속 (예 : 행 1, 2, 3 또는 4) 또는 연속 (예 : 0.0과 1.0 사이의 임의의 이중)이 될 수 있습니다. 계획 변수를 정의 할 때

한편

, 당신은 값 세트로 사용하는 필드에 ValueRangeProvider 주석을 지정해야합니다

솔루션 구현이 컬렉션을 반환하는 방법이있다. 해당 컬렉션의 값은이 계획 변수의 가능한 계획 값입니다. 이 조각의

는 이는, 그래서 ( http://docs.jboss.org/drools/release/latest/optaplanner-docs/html_single/#d0e2518)

문서의 같은 섹션에? 내 계획 변수로 전체 double을 사용할 수 있습니까? 아니면 해당 범위를 특정 Collection의 값으로 제한해야합니까?

실제 알고리즘을 살펴보면 연속 변수를 최적화하는 데 실제로 적합한 알고리즘이 표시되지 않으므로 가능한지 의심 스럽지만이를 분명히하고 명확하게 지정하는 것이 좋습니다.

답변

4

Google은 지속적인 변수를 완벽하게 지원하기 위해 노력하고 있습니다. 그러나 현재 (6.0.0.CR2에서) 아직 잘 지원되지 않습니다..

값 범위는 실제로 연속 범위 일 수 있지만 실제 값을 사용하는 배관은 아직 없습니다. 우리는 최근에 좋은 진보를 보였습니다. https://issues.jboss.org/browse/PLANNER-160을보십시오. 당신은 '너무 (대신 Collection의)는 ValueRange를 반환하는 방법에 @ValueRangeProvider 주석을 사용할 수있을 것이다 : 여기

는 작동 방법입니다. 우리가 ':

ValueRange는 인터페이스, ... 가 아웃 - 오브 - 박스 우리가 IntValueRange, DoubleValueRange, BigDecimalValueRange ... (구현 세부 사항을 지원, 임의의 값을 선택 지원하는 크기를 얻는 것 컬렉션 반환 메소드를 CollectionValueRange에 복고적으로 맞 춥니 다.

그런 다음 ValueSelector 구현은이를 직접 사용합니다.

  • JIT 랜덤 선택 빠르며되며 메모리가 매우 효율적으로 될 : 적합성에 대한

    로 연속 변수를 최적화한다.

  • NP 완성/NP 하드 문제가있는 경우 OptaPlanner가 가장 적합합니다.변수가 하나만있는 경우 (불연속 변수가 하나도없는 경우) 제약 조건이 NP를 완전히 수정하지 않는 한 문제가 NP 완료되지 않을 가능성이 있습니다.이 경우 어쨌든 사용자 정의 수제 다항식 알고리즘을 사용하는 것이 좋습니다. (NP 완료가 아니기 때문에 "쉬운"해결책이 있습니다).