線形計画法とカーマーカー法 〜プログラマのための数学勉強会#3〜

線形計画法とカーマーカー法 〜プログラマのための数学勉強会#3〜

カーマーカー法はやめて「線形計画法と整数計画法」です。

A75c909334d4dc6c7dca7bd915eebdbf?s=128

Shintaro Kaneko

May 22, 2015
Tweet

Transcript

  1. ઢܗܭը๏ͱΧʔϚʔΧʔ๏ ϓϩάϥϚͷͨΊͷ਺ֶษڧձ

  2. ઢܗܭը๏ͱΧʔϚʔΧʔ๏

  3. ΧʔϚʔΧʔͷ࿩͸୭ಘ

  4. ΧʔϚʔΧʔͷ࿩͸୭ಘ ͑ͬʂʁ

  5. ઢܗܭը๏ͱΧʔϚʔΧʔ๏

  6. ઢܗܭը๏ͱ੔਺ܭը๏

  7. ࣗݾ঺հ Shintaro Kaneko ‣ גࣜձࣾΤ΢ϨΧ ‣ pairsͷ։ൃશൠ୲౰ ‣ ࠷ۙ͸GoݴޠͰ։ൃ͍ͯ͠·͢ ‣

    େֶ࣌୅ ‣ ࠷దԽ໰୊ͷඇઢܗܭը๏Λઐ߈ ‣ github.com/kaneshin/lbfgs ʢݹʣ ‣ ඍ෼ํఔ͕ࣜ޷͖ͩͬͨ kaneshin kaneshinth shintaro.kaneko
  8. ࣗݾ঺հ Shintaro Kaneko ‣ גࣜձࣾΤ΢ϨΧ ‣ pairsͷ։ൃશൠ୲౰ ‣ ࠷ۙ͸GoݴޠͰ։ൃ͍ͯ͠·͢ ‣

    େֶ࣌୅ ‣ ࠷దԽ໰୊ͷඇઢܗܭը๏Λઐ߈ ‣ github.com/kaneshin/lbfgs ʢݹʣ ‣ ඍ෼ํఔ͕ࣜ޷͖ͩͬͨ kaneshin kaneshinth shintaro.kaneko ٱ͠ৼΓͷ਺ֶʂ
  9. Copyright © 2009-2015 eureka, Inc. All rights reserved.

  10. Copyright © 2009-2015 eureka, Inc. All rights reserved.

  11. Copyright © 2009-2015 eureka, Inc. All rights reserved. ‣ pairs͸ϚονϯάΞϧΰϦζϜ͕ඇৗʹॏཁ

    ‣ ๛෋ͳϢʔβʔͷσʔλͷ׆༻ ‣ ΤϯδχΞ͕Ϗδωε໘͔ΒΞϧΰϦζϜΛߟ͑Δ ‣ ࣾ಺ษڧձͰRษڧʴ౷ܭֶͷษڧձ΋։࠵ ‣ ϏοάσʔλΛਖ਼͍͠஌ࣝͰ࢖༻͢Δ ‣ ౷ܭΛؒҧͬͨೝࣝͰ࢖༻͠ͳ͍ʢภͬͨσʔλΛ࢖Θͳ͍
  12. ຊ೔͸౷ܭͷ࿩Ͱ͸ ͋Γ·ͤΜʂ

  13. ຊ೔ͷΰʔϧ

  14. ຊ೔ͷΰʔϧ ࠷దԽʢ਺ཧܭըʣΛ ͪΐͬͱͰ΋஌ͬͯ΋Β͏

  15. ຊ೔࿩͢͜ͱ

  16. ຊ೔࿩͢͜ͱ ΦϖϨʔγϣϯζɾϦαʔν ࠷దԽ໰୊ʢ਺ཧܭը໰୊ʣ ઢܗܭը໰୊ͱ੔਺ܭը໰୊

  17. ຊ೔΍Βͳ͍͜ͱ ΍Βͳ͍͜ͱ ϓϩάϥϜͰγϛϡϨʔγϣϯ ΍Γ͔ͨͬͨΜͰ͕͢ ͕࣌ؒݫ͍͠ͷͰׂѪ

  18. ຊ೔࿩͢͜ͱ ΦϖϨʔγϣϯζɾϦαʔν ࠷దԽ໰୊ʢ਺ཧܭը໰୊ʣ ઢܗܭը໰୊ͱ੔਺ܭը໰୊

  19. ΦϖϨʔγϣϯζɾϦαʔν

  20. ΦϖϨʔγϣϯζɾϦαʔνʢORʣ ‣ OR͸૬౰޿͍෼໺Λࢦ͢ ‣ ༷ʑͳܭըʹରͯ͠࠷΋ޮ཰తʹͳΔΑ͏ҙࢥܾఆ͢Δ ‣ ਺ֶɾ౷ܭతϞσϧɺΞϧΰϦζϜͷར༻ ‣ ʮγϛϡϨʔγϣϯʯͷཱ֬͸ORཱ͕໾ऀ ‣

    ORͰ͸ݱ࣮ͷ໰୊Λ਺ཧϞσϧʹஔ͖׵͑Δ ‣ ࠷దԽɼ଴ͪߦྻɼ֬཰ͳͲ ‣ ܉ࣄతؔ৺ͱܦࡁతؔ৺͕ڧ͍෼໺
  21. ͭ·Γʁ

  22. ྫ͑͹ɼேͷ௨ۈిं

  23. ேͷ௨ۈిं ‣ ܦ࿏ݕࡧʹʮYahoo!࿏ઢʯ࢖͍ͬͯΔͱࢥ͍·͢ ‣ ཪଆͰ͸ʮܦ࿏ޮ཰ʯ΍ʮίετޮ཰ʯͷߟྀ ‣ Ո͔ΒӺ·Ͱʹཁ͢Δ࣌ؒΛܭࢉ ‣ ెา΍ӺͰిंΛ଴ͨͳ͍Α͏ʹग़ൃ͢Δܭը ‣

    ࢁखઢͷَͷΑ͏ͳμΠϠ ‣ γϛϡϨʔγϣϯ͕Կສճ΋͞Εͨ݁Ռ
  24. ேͷ௨ۈిं ‣ ܦ࿏ݕࡧʹʮYahoo!࿏ઢʯ࢖͍ͬͯΔͱࢥ͍·͢ ‣ ཪଆͰ͸ʮܦ࿏ޮ཰ʯ΍ʮίετޮ཰ʯͷߟྀ ‣ Ո͔ΒӺ·Ͱʹཁ͢Δ࣌ؒΛܭࢉ ‣ ెา΍ӺͰిंΛ଴ͨͳ͍Α͏ʹग़ൃ͢Δܭը ‣

    ࢁखઢͷَͷΑ͏ͳμΠϠ ‣ γϛϡϨʔγϣϯ͕Կສճ΋͞Εͨ݁Ռ ͜ΕΒ΋ORͷҰछ
  25. ׂͱ਎ۙʹOR

  26. ຊ೔࿩͢͜ͱ ΦϖϨʔγϣϯζɾϦαʔν ࠷దԽ໰୊ʢ਺ཧܭը໰୊ʣ ઢܗܭը໰୊ͱ੔਺ܭը໰୊

  27. ࠷దԽ໰୊

  28. ࠷దԽ໰୊͸ORͷҰཁૉ

  29. ઢܗܭը໰୊ ඇઢܗܭը໰୊ ੔਺ܭը໰୊ ήʔϜཧ࿦ OR σʔλ ϚΠχϯά : : :

    : ۚ༥޻ֶ ࠷దԽ໰୊
  30. ࠷దԽ໰୊ͱ͸ ʢoptimization problemʣ ਺ཧܭը໰୊ͱ΋Α͹ΕΔ ʢMathematical Programming Problemʣ

  31. ࠷దԽ໰୊ͱ͸ ༩͑ΒΕͨ৚݅ͷ΋ͱͰ ԿΒ͔ͷؔ਺Λ࠷খԽɾ࠷େԽ͢Δ໰୊

  32. ࠷దԽ໰୊ͱ͸ ༩͑ΒΕͨ৚݅ͷ΋ͱͰ ԿΒ͔ͷؔ਺Λ࠷খԽɾ࠷େԽ͢Δ໰୊

  33. ࠷దԽ໰୊ͱ͸

  34. ࠷దԽ໰୊ͱ͸ ੍໿৚݅ͷ΋ͱͰ

  35. ࠷దԽ໰୊ͱ͸ ੍໿৚݅ͷ΋ͱͰɼ໨తؔ਺ͷ

  36. ࠷దԽ໰୊ͱ͸ ੍໿৚݅ͷ΋ͱͰɼ໨తؔ਺ͷ ࠷ద஋ͱͳΔ

  37. ࠷దԽ໰୊ͱ͸ ੍໿৚݅ͷ΋ͱͰɼ໨తؔ਺ͷ ࠷ద஋ͱͳΔ࠷దղΛ

  38. ࠷దԽ໰୊ͱ͸ ੍໿৚݅ͷ΋ͱͰɼ໨తؔ਺ͷ ࠷ద஋ͱͳΔ࠷దղΛ࣮ߦՄೳྖҬ͔Β୳͢

  39. ࠷దԽ໰୊ͱ͸ ੍໿৚݅ͷ΋ͱͰɼ໨తؔ਺ͷ ࠷ద஋ͱͳΔ࠷దղΛ࣮ߦՄೳྖҬ͔Β୳͢

  40. ໨తؔ਺ɾ੍໿৚݅ʹΑͬͯ ࠷దԽ໰୊͸෼ྨ͞ΕΔ

  41. ࠷దԽ໰୊ͷ෼ྨʢ෦෼తʣ ‣ ઢܗܭը໰୊ ‣ ໨తؔ਺ɾ੍໿৚݅ͷू߹͕̍࣍ࣜͷΈ ‣ ඇઢܗܭը໰୊ ‣ ໨తؔ਺ɾ੍໿৚݅ʹඇઢܗ͕ࣜଘࡏ͢Δ ‣

    ੔਺ܭը໰୊ʢࠞ߹੔਺ɾ७੔਺ʣ ‣ ੍໿৚݅ͷҰ෦·ͨ͸શͯͷม਺ͷͱΔ஋͕੔਺ ‣ ̎࣍ܭը໰୊ ‣ ໨తؔ਺͕̎࣍ࣜɼ੍໿৚݅ͷू߹͕̍࣍ࣜ etc…
  42. ઢܗܭը໰୊ ඇઢܗܭը໰୊ ੔਺ܭը໰୊ ήʔϜཧ࿦ OR ࠷దԽ໰୊ σʔλ ϚΠχϯά : :

    : : ۚ༥޻ֶ
  43. ઢܗܭը໰୊ ඇઢܗܭը໰୊ ੔਺ܭը໰୊ ήʔϜཧ࿦ OR ࠷దԽ໰୊ σʔλ ϚΠχϯά : :

    : : ۚ༥޻ֶ
  44. ຊ೔࿩͢͜ͱ ΦϖϨʔγϣϯζɾϦαʔν ࠷దԽ໰୊ʢ਺ཧܭը໰୊ʣ ઢܗܭը໰୊ͱ੔਺ܭը໰୊

  45. ઢܗܭը໰୊

  46. ઢܗܭը໰୊ ໨తؔ਺ɾ੍໿৚݅ͷू߹͕̍࣍ࣜͷΈ

  47. ྫɿੜ࢈ܭը໰୊

  48. ̎ม਺ͷੜ࢈ܭը໰୊ ‣ M1, M2, M3ͷݪྉΛ༻͍ͯɼP1, P2Λੜ࢈͍ͯ͠Δ

  49. ̎ม਺ͷੜ࢈ܭը໰୊ ‣ M1, M2, M3ͷݪྉΛ༻͍ͯɼP1, P2Λੜ࢈͍ͯ͠Δ ‣ ར༻ՄೳྔɿM1 ≦ 27t,

    M2 ≦ 45t, M3 ≦15t
  50. ̎ม਺ͷੜ࢈ܭը໰୊ ‣ M1, M2, M3ͷݪྉΛ༻͍ͯɼP1, P2Λੜ࢈͍ͯ͠Δ ‣ ར༻ՄೳྔɿM1 ≦ 27t,

    M2 ≦ 45t, M3 ≦15t ‣ P1ͷੜ࢈ ‣ M1Λ2t, M2Λ8t, M3Λ3t ‣ ར५͸2ສʂ
  51. ̎ม਺ͷੜ࢈ܭը໰୊ ‣ M1, M2, M3ͷݪྉΛ༻͍ͯɼP1, P2Λੜ࢈͍ͯ͠Δ ‣ ར༻ՄೳྔɿM1 ≦ 27t,

    M2 ≦ 45t, M3 ≦15t ‣ P1ͷੜ࢈ ‣ M1Λ2t, M2Λ8t, M3Λ3t ‣ ར५͸2ສʂ ‣ P2ͷੜ࢈ ‣ M1Λ6t, M2Λ6t, M3Λ1t ‣ ར५͸5ສʂ
  52. ̎ม਺ͷੜ࢈ܭը໰୊ ‣ M1, M2, M3ͷݪྉΛ༻͍ͯɼP1, P2Λੜ࢈͍ͯ͠Δ ‣ ར༻ՄೳྔɿM1 ≦ 27t,

    M2 ≦ 45t, M3 ≦15t ‣ P1ͷੜ࢈ ‣ M1Λ2t, M2Λ8t, M3Λ3t ‣ ར५͸2ສʂ ‣ P2ͷੜ࢈ ‣ M1Λ6t, M2Λ6t, M3Λ1t ‣ ར५͸5ສʂ ར५Λ࠷େԽ͍ͨ͠
  53. ̎ม਺ͷੜ࢈ܭը໰୊ ݪྉʘ੡඼ P1 P2 ར༻Մೳྔ M1 2 6 27 M2

    8 6 45 M3 3 1 15 ར५ 2 5
  54. ̎ม਺ͷੜ࢈ܭը໰୊ ݪྉʘ੡඼ P1 P2 ར༻Մೳྔ M1 2 6 27 M2

    8 6 45 M3 3 1 15 ར५ 2 5
  55. ̎ม਺ͷੜ࢈ܭը໰୊ ੡඼P1, P2ͷੜ࢈ྔΛมྔ (x1, x2) ͱ͢Δͱ Λ࠷େԽͤ͞Δ࠷దԽ໰୊ͱͳΔ

  56. ̎ม਺ͷੜ࢈ܭը໰୊ ݪྉʘ੡඼ P1 P2 ར༻Մೳྔ M1 2 6 27 M2

    8 6 45 M3 3 1 15 ར५ 2 5
  57. ̎ม਺ͷੜ࢈ܭը໰୊ ੍໿৚݅͸ར༻Մೳͳݪྉͷྔͱ੡඼͸ඇෛ

  58. ̎ม਺ͷੜ࢈ܭը໰୊ ੍໿৚݅͸ར༻Մೳͳݪྉͷྔͱ੡඼͸ඇෛ

  59. ̎ม਺ͷੜ࢈ܭը໰୊ ઢܗܭը໰୊ͱͯ͠ఆࣜԽ

  60. ̎ม਺ͷੜ࢈ܭը໰୊ ઢܗܭը໰୊ͱͯ͠ఆࣜԽ ͜ͷ໰୊ͷ࠷దղΛٻΊ͍ͨ

  61. ͱ͜ΖͰ

  62. ੡඼͸࿈ଓ஋͔ʁ

  63. ੔਺ܭը໰୊

  64. ੔਺ܭը໰୊ ੍໿৚݅ͷҰ෦·ͨ͸શͯͷม਺ͷͱΔ஋͕੔਺

  65. ྫɿੜ࢈ܭը໰୊ʢ੔਺ʣ

  66. ̎ม਺ͷੜ࢈ܭը໰୊ʢ੔਺ʣ ‣ M1, M2, M3ͷݪྉΛ༻͍ͯɼP1, P2Λੜ࢈͍ͯ͠Δ ‣ ར༻ՄೳྔɿM1 ≦ 27t,

    M2 ≦ 45t, M3 ≦15t ‣ P1ͷੜ࢈ ‣ M1Λ2t, M2Λ8t, M3Λ3t ‣ ར५͸2ສʂ ‣ P2ͷੜ࢈ ‣ M1Λ6t, M2Λ6t, M3Λ1t ‣ ར५͸5ສʂ ར५Λ࠷େԽ͍ͨ͠
  67. ̎ม਺ͷੜ࢈ܭը໰୊ʢ੔਺ʣ ‣ M1, M2, M3ͷݪྉΛ༻͍ͯɼP1, P2Λੜ࢈͍ͯ͠Δ ‣ ར༻ՄೳྔɿM1 ≦ 27t,

    M2 ≦ 45t, M3 ≦15t ‣ P1ͷੜ࢈ɹݸ਺ͰΫϨ ‣ M1Λ2t, M2Λ8t, M3Λ3t ‣ ར५͸2ສʂ ‣ P2ͷੜ࢈ɹݸ਺ͰΫϨ ‣ M1Λ6t, M2Λ6t, M3Λ1t ‣ ར५͸5ສʂ ར५Λ࠷େԽ͍ͨ͠
  68. ̎ม਺ͷੜ࢈ܭը໰୊ʢ੔਺ʣ ‣ M1, M2, M3ͷݪྉΛ༻͍ͯɼP1, P2Λੜ࢈͍ͯ͠Δ ‣ ར༻ՄೳྔɿM1 ≦ 27t,

    M2 ≦ 45t, M3 ≦15t ‣ P1ͷੜ࢈ɹݸ਺ͰΫϨ ‣ M1Λ2t, M2Λ8t, M3Λ3t ‣ ར५͸2ສʂ ‣ P2ͷੜ࢈ɹݸ਺ͰΫϨ ‣ M1Λ6t, M2Λ6t, M3Λ1t ‣ ར५͸5ສʂ ར५Λ࠷େԽ͍ͨ͠ ੔਺ ੔਺
  69. ̎ม਺ͷੜ࢈ܭը໰୊ʢ੔਺ʣ ઢܗܭը໰୊ͱͯ͠ఆࣜԽ

  70. ̎ม਺ͷੜ࢈ܭը໰୊ʢ੔਺ʣ ઢܗܭը໰୊ͱͯ͠ఆࣜԽ ੔਺ͰΫϨ ੔਺ͰΫϨ

  71. ̎ม਺ͷੜ࢈ܭը໰୊ʢ੔਺ʣ ੔਺ܭը໰୊ͱͯ͠ఆࣜԽ

  72. ̎ม਺ͷੜ࢈ܭը໰୊ʢ੔਺ʣ ੔਺ܭը໰୊ͱͯ͠ఆࣜԽ ͜ͷ໰୊ͷ࠷దղΛٻΊ͍ͨ

  73. άϥϑͰΈΔղ๏ ԼهΛάϥϑͰදݱ͢Δ

  74. None
  75. None
  76. ઢܗܭը໰୊ͷ৔߹

  77. ઢܗܭը໰୊ͷ৔߹

  78. ઢܗܭը໰୊ͷ৔߹

  79. ઢܗܭը໰୊ͷ৔߹ ࠷దղ

  80. ੔਺ܭը໰୊ͷ৔߹

  81. ੔਺ܭը໰୊ͷ৔߹ ࠷దղ?

  82. ੔਺ܭը໰୊ͷ৔߹ ࠷దղ!

  83. ઢܗܭըͱ੔਺ܭըͷҧ͍ ‣ ઢܗܭը໰୊ͷ࠷దղ ‣ ୯ମ๏ͱ͍͏ɺลΛḷ͍ͬͯ͘ํ๏͕࣮༻త ‣ ଟ߲ࣜ࣌ؒͰղ͚ͳ͍ͱ͖͕͋Δ ‣ ಺఺๏ͱ͍͏ղ๏΋ଘࡏ͢Δ ‣

    ࣮ߦྖҬͷ಺෦͔ΒղΛ୳ࡧ͢Δ ‣ ੔਺ܭըͷ࠷దղ ‣ ઢܗܭըͰಘΒΕͨ࠷దղʹ͍ۙ੔਺ͷ఺͕࠷దղʹͳΒͳ͍ ৔߹͕͋Δ ಺఺๏͸ ϫγ͕ҭͯͨ
  84. ·ͱΊ

  85. ·ͱΊ ࠷దԽ໰୊͸ ͳΜͱͳ͘ཧղͯ͠΋Β͑ͨͰ͠ΐ͏͔ʁ

  86. ·ͱΊ - ࠷ޙʹ ‣ ͜ͷ෼໺͸·ͩ·ͩϓϩάϥϜͷࢿ࢈͕গͳ͍ ‣ ਺ཧϞσϧʹམͱͨ͢Ίʹ਺ֶͷ஌͕ࣝͳ͍ͱ೉͍͠ ‣ ઐ໳తͳاۀ͕ಠ઎͍ͯ͠Δײ͕͋Δ ‣

    ͦΕͧΕͷܭը໰୊͸ߟ͑Δ͜ͱ͕ҧ͏ ‣ ݚڀ͍ͨ͠৔߹͸෼໺ΛߜΔ΂͖
  87. ·ͱΊ ͜ΕҎ্ͷ࠷దԽ໰୊ͷ࿩΍ γϛϡϨʔγϣϯͳͲ͸ ୭͔͕΍ͬͯ͘ΕΔͱ৴͍ͯ͡·͢ʂ

  88. Thank you :)

  89. ͓·͚ - ಺఺๏ʢΧʔϚʔΧʔ๏ʣ