問題タブ [or-tools]
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.
c# - C#Google Or ToolsはLinearSolver出力を文字列にリダイレクトします
Google Or Tools LinearSolver を使用していくつかのモデルを実装しました。バックエンドでは、私が使用しているのはSCIPです
アプリケーションをコンソール アプリとして実行している場合、出力は直接コンソールに送られます。カスタム TextWriter 実装に設定しようとConsole.SetOut
しましたが、うまくいかないようです。
私の問題は、ASP.NET プロジェクトの BackgroundWorker でソルバーを使用し、解決中にソルバーから出力を取得する必要があることです。(MIP-GAP LBなどの近況報告みたいな)
python-3.x - ORTools を使用してカスタムの酸洗いコードを実装する
私はマルチプロセッシングを使用しており、pickle モジュールが Python オブジェクト構造をシリアライズおよびデシリアライズするためのバイナリ プロトコルを実装していることを知っています。
また、整数、リスト、セットなど、どのタイプのデータをピクルできるかを知っています....
しかし、 pick_able ではない他のデータを使用したい場合は、どうすればよいですか?
より正確には、マルチプロセッシングを使用して、ORTools の作成制約を並列化したいと考えています。ブローは私のコードです:
しかし、私はこのエラーが発生しました:
この問題を解決するにはどうすればよいですか?
python - ORTools で制約を削除する方法
ソルバーをクリアして最初から制約を作成せずに、定義された制約をソルバーから削除する方法はありますか?
私の問題は、2 つの制約がある 3 つの変数の合計を最大化することだとします。
制約 1: 変数 2 は 8 から 10 の間でなければなりません
制約 2: 変数 3 は 5 から 10 の間でなければなりません
コードを 2 回目に実行したときに、制約番号 2 を削除したいのですが、それを行う操作が見つからず、ソルバーをクリアして最初から制約を定義するしか方法がありません。
このセミコードでは制約の数が限られていましたが、実際、私の実際のコードでは制約の数が多く、最初から定義することはできません。
optimization - 値の配列を Google ortools に下限と上限に対して追加するにはどうすればよいですか?
ドキュメントと私が見つけることができるすべての例では...少なくとも看護師のスケジューリングに関しては、誰もが{1,4}の検索スペース内でシフト値を宣言するだけで、たとえばシフト1,2,3,4....
呼び出すときに値の範囲の使用を避けたいsolver.IntVar(lowerbound, upperbound, ...)
私が欲しいIntSolver([available values that you can choose], ...)
初日から最終日まで列が流れるように、すべてのシフトのマトリックスを作成しました。私の行のインデックスは重要ではありませんが、各日/シフトの列には、そのシフトに最も高い入札を行った看護師のインデックス値が降順で表示されています。次に、看護師を選択した場合に、列から他の制約を介して許可される最大入札額を選択する制約を作成したいのですが、限られたドキュメントまたはツールが python で持っていることを考えると、その方法がわかりませんIntVar
。
python - 車両基地での車両のリロードと継続
ORTOOL と Python を使用して配送計画を作成しようとしています。私の制約は次のとおりです。
- 各車両には開始時刻と終了時刻があります
- 各車両には、デポで保管されたアイテムの独自の容量があります
- 各車両には独自の速度があります。
1 と 3 については、AddDimensionWithVehicleTransits を使用して正常に動作します。2 番目の制約では、車両が空の場合、車両はデポに戻ってアイテムを取得し、再び開始する必要があります。
燃料補給の例を見たので、容量が 0 未満のノードを設定すると問題なく動作します。しかし、私の場合、デポは給油ポイントであり、ソルバーはビークルをそこに戻らせません。
私の次元はそのように設定されています:
基本的に、最大容量は 4 です。
必要なもの:
燃料補給ポイントをデポに配置する方法について何か考えはありますか?
よろしく
python - 車両間の最大距離を最小限に抑える
車両間の最大距離を最小限に抑えるために、スパン コスト係数を使用することをお勧めします。
https://developers.google.com/optimization/routing/vrp#exampleから取得
これは、費用関数が距離 (つまり、燃料の使用量) ではなく移動時間に基づいており、目標が最後の車両をできるだけ早くデポに戻すことである場合に特に役立ちます。
Q1: 目的関数を車両間の最大コスト (総コストとグローバル スパンの合計ではない) に定義できますか?
これが不可能な場合、私はその理由が何であるか疑問に思っています。A) そのような制約を実装するのは難しい、または B) (スパン制約を使用する場合と比較して) 悪い解決策をもたらす暗黙の欠点が欠けていると想像できます。
グローバル スパン制約を 1000 に設定したとしても (しかし、それはどういう意味ですか?)、すべての車両が使用されていることを保証するものではないことに気付きました。より多くの車両を使用することで、そのソリューションを改善できるはずですよね?
編集: これは最小限の作業例です。20 か所の停留所で 5 台の車両を利用できます。停留所間の移動時間を 1 時間と定義しているため、最適な解決策は、各ルートに 4 つの停留所が含まれ、すべての車両が 4 時間後に車両基地に戻ることです。グローバル スパンの制約がなければ、1 台の車両が合計 20 時間ですべての作業を行います。グローバル スパン制約 (係数 = 1000) を使用すると、2 台の車両がそれぞれ 10 か所の停留所にサービスを提供します。
ソリューション プロッターの出力:
車両 0 のルート: 0 -> 11 -> 12 -> 13 -> 14 -> 15 -> 16 -> 17 -> 18 -> 19 -> 0 ルート 0 の所要時間: 10 時間
車両 1 のルート: 0 -> 10 -> 0 ルート 1 の所要時間: 2 時間
車両 2 のルート: 0 -> 0 ルート 2 の所要時間: 1 時間
車両 3 のルート: 0 -> 0 ルート 3 の所要時間: 1 時間
車両 4 のルート: 0 -> 9 -> 8 -> 7 -> 6 -> 5 -> 4 -> 3 -> 2 -> 1 -> 0 ルート 4 の所要時間: 10 時間
全ルートの合計所要時間: 24 時間