これは、複数商品フロー問題のバリエーションです。
これらの問題は、フローが整数である必要がある場合に特に解決が困難です。つまり、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