ニューラルネットワークとは、脳の神経回路による計算をコンピュータで再現したものである。
ニューラルネットワークの学習モデルとして現在最も良く用いられるものの一つがバックプロパゲーションである。
バックプロパゲーションでは、入力から前向きにニューラルネットワークをたどりながら出力を求め、その結果と期待される出力の差が小さくなるように後ろ向きにニューラルネットワークをたどりながら各ニューロンの重みを更新する。
モンテカルロ法とは、乱数を用いて問題の近似解を求める手法の一つである。
モンテカルロ法は多項式時間で終了することを保証するが、得られた解が必ずしも正しいとは限らない。
モンテカルロ法を用いた数値計算の例としては、円周率の計算が有名である。
これは、[0, 1]x[0, 1] の範囲の乱数を多数生成し、そのうち原点を中心とする円の内部に含まれるものの割合を計算することで π/4 の値を近似的に求めるというものである。
カルマンフィルタとは、誤差のある離散的な観測値から時間変化するシステムの現在の状態を推定する手法。システムの現在の観測値と1ステップ前の推定値から、システムの現在の状態の推定値と1ステップ先の予測値を与える反復型の予測を行う。
カルマンフィルタは各ステップごとに予測と更新の二つを行う。予測では前ステップの推定値から現在の推定状態を計算し、更新では現在の観測値を利用して推定値を補正してより正確な値に近づける。
フィードバック制御は、連続動作するシステムにおいて、前回の入力に対する出力を入力要素の一つとすることで、より精密な出力を得る手法。制御を乱す外的要因(外乱)による影響を自動的に修正できるが、外乱による影響を検出してからでないと修正ができないという欠点が存在する。
フィードフォワード制御は、外乱による影響が現れる前に外乱を検知して修正を行う制御方式。対象となる外乱の影響を最小限にできるが、予期しない外乱に弱く、また一定の状態を維持するといったことができない。
そのため、通常はフィードバック制御とフィードフォワード制御を併用する。
wx = hx - l3coshθ
wy = hy - l3sinhθ
なので、(wx, wy) ≠ (0, 0) のとき、
(3)で示した手続きによりθ1およびθ2を求めることができる。
このとき、θ3 = hθ - θ1 - θ2 より、
残りのθ3も求めることができる。
また、(wx, wy) = (0, 0)のとき、
θ1およびθ2は一意に決まらない。
hθ = θ1 + θ2 + θ3
hx = wx + l3coshθ = l1cosθ1 + l2cos(θ1 + θ2) + l3cos(θ1 + θ2 + θ3)
hy = wy + l3sinhθ = l1sinθ1 + l2sin(θ1 + θ2) + l3sin(θ1 + θ2 + θ3)
直線OWとX軸のなす角をθ
wとし、
l
w = sqrt(w
x2 + w
y2)
余弦定理より、
l
22 = l
12 + l
w2 - 2l
1l
wcos(θ
w - θ
1)
加法定理より、
l
22 = l
12 + l
w2 - 2l
1cosθ
1 * l
wcosθ
w - 2l
1sinθ
1 * l
wsinθ
w 関節Eの座標を(e
x, e
y)とすると、
l
22 = l
12 + l
w2 - 2e
xw
x - 2e
yw
y 2e
yw
y = l
12 - l
22 + l
w2 - 2e
xw
x 両辺を二乗して、
4e
y2w
y2 = (l
12 - l
22 + l
w2)
2 - 4e
xw
x(l
12 - l
22 + l
w2) + 4e
x2w
x2 e
x2 + e
y2 = l
12なので、
4w
y2l
12 - 4e
x2w
y2 = (l
12 - l
22 + l
w2)
2 - 4e
xw
x(l
12 - l
22 + l
w2) + 4e
x2w
x2 e
xについて整理して、
4(w
x2 + w
y2)e
x2 - 4w
x(l
12 - l
22 + l
w2)e
x + (l
12 - l
22 + l
w2)
2 - 4w
y2l
12 = 0
w
x2 + w
y2 = l
w2なので、
4l
w2e
x2 - 4w
x(l
12 - l
22 + l
w2)e
x + (l
12 - l
22 + l
w2)
2 - 4w
y2l
12 = 0
この2次方程式の判別式をD
xとすると、
Dx/16 = wx2(l12 - l22 + lw2)2 - lw2((l12 - l22 + lw2)2 - 4wy2l12)
展開して整理すると、
Dx/16 = (wx2 - lw2)(l12 - l22 + lw2)2 + 4wy2l12lw2
wx2 - lw2 = - wy2なので、
Dx/16 = wy2(4l12lw2 - (l12 - l22 + lw2)2)
因数分解して、
Dx/16 = wy2(l2 - l1 + lw)(l2 + l1 - lw)(l1 - l2 + lw)(l1 + l2 + lw)
l1 + l2 + lw > 0なので、Dx > 0となるのは
wy ≠ 0 かつ l1 + l2 > lw かつ l1 + lw > l2 かつ l2 + lw > l1のとき、
つまり、
WがX軸上に存在せず、三点OEWが一直線上に並ばないときである。
このとき、DをDx/16 = wy2Dとすると、
ex = (wx(l12 - l22 + lw2) ± wy * sqrt(D)) / 2lw2
ex2 + ey2 = l12より、
ex = (wx(l12 - l22 + lw2) + wy * sqrt(D)) / 2lw2 のとき ey = (wy(l12 - l22 + lw2) - wx * sqrt(D)) / 2lw2
ex = (wx(l12 - l22 + lw2) - wy * sqrt(D)) / 2lw2 のとき ey = (wy(l12 - l22 + lw2) + wx * sqrt(D)) / 2lw2
また、(wx, wy) ≠ (0, 0) で、関節WがX軸上に存在する場合、
ex = wx(l12 - l22 + lw2) / 2lw2 = (l12 - l22 + wx2) / 2wx
ey = ±wx * sqrt(D) / 2lw2 = ±sqrt(D) / 2wx
同様に、(wx, wy) ≠ (0, 0) で、関節WがY軸上に存在する場合、
ex = ±sqrt(D) / 2wy
ey = (l12 - l22 + wy2) / 2wy
また、(wx, wy) ≠ (0, 0)で、三点OEWが一直線上に並ぶ場合、
ex = wx(l12 - l22 + lw2) / 2lw2
ey = wy(l12 - l22 + lw2) / 2lw2
よって、(wx, wy) ≠ (0, 0) のとき、
θ1, θ2はこれらのex, eyを用いて、
θ1 = atan(ey, ex)
θ2 = atan(wy - ey, wx - ex) - θ1
と表せる。
また、(wx, wy) = (0, 0) のとき、
θ1, θ2は一意に決まらない。
atan(y, x) = tan-1(y/x) ( x > 0 のとき )
atan(y, x) = ( y / |y| ) * π / 2 (x = 0 のとき )
atan(y, x) = tan-1(y/x) + ( y / |y| ) * π ( x < 0, y ≠ 0 のとき )
atan(y, x) = π ( x < 0, y = 0 のとき )
関節Eの座標を(ex, ey)とすると、
ex = l1cosθ1
ey = l1sinθ1
よって、
wx = ex + l2cos(θ1 + θ2) = l1cosθ1 + l2cos(θ1 + θ2)
wy = ey + l2sin(θ1 + θ2) = l1sinθ1 + l2sin(θ1 + θ2)
(2-1)
F(j, k) = max( F(j-1, k), F(j-1, k-a
j) + c
j )
(2-2)
j\k | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 14 | 14 | 14 | 14 | 14 | 14 | 14 | 14 |
2 | 0 | 0 | 14 | 14 | 22 | 22 | 36 | 36 | 36 | 36 |
3 | 0 | 0 | 14 | 14 | 22 | 22 | 36 | 36 | 44 | 44 |
4 | 0 | 0 | 14 | 14 | 23 | 23 | 36 | 36 | 45 | 45 |
5 | 0 | 0 | 14 | 14 | 23 | 26 | 36 | 36 | 45 | 48 |
以上より、
x1 = 1, x2 = 1, x3 = 0, x4 = 0, x5 = 1 のとき最大合計価値 48
探索木
* P0
** P1 : x1 = 1
*** P2 : x2 = 1, x3 = 0
**** P3 : x4 = 1, x5 = 0 ダメ
**** P4 : x4 = 0
*** P5 : x2 = 0
**** P6 : x3 = 1, x4 = 0, x5 = 0 ダメ
**** P7 : x3 = 0 ダメ
**P8 : x1 = 0 ダメ
P0 : 問題 A1
>下界 : 45 (1, 1, 0, 1, 0) :: 暫定値
>上界 : 51 (1, 1, 1/2, 0, 0)
P1 : x1 = 1
>下界 : 45 (1, 1, 0, 1, 0)
>上界 : 51 (1, 1, 1/2, 0, 0)
P2 : x1 = 1, x2 = 1, x3 = 0
>下界 : 45 (1, 1, 0, 1, 0)
>上界 : 49 (1, 1, 0, 1, 1/3)
P3 : x1 = 1, x2 = 1, x3 = 0, x4 = 1, x5 = 0
>下界 : 44 (1, 1, 0, 1, 0)
>上界 : 44 (1, 1, 0, 1, 0) < 暫定値 45
P4 : x1 = 1, x2 = 1, x3 = 0, x4 = 0
>下界 : 48 (1, 1, 0, 0, 1) :: 暫定値
>上界 : 48 (1, 1, 0, 0, 1)
P5 : x1 = 1, x2 = 0
>下界 : 44 (1, 0, 1, 0, 0)
>上界 : 49.5 (1, 0, 1, 1/2, 0)
P6 : x1 = 1, x2 = 0, x3 = 1, x4 = 0, x5 = 0
>下界 : 44 (1, 0, 1, 0, 0)
>上界 : 44 (1, 0, 1, 0, 0) < 暫定値 48
P7 : x1 = 1, x2 = 0, x3 = 0
>下界 : 35 (1, 0, 0, 1, 1)
>上界 : 35 (1, 0, 0, 1, 1) < 暫定値 48
P8 : x1 = 0
>下界 : 43 (0, 1, 0, 1, 1)
>上界 : 47 (0, 1, 5/6, 0, 0) < 暫定値 48
以上より、
x1 = 1, x2 = 1, x3 = 0, x4 = 0, x5 = 1のとき最大合計価値 48
分枝限定法 : 分枝操作 + 限定操作
分枝操作 : 問題を幾つかの子問題に分割
限定操作 : 子問題の目的関数の上界と下界を求め、上界が暫定解以下ならばその子問題を捨てる
暫定解 : それまでに解いた子問題の下界のうち最大のもの
上界 : 緩和問題(0or1 を [0, 1]にした問題)の解
下界 : 適当な実行可能解