3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Juliaで二次元版合意形成と適用例

Posted at

内容

  • グラフラプラシアン$L$を利用すると、状態変数が収束する形の合意形成が可能
  • 1次元だと1つの値に合意形成された
  • 2次元に拡張すると、$x$ 軸方向と $y$ 軸方向で合意形成され、$N$個のペア $(x_i, y_i)$ が合意形成されるはず
  • 実際に確認してみる

下準備

  • $N$個の状態変数 $(x_i, y_i)$ を乱数で生成するスクリプトを用意

  • 実装している機能

    • 以下の操作を$N$点分繰り返して、乱数位置を作成
      • $\theta$を$[0, 2\pi]$の範囲から選択
        • 実装上は$\Delta\theta$を受け取って、$0:\Delta\theta:2\pi$ からサンプリングする
      • 位置がだいたい円上になるように、$[R_{min}, R_{max}]$の範囲から選択
        • 実装上は$\theta$と同じく$\Delta r$の刻み幅でサンプリングする
    • 2点 $(i, j)$ がしきい値$T$以下の位置にある場合、無向グラフの辺を置く
  • 使ってみるとこういう感じになる

using CircleSim
N = 50
T = 3.0
points = generate(N)
edges = getedges(points, T=T)
circleplotedges(points, edges)
  • 生成される図の例

sim0.png

  • 作図機能は本当はアニメーションGIFが描けるようにしたかったけど、PyPlotでやるのが面倒な気がした(未調査)ので、アニメーションGIFの実装は諦めた

X軸、Y軸に関した合意形成結果

  • 事前に試した例題と同様に、合意形成される

  • X軸

sim_loc_x のコピー.png

  • Y軸

sim_loc_y のコピー.png

二次元プロット

  • 最初のうち30ステップ程度から適当に選んできた収束様子は次のようになる

  • ここはアニメーションが作りたかった。。。 :cry:

  • 最初の5ステップ

sim1.png sim2.png sim3.png sim4.png sim5.png

  • 30ステップ後(だいたい集まってきている)

sim30.png

コード

using CircleSim
N = 50
T = 3.0
points = generate(N)
edges = getedges(points, T=T)

# make (N, 2) matrix
xy = zeros(N, 2)
for i in 1:N
    p = points[i]
    xy[i, 1] = p.x
    xy[i, 2] = p.y
end

# adjacency matrix, graph laplacian
A = zeros(N, N)
for i = 1:N, j in edges[i]
    A[i, j] = 1
    A[j, i] = 1
end
D = diagm(squeeze(sum(A, 2), 2))
Δ = maximum(D)
L = D - A

# simulation for both X (xy[:, 1]) and Y (xy[:, 2])
Δt = 0.05
tf = 10
xx = []
yy = []
for t in 0:Δt:tf
    push!(xx, xy[:, 1])
    push!(yy, xy[:, 2])
    Δx = -L*xy[:, 1]
    Δy = -L*xy[:, 2]
    xy[:, 1] += Δx * Δt
    xy[:, 2] += Δy * Δt
end
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?