[PYTHON] Erklärung und Implementierung von SocialFoceModel

Ich werde das Social Focus Model erklären, eine Art künstliche Potentialmethode. Dies ist ein Modell des menschlichen Menschenverhaltens, das auf der von Helbing befürworteten Dynamik basiert.

Klicken Sie hier für das Originalpapier https://arxiv.org/pdf/cond-mat/9805244.pdf

Grundsätzlich wird es als die Summe von Anziehungskraft und Abstoßungskraft ausgedrückt, wie unten gezeigt.


F_{all} = F_{gall} + F_{others} + F_{obstacle}

Attraktion

Hier ist die Formel der Anziehungskraft, die zwischen dem Fußgänger und dem Ziel wirkt.


F_{all} =\frac{V_0e_t-v_t}{\tau}

$ V_0: Höchstgeschwindigkeit $ $ e_t: Einheitsvektor in Richtung Ziel $ $ \ tau: Zeit bis zum Erreichen von V_0 (Zeitkonstante) $ $ v_t: Aktueller Geschwindigkeitsvektor $







abstoßende Kraft

Hier ist die Formel für die Abstoßungskraft, die zwischen Hindernissen und anderen Fußgängern und den Fußgängern wirkt. Die verwendeten Formeln sind die gleichen.


F_{others}  = F_{obstacle} =  v_rUe^{-\frac{d}{R}}

$ d: Entfernung zu Hindernissen und anderen Fußgängern (ohne Radius) $ $ R, U: Konstante $ $ v_r: Richtung vom Hindernis (Einheitsvektor) $

Die vom Autor Helbing eingestellten Parameter sind

V_0:1.34 [m/s] \tau:0.5 [s] R:10.0[m^2/s^2] U:0.2[m]

Es ist geworden.

Implementierung

Aus dieser Formel und den Parametern möchte ich die Flugbahn anzeigen, wenn ein Fußgänger einem Hindernis aus dem Weg geht.

Normalerweise müssen wir Hindernisse und den Radius von Fußgängern berücksichtigen, aber der Einfachheit halber haben wir ihn weggelassen.

# coding: utf-8
import numpy as np
import matplotlib.pyplot as plt

V0  = 1.34 # [m/s] Speed of equilibrium (= max speed)
tau = 0.5  # [sec] Time to reach V0 ziteisuu
delta_sec = 0.01 #[sec]

U = 10.0 # [m^2/s^2]
R = 0.2  # [m]

user_mass_kg = 55 # [kg]
user_mass_N = user_mass_kg / 9.8 # [N]

user_pos = np.array([0.0, 0.0]) # 0=x, 1=y[m]
user_vel = np.array([0.3, 0.0]) # 0=x, 1=y[m/s]
map_size = np.array([10, 10]) # 0=x, 1=y[m]
goal_pos = np.array([10, 5]) # 0=x, 1=y[m]
obstacle_pos = np.array([6, 3]) # 0=x, 1=y[m]

user_pos_lines = user_pos.reshape((2,1))


while True:
	#Attraktion
	dist_xy = goal_pos - user_pos
	dist_norm = np.linalg.norm(dist_xy, ord=1)
	e = dist_xy / dist_norm
	F_goal = (V0 * e - user_vel) / tau # [N]
	
	#abstoßende Kraft
	dist_xy = user_pos - obstacle_pos
	dist_norm = np.linalg.norm(dist_xy, ord=2)
	v_r = dist_xy / dist_norm
	F_obstacle = v_r * U * np.exp((-1) * dist_norm / R)
	
	#Positionsberechnung von Fußgängern
	F_all = F_goal + F_obstacle # [N]
	#Beschleunigung[m/s^2]
	user_acc = F_all / user_mass_N
	#Geschwindigkeit[m/s]
	user_vel += user_acc * delta_sec
	#Position
	user_pos += user_vel * delta_sec
	
	#Der Abstand zwischen Fußgänger und Ziel beträgt 0.Beenden Sie, wenn es weniger als 2 m ist
	if np.linalg.norm(goal_pos - user_pos) < 0.2:
		break
	user_pos_lines = np.append(user_pos_lines, user_pos.reshape((2,1)), axis=1)


#Zeichnung
#Hindernis
plt.scatter(obstacle_pos[0], obstacle_pos[1], color='b', s=100)
#Flugbahn
plt.plot(user_pos_lines[0,:], user_pos_lines[1,:], color='r')
#Tor
plt.scatter(goal_pos[0], goal_pos[1], color='g', s=200)
plt.show()

print("end")

Ausführungsergebnis

Auf diese Weise konnte ich eine Flugbahn erstellen, um Hindernissen auf dem Weg zum Ziel auszuweichen.

Figure_1.png

Recommended Posts

Erklärung und Implementierung von SocialFoceModel
Erläuterung und Implementierung von PRML Kapitel 4
Erklärung und Implementierung des ESIM-Algorithmus
Erklärung und Implementierung von einfachem Perzeptron
Erklärung und Implementierung des Decomposable Attention-Algorithmus
Erläuterung der Bearbeitungsentfernung und Implementierung in Python
Einführung und Implementierung von JoCoR-Loss (CVPR2020)
Erläuterung der CSV und Implementierungsbeispiel in jeder Programmiersprache
Implementierung und Experiment der konvexen Clustering-Methode
Mathematische Erklärung der Dichotomie- und Trisektionssuch- und Implementierungsmethode ohne Fehler
Implementierung und Beschreibung mit XGBoost für Anfänger
Erläuterung und Implementierung des in Slack, HipChat und IRC verwendeten XMPP-Protokolls
Vergleichen Sie die Implementierungsbeispiele für scikit-learn und pyclustering k-means
TRIE-Baumimplementierung mit Python und LOUDS
Implementierung der Fibonacci-Sequenz
Perceptron Grundlagen und Implementierung
Python - Erläuterung und Zusammenfassung der Verwendung der 24 wichtigsten Pakete
Sequentielle Aktualisierung der Co-Distribution zur Ableitung und Implementierung von Ausdrücken
Ich berührte Bachstelze (3). Untersuchung und Implementierung von Popup-Nachrichten.
Implementierung des DB-Administratorbildschirms durch Flask-Admin und Flask-Login
Python-Implementierung des CSS3-Mischmodus und Diskussion über den Farbraum
Das Problem der Lügner und der Ehrlichkeit
Ableitung und Implementierung von Aktualisierungsgleichungen für die nicht negative Tensorfaktorzerlegung
Mechanismus von Pyenv und Virtualenv
Implementierung von TF-IDF mit Gensim
Implementierung von MathJax auf Sphinx
Vor- und Nachbearbeitung von Pytest
Kombination von rekursiv und Generator
Kombination von anyenv und direnv
Normalisierung der Strömungstheorie und -implementierung
Implementierung der Spieltheorie - Gefangenendilemma -
Differenzierung der Sortierung und Verallgemeinerung der Sortierung
Implementierung einer unabhängigen Komponentenanalyse
Koexistenz von Pyenv und Autojump
Quantum Computer Implementierung von Quantum Walk 3
[Mit einfacher Erklärung] Scratch-Implementierung einer Deep Boltsman-Maschine mit Python ②
Python-Implementierung des Partikelfilters
[Mit einfacher Erklärung] Scratch-Implementierung einer tiefen Boltzmann-Maschine mit Python ①
Verwendung und Integration von "Shodan"
Das Problem der Lügner und der Ehrlichkeit
Theorie und Implementierung mehrerer Regressionsmodelle - warum Regularisierung erforderlich ist -
Überprüfung und Implementierung der Videorekonstruktionsmethode mit GRU und Autoencoder
Maxout Beschreibung und Implementierung (Python)
Auftreten und Auflösung von tensorflow.python.framework.errors_impl.FailedPreconditionError
Implementierung der schnellen Sortierung in Python
Vergleich von Apex und Lamvery
Quellinstallation und Installation von Python
Quantum Computer Implementierung von Quantum Walk 1
Tiefes Lernen der Verstärkung 2 Implementierung des Lernens der Verstärkung
Implementierung von Scale-Space für SIFT
Einführung und Tipps von mlflow.Tracking
Crawlen mit Python und Twitter API 2-Implementierung der Benutzersuchfunktion
[Python] Ich habe die Theorie und Implementierung der logistischen Regression gründlich erklärt
[Python] Ich habe die Theorie und Implementierung des Entscheidungsbaums gründlich erklärt
[Python] Implementierung der Nelder-Mead-Methode und Speichern von GIF-Bildern durch matplotlib
Implementierung der Datetime-Picker-Aktion mit line-bot-sdk-python und Beispielimplementierung von Image Carousel
[Empfehlung] Zusammenfassung der Vor- und Nachteile der inhaltsbasierten und kooperativen Filter- / Implementierungsmethode
Umgebungskonstruktion von Python und OpenCV