SlideShare a Scribd company logo
1 of 24
Download to read offline
きっかけ
解法
結果
.
.
最急降下法で
制約つき最適化問題を解いてみた
Kazuhiro HISHINUMA (@kazh98)
明治大学情報科学科 数理最適化研究室
at 私立・プログラミング 2013 (8/18)
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
研究室紹介で・・・
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
研究室紹介で・・・
数理計画問題の例(生産計画)	
2種類の原料 M1,	
  M2	
  	
  	
  から、3種類の製品P1,	
  P2,	
  P3	
  
を生産し、利潤を最大にしたい。	
  
	
  
	
  
	
  
決定変数    :P1,	
  P2,	
  P3	
  	
  の生産量
(トン)         → 最大化	
  
 条件: 	
  
	
   P1	
 	
  	
  	
  	
  	
  	
  	
  P2	
 	
  	
  	
  	
  	
  	
  	
  	
  P3	
 利用可能量	
  
(トン)	
	
  	
  	
  	
  	
  	
  	
  M1	
  	
  	
  (トン)	
    3	
 	
  	
  	
  	
  	
  	
  	
  	
  5	
 	
  	
  	
  	
  	
  	
  	
  	
  	
  2	
 	
  	
  	
  	
  	
  	
  	
  500	
	
  	
  	
  	
  	
  	
  	
  M2 (トン) 	
 	
  	
  	
  	
  	
  	
  	
  	
  	
  2	
 	
  	
  	
  	
  	
  	
  	
  	
  7	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
	
  	
  	
  	
  	
  	
  	
  	
  	
  4	
 	
  	
  	
  	
  	
  	
  	
  400	
利潤 (万円/トン)	
 	
  	
  	
  	
  	
  	
  	
  	
  	
  4	
 	
  	
  	
  	
  	
  	
  	
  	
  5	
 	
  	
  	
  	
  	
  	
  	
  	
  	
  3	
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
おぺにゃん
解いてっ( ・ヮ<)-♡
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
おぺにゃん
「
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
おぺにゃん
「x1 = 150, x2 = 0, x3 = 25」
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
\ 終了 /
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
ということで、
1
最適化ソルバ lp-solve
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
ということで、
おぺにゃんが飛び道具1を
持ちだして悔しいので、
1
最適化ソルバ lp-solve
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
ということで、
おぺにゃんが飛び道具1を
持ちだして悔しいので、
Schemeで解き返そう!!
1
最適化ソルバ lp-solve
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
制約なし最適化問題
制約あり最適化問題へ
射影の定義
手元にあるのは・・・1
1
PC 絶不調のためウェブが使えない!!
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
制約なし最適化問題
制約あり最適化問題へ
射影の定義
手元にあるのは・・・1
制約なし最適化問題
の解法のみ
1
PC 絶不調のためウェブが使えない!!
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
制約なし最適化問題
制約あり最適化問題へ
射影の定義
最急降下法
Minimize f(x) に対して,
x(n+1) = x(n) −λ(n)∇f(x(n))
lim
n→∞
λ(n)
= 0 だと嬉しいなぁ・・・
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
制約なし最適化問題
制約あり最適化問題へ
射影の定義
方針は・・・
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
制約なし最適化問題
制約あり最適化問題へ
射影の定義
方針は・・・
飛び出た部分を
ぶっ叩け!!!
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
制約なし最適化問題
制約あり最適化問題へ
射影の定義
制約つき最適化問題に対する最急降下法
Maximize f(x) のために,
λ(n)
= 1
(n+1)
0.45 として,
x(n+1)
= P2
(
P1
(
P0
(
x(n)
+ λ(n)
∇f(x(n)
)
)))
P0 は題意からの条件 x ∈ R3
+ に,
P1 は制約条件① 3x1 + 5x2 + 2x3 ≤ 500 に,
P2 は制約条件② 2x1 + 7x2 + 4x3 ≤ 400 に,
それぞれ対応。
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
制約なし最適化問題
制約あり最適化問題へ
射影の定義
題意からの条件
P0(x) =


max{0, x1}
max{0, x2}
max{0, x3}


P0 は x ∈ R3
+ に対応
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
制約なし最適化問題
制約あり最適化問題へ
射影の定義
制約条件①
3x1 + 5x2 + 2x3 > 500 のとき,
a = 3, b = 5, c = 2, d = 500 として,
P1(x) =
1
(abc)2
{
(ab)2
+ (bc)2
+ (ca)2
}
× (ax1 + bx2 + cx3 − d)


a
b
c


3x1 + 5x2 + 2x3 ≤ 500 であれば,P1(x) = x
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
制約なし最適化問題
制約あり最適化問題へ
射影の定義
制約条件②
2x1 + 7x2 + 4x3 > 400 のとき,
a = 2, b = 7, c = 4, d = 400 として,
P2(x) =
1
(abc)2
{
(ab)2
+ (bc)2
+ (ca)2
}
× (ax1 + bx2 + cx3 − d)


a
b
c


2x1 + 7x2 + 4x3 ≤ 400 であれば,P2(x) = x
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
x1, x2, x3 各値
0
20
40
60
80
100
120
140
160
0 100 200 300 400 500 600 700 800
x1
x2
x3
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
目的関数値
0
100
200
300
400
500
600
700
0 100 200 300 400 500 600 700 800
value
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
結果まとめ
10000 回の反復計算で,
x =


150.095
0.000
24.887

 , f(x) = 675.042
17.0 秒 on 2.3GHz Intel Core i5
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
最適化ソルバになんか、
負けないんだからねっ!!
(震え声)
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた
きっかけ
解法
結果
Thanks for
Your Listening!
Kazuhiro HISHINUMA (@kazh98) 最急降下法で制約つき最適化問題を解いてみた

More Related Content

More from Kazuhiro Hishinuma

すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~
すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~
すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~Kazuhiro Hishinuma
 
What Does R7RS Change Programming in Scheme?
What Does R7RS Change Programming in Scheme?What Does R7RS Change Programming in Scheme?
What Does R7RS Change Programming in Scheme?Kazuhiro Hishinuma
 
不動点×不動点×不動点コンビネータ
不動点×不動点×不動点コンビネータ不動点×不動点×不動点コンビネータ
不動点×不動点×不動点コンビネータKazuhiro Hishinuma
 
再帰でつくる、計算の世界
再帰でつくる、計算の世界再帰でつくる、計算の世界
再帰でつくる、計算の世界Kazuhiro Hishinuma
 
Implementation of Counters in ScopedBASIC
Implementation of Counters in ScopedBASICImplementation of Counters in ScopedBASIC
Implementation of Counters in ScopedBASICKazuhiro Hishinuma
 
Lisper は競プロを楽しめるか?
Lisper は競プロを楽しめるか?Lisper は競プロを楽しめるか?
Lisper は競プロを楽しめるか?Kazuhiro Hishinuma
 
GaucheでCGIプログラミング
GaucheでCGIプログラミングGaucheでCGIプログラミング
GaucheでCGIプログラミングKazuhiro Hishinuma
 
How to Implement a CPU Emulator in Scheme
How to Implement a CPU Emulator in SchemeHow to Implement a CPU Emulator in Scheme
How to Implement a CPU Emulator in SchemeKazuhiro Hishinuma
 
The Programming Language Scheme
The Programming Language SchemeThe Programming Language Scheme
The Programming Language SchemeKazuhiro Hishinuma
 
情報と職業プレゼン予告
情報と職業プレゼン予告情報と職業プレゼン予告
情報と職業プレゼン予告Kazuhiro Hishinuma
 
#upcamp '12 Hack-a-thon Result
#upcamp '12 Hack-a-thon Result#upcamp '12 Hack-a-thon Result
#upcamp '12 Hack-a-thon ResultKazuhiro Hishinuma
 

More from Kazuhiro Hishinuma (14)

すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~
すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~
すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~
 
What Does R7RS Change Programming in Scheme?
What Does R7RS Change Programming in Scheme?What Does R7RS Change Programming in Scheme?
What Does R7RS Change Programming in Scheme?
 
不動点×不動点×不動点コンビネータ
不動点×不動点×不動点コンビネータ不動点×不動点×不動点コンビネータ
不動点×不動点×不動点コンビネータ
 
再帰でつくる、計算の世界
再帰でつくる、計算の世界再帰でつくる、計算の世界
再帰でつくる、計算の世界
 
Implementation of Counters in ScopedBASIC
Implementation of Counters in ScopedBASICImplementation of Counters in ScopedBASIC
Implementation of Counters in ScopedBASIC
 
Lisper は競プロを楽しめるか?
Lisper は競プロを楽しめるか?Lisper は競プロを楽しめるか?
Lisper は競プロを楽しめるか?
 
GaucheでCGIプログラミング
GaucheでCGIプログラミングGaucheでCGIプログラミング
GaucheでCGIプログラミング
 
How to Implement a CPU Emulator in Scheme
How to Implement a CPU Emulator in SchemeHow to Implement a CPU Emulator in Scheme
How to Implement a CPU Emulator in Scheme
 
明治大の活動2
明治大の活動2明治大の活動2
明治大の活動2
 
明治大の活動予告
明治大の活動予告明治大の活動予告
明治大の活動予告
 
The Programming Language Scheme
The Programming Language SchemeThe Programming Language Scheme
The Programming Language Scheme
 
情報と職業プレゼン予告
情報と職業プレゼン予告情報と職業プレゼン予告
情報と職業プレゼン予告
 
#upcamp '12 Hack-a-thon Result
#upcamp '12 Hack-a-thon Result#upcamp '12 Hack-a-thon Result
#upcamp '12 Hack-a-thon Result
 
Scoped BASIC Presentation1
Scoped BASIC Presentation1Scoped BASIC Presentation1
Scoped BASIC Presentation1
 

最急降下法で制約つき最適化問題を解いてみた