Upgrade to Pro — share decks privately, control downloads, hide ads and more …

facility-location-problem.pdf

 facility-location-problem.pdf

Avatar for autumn_eel

autumn_eel

August 29, 2019

More Decks by autumn_eel

Other Decks in Programming

Transcript

  1. 小課題  小課題1 (累計200点) 1<=N,M<=15を満たす  小課題2 (累計1000点) 1<=N<=1000, 1<=M<=1000

    を満たす ただし、最小コストをCとして3*C以下の解が出力されていれ ば正解とみなす  小課題3 (累計869120点) 1<=N<=1000, 1<=M<=1000を満たす 小課題2とは違い、最小コストの解を出力する必要がある
  2. 整数計画問題へ  F: 施設(Facility)候補地を表す集合  C: 都市(City)を表す集合  c[i][j]: 施設iと都市jとの接続コスト(距離)

     f[i]: 施設の開設コスト  x[i][j]: 都市jは施設iに接続しているか? (0: 接続していない、1: 接続している)  y[i]: 施設iを開設しているか? (0: 開設していない、1: 開設している)
  3. 双対問題  以下のようなステップを繰り返す(d=ある程度小さな数) 1. まだ「施設に接続した」とみなされていない(後述)それぞれの都市jについ て、 α[j] を +d する

    (そのような都市がない場合、操作を終了する) 2. 1の操作によって a[j] - β[i][j] <= c[i][j] を満たさない i, j が発生した場合、 β[i][j] = a[j] - c[i][j] と更新する
  4. 双対問題  以下のようなステップを繰り返す(d=ある程度小さな数) 1. まだ「施設に接続した」とみなされていない(後述)それぞれの都市jについ て、 α[j] を +d する

    (そのような都市がない場合、操作を終了する) 2. 1の操作によって a[j] - β[i][j] <= c[i][j] を満たさない i, j が発生した場合、 β[i][j] = a[j] - c[i][j] と更新する 3. ∑β[i][j] >= f[i] となる施設 i が発生した場合、 施設 i を暫定的に「開設した」と宣言する
  5. 双対問題  以下のようなステップを繰り返す(d=ある程度小さな数) 1. まだ「施設に接続した」とみなされていない(後述)それぞれの都市jについ て、 α[j] を +d する

    (そのような都市がない場合、操作を終了する) 2. 1の操作によって a[j] - β[i][j] <= c[i][j] を満たさない i, j が発生した場合、 β[i][j] = a[j] - c[i][j] と更新する 3. ∑β[i][j] >= f[i] となる施設 i が発生した場合、 施設 i を暫定的に「開設した」と宣言する 4. (以前に開設が宣言されたものも含めて)既に開設された施設iとの接続コスト 以上のa[j]を持つ都市jを「施設iに接続した」とみなす
  6. 解析 2. そのような施設が開設されていない場合 施設iを「騙した」頂点 j' が必ず存在する 施設iが開設宣言されたステップをt1、施設i'が開設宣言されたステップをt2とすると、 a[j'] <= min(t1,t2)

    (施設iかjが開設されるステップ以前に都市j'は接続完了している) また、t1 <= a[j] (都市jが接続完了したのは施設iが開設されたとき以降) よって、a[j'] <= a[j]