問題タブ [optaplanner]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
drools-planner - optaplanner のクラウドバランシングの例
私はよだれプランナーを初めて使用し、クラウドバランシングの例を実行しようとしています。コードを新しい Java プロジェクト (swing なし) にコピーし、CloudBalancingApp.java を実行しようとすると、次の execption を取得します。
次のクラスをコピーしました
CloudBalancingApp.java
AbstractPersistable.java
CloudBalance.java
CloudComputer.java
CloudProcess.java
CloudComputerStrengthComparator.java
CloudProcessDifficultyComparator.java
CloudBalancingApp.java を実行しようとすると、次の例外が発生します
java - TimeWindow を使用した Optaplanner
タイム ウィンドウに関する 1 つの質問について助けが必要です 私は Optaplanner の初心者です オブジェクト VrpTimeWindowedCustomer については、いくつかのフィールドがあります: readyTime、dueTime、および serviceDuration 私の問題では、3 つの配達があります。午後 6 時 45 分まで、readyTime フィールドと dueTime フィールドにどのように入力すればよいですか?
java - バイシクルメッセンジャー / TSPPD with OptaPlanner
親愛なる OptaPlanner エキスパートへ!
OptaPlanner (または同様のオープン ソース Java フレームワーク) を使用して、自転車メッセンジャー サービスのルートを最適化したいと考えています。5 人のメッセンジャーが特定の発信元から 30 通の封筒を受け取り、特定の宛先に配送する必要があるとします。
私の 5 人のメッセンジャーは市内に分散されており (したがって、私は 1 つのデポを持っていません)、元の場所に戻る必要はありません。
次のハード制約を使用します。
- 各メッセンジャーは最大 15 個の封筒を運ぶことができます
- 封筒の移動方法は、直接ルートの 3 倍未満にする必要があります (配達に時間がかかりすぎないようにするため)。
そして、これらのソフト制約:
- メッセンジャーの循環方法を最適化する
車両のルーティングの例を調整する必要があると思いますが、初心者なのでどこから始めればよいかわかりません。メッセンジャーが封筒を配達しようとする前に、封筒が確実に取り出されるようにするにはどうすればよいですか? ここで私を助けてくれたら素晴らしいだろう...
ありがとうございました!
drools - drools ルールの最小 2 つの変数
drools ルールの LHS (左側) で 2 つの変数の最小値を見つけたいと考えています。例えば:
では、最小値をどのように見つけるかが問題です。ありがとう。
java - OptaplannerのカリキュラムコースXMLファイルに正のソフト制約(報酬)を設定する方法
OptaPlanner の XML ファイルにカリキュラムコースの問題用に負のソフト制約を追加します。
しかし、カリキュラムコースの問題に対してxmlファイルに正のソフト制約を追加するにはどうすればよいですか?
そのために使用される XML タグはどれですか?
正のソフト制約の例: 教師 B は月曜日の朝に教えるのが好きです
java - OptaPlanner CVRPTW - 継続的な配信
私は OptaPlanner を初めて使用し、CVRPTW の問題を解決するために自分のプロジェクトで OptaPlanner を構成しようとしています。私の現在の構成は、プロジェクトのソース コードにある例と非常に似ていますが、私の要件は異なります。私のアプリケーションは、次の場合に継続的な配信リクエストを受け取ります。
- 平均サービス時間は 5 分です
- DueTime - ReadyTime = 10 分
- ロケーション間の平均距離 (時間) は約 2.5 分です。
- デポは1つだけ
私の考えは、新しいリクエストが受信されるたびに解決アルゴリズムを再実行することです。これは、リクエストが実行可能かどうか、または時間を前後にシフトする必要があるかどうかを理解するために必要です。次の問題ステートメントを検討するとします (場所は省略されていますが、デポの場所からかなり等距離です)。
利用可能な車両が 2 台あり、どちらも定員 10 名であることを考慮すると、次の解が得られます (各車両の時刻表)。
ここで、D は需要、Ar.T は到着時間、Ap.T は接近時間 (選択した場所に時間通りに到着するために前の場所を離れる必要がある時間)、Prev.D は前の場所からの距離 (時間) です。 Next.D は、次の場所からの距離 (時間) です。
ご覧のとおり、顧客 4 はあまりにも早く配達を受け取ります (到着時間は 12:33:56 ですが、準備時間は 13:25:00 です)。私は、 arrivalBeforeReadyTimeというルールが非常に柔軟な制約であることを理解していますが、プランナーは、予約済みの配送を使用して顧客 4 に配送することを提案することを期待しています。ルールarrivalBeforeReadyTimeを追加の厳しい制約として設定すると、ほとんどの場合、次の例外が発生します。
2 つの質問があります。
- 上記の例外が発生した場合、「未解決の問題」としてキャッチする必要がありますか? または、構成を調整する必要がありますか? もらってはいけないものですか?
- 継続的デリバリーのシナリオはどのように管理すればよいですか? 個別に解決するには、異なる大きな時間枠を定義する必要がありますか? しかし、これらのウィンドウの境界を定義する方法は? また、国境を越えて計画された配送をどのように管理するのでしょうか? (この解決策は私には正しくないようです)
編集1:
OptaPlanner のバージョンを 6.0.0.CR3 から 6.0.0.CR4-Pre1 に更新すると、NullPointerException が解決されました。ドキュメントはリアルタイム計画について明確であり、プランナーをリアルタイム モードで実行することをすでに検討していました。しかし、上記の例では結果が良くなかったので、その状況を管理するために他に何ができるかを理解しようとしていました. ルールarrivalBeforeReadyTimeをソフト制約からハード制約に切り替えたところ、NullPointerExceptionが発生せず、タイムスケジュールが適切に管理されているようで、結果は次のようになりました(例):
問題文:
解決
ご覧のとおり、需要の合計が車両の容量を超えているため、最初の配送は実行できません。それが正しいと考えるべきですか?つまり、その場合の良い解決策は、両方の車両を使用して顧客を管理することです 1、2、3。vehicleCapacity を厳しい制約として、例と同じ構成を使用しています。さらに、ハード制約を使用している場合も、顧客 2 と 1 は準備時間の前に提供されます。
drools - OptaPlanner CVRPTW - 容量の問題を解決
次の CVRPTW 問題があり、OptaPlanner で適切な解決策を見つけようとしています。時刻は hh:mm:ss 形式です。
私のDRLファイルはこんな感じです。さらに、準備完了時間前の到着に関連する厳しい制約も定義しました。私のソルバー構成は次のようになりますが、終了タグが異なります。
これは問題のステートメントです:
10 個のアイテムと 1 つのデポを収容できる 2 台の車両があります。
これが解決策です (車両ごとにグループ化され、到着時間によって並べ替えられた顧客):
(D = デマンド、Ar.T = 到着時間、Prev.D = 前の場所からの距離、Next.D の次の場所からの距離)
ご覧のとおり、車両 2 は 6+4+5+2+3=20 個のアイテムを輸送する必要があり、これは容量を超えています。構成の容量に関連する厳しい制約がある場合に、ソルバーがこのソリューションを提案する理由がわかりません。
私のルールを考えると、これは受け入れられる解決策ではありません。何か不足していますか?ソルバーが解を提供しない状況はありませんか? 「ソルバーが失敗した」終了が考えられますか?