5

Ich lese widersprüchliche Dinge in der Dokumentation.Unterstützt OptaPlanner Optimierungen und Einschränkungen für kontinuierliche Variablen?

Auf der einen Seite scheint diese Stelle, um anzuzeigen, dass eine kontinuierliche Planung Variablen sind möglich:

Ein Planungswertebereich ist die Menge der möglichen Planungswerte für eine Planung Variable. Dieser Satz kann ein diskreter Satz sein (z. B. Zeile 1, 2, 3 oder 4) oder kontinuierlich (z. B. jeder doppelte Wert zwischen 0,0 und 1,0).

Auf der anderen Seite, wenn eine Planung Variable definieren, müssen Sie eine ValueRangeProvider Anmerkung auf einem Feld angeben, für den eingestellten Wert zu verwenden:

Die Lösung Implementierung Methode hat, die eine Sammlung zurück. Ein Wert aus dieser Sammlung ist ein möglicher Planungswert für diese Planungsvariable .

Beide Schnipsel sind in dem gleichen Abschnitt der Dokumentation (http://docs.jboss.org/drools/release/latest/optaplanner-docs/html_single/#d0e2518)

Also, was ist es? Kann ich eine volle double als Planungsvariable verwenden, oder muss ich den Bereich auf die Werte in einem bestimmten Collection beschränken?

Mit Blick auf die tatsächlichen Algorithmen, ich sehe keine, die tatsächlich geeignet sind, um kontinuierliche Variablen zu optimieren, so bezweifle ich, dass es möglich ist, aber es wäre schön, dass klar und deutlich gemacht werden.

Antwort

4

Wir arbeiten daran, kontinuierliche Variablen vollständig zu unterstützen. Aber derzeit (in 6.0.0.CR2) ist es noch nicht anständig unterstützt.

Wertebereiche können in der Tat kontinuierliche Bereiche sein, aber die Rohrleitungen, um sie tatsächlich zu verwenden, sind noch nicht da. Wir haben kürzlich gute Fortschritte gemacht, siehe https://issues.jboss.org/browse/PLANNER-160.

Hier ist, wie es funktioniert: es eine @ValueRangeProvider Anmerkung auf ein Verfahren zu verwenden, in der Lage, die eine ValueRange (anstelle eines Collection) auch zurückgibt.

A ValueRange wird eine Schnittstelle unterstützt einen Zufallswert der Auswahl einer Größe bekommen, ... Out-of-the-box unterstützen wir IntValueRange, DoubleValueRange, BigDecimalValueRange ... (Implementation Detail: wir ll passt diese Collection-Rückgabe-Methoden in eine CollectionValueRange an.

Dann werden die ValueSelector-Implementierungen diese direkt verwenden.

Was die Eignung kontinuierlichen Variablen zu optimieren:

  • JIT zufällige Auswahl wird schnell sein flammendes und sehr speichereffizient.
  • Wenn Sie ein NP-vollständiges/NP-schweres Problem haben, dann wird der OptaPlanner eine großartige Ergänzung sein.Wenn Sie nur kontinuierliche Variablen (und nicht eine einzelne diskrete Variable) haben, ist es unwahrscheinlich, dass Ihr Problem NP-vollständig ist (sofern Ihre Einschränkungen dies nicht widerlegen) und in diesem Fall sind Sie besser mit einem benutzerdefinierten, handgemachten Polynomalgorithmus (weil es nicht NP-vollständig ist, so gibt es eine "einfache" Lösung).
Verwandte Themen