これは、複数商品フロー問題のバリエーションです。
これらの問題は、フローが整数である必要がある場合に特に解決が困難です。つまり、1 つのソースs_dから 1 つのデマンドへのフローを からへt_dの複数のパスに「分割」することはできません。s_dt_d
これがあなたの問題の場合だと思います。つまり、1 つのソースから 1 つの宛先への複数のパスを介して gaz を送信できますが、これは「合理的」と思われます。
このトピックに関する広範な文献があり、主に整数バージョンまたは問題の非常に大きなインスタンス (通信ネットワークや輸送の問題で発生する) の解決に焦点を当てています。問題が小さい場合は、単純な線形ソルバーで十分です。
ネットワーク グラフは(E,V)、質問のように示されます。有向頂点を想定しています。
それぞれが source 、 destination 、 valueである一連Dの要求を考えます。この値を最大化する特定の需要を除いて、値は定数です。させて:d in Ds_dt_dV_dV_dd0
c^{min}_eエッジの最大容量e in E
c^{max}_eそのような容量を持つエッジeのサブセット内のエッジの最小容量E'
のノードのv場合V:
delta_{vd}の場合は 1、 の場合v = t_dは -1、v = s_dそれ以外の場合は 0
E^+_vは頭のある辺の集合ですv
E^-_vテール付きのエッジのセットですv
各エッジeと各需要に対して、エッジを通過するフローの量を表すd変数を導入します。x_{ed}de
問題は、次の形式の線形 (連続) モデルとして記述できます。
maximize V_{d0} on x and V_{d0}
subject to:
// flow constraints
forall v in V, d in D:
sum_{e in E^+_v x_{ed} - sum_{e in E^-_v} x_{ed} = V_d delta_{vd}
// max capacity constraints
forall e in E:
sum_{d in D} x_{ed} <= c^{max}_e
// min capacity constraints
forall e in E':
sum_{d in D} x_{ed} >= c^{min}_e
// bound constraints on the variable `x`
forall d in D, forall e in E:
0 <= x_{ed} <= V_d