特定の時間にさまざまなポイント間を移動する必要があるオブジェクトのグループがあるという問題を解決しようとしています。
線形計画法の観点から、ほとんどの制約を形式化することができました。つまり、次のようになります。
object1FirstDepartureTime > X
object1FirstArrivalTime < Y
object1FirstArrivalTime - object1FirstDepartureTime > Z
object1SecondDepartureTime - object1FirstArrivalTime > A
などなど、すべてのオブジェクトとすべての到着/出発について同様です。目的関数は、移動にかかる時間を最小限または最大限にすることです。
私が抱えている問題は、もう 1 つの制約があることです。特定のオブジェクトは、移動中に他のオブジェクトを同伴する必要があります。たとえば、object1 には、object2、object3、または object4 が付随する可能性があります。これらのオブジェクト自体には、特定の到着または出発の制約があります。(おそらく混合整数の) 線形プログラムに、付随するオブジェクトの選択を処理させたいと思います。しかし、これを形式化しようとしている間、それを線形に保つ方法がわかりません。次のような混合整数制約を考えました
object2GoWIthObject1 + object3GoWithObject1 + object4GoWithObject1 < 2
object2GoWIthObject1, object3GoWithObject1, object4GoWithObject1 are all less than 2
object2GoWIthObject1, object3GoWithObject1, object4GoWithObject1 are all integers
しかし、「物体 2 が物体 1 を伴う場合、物体 1 とともに X 時刻に出発し、Y 時刻に到着する」という制約の表現方法がわかりません。これは、ブール変数 (オブジェクト 2 がオブジェクト 1 を伴う場合) に移動時間を乗算するため、非線形に見えます。
もちろん、「if...then...」ステートメントごとに異なる線形問題を作成することもできますが、60 個の付随するパスと 10 個の付随するオブジェクトを使用すると、10^60 個の線形プログラムを解決する必要があります。良い。
この線形計画法の問題を形式化して、「X は Y に付随するか?」という決定を行う方法について直感を持っている人がいるとします。問題自体で表現することができます。