内容紹介
Python でさまざまな現象をシミュレーションしよう!
本書はコンピュータシミュレーションの基礎を、Pythonを用いたプログラミングによって実際に試しながら学習するものです。
うわさの拡散や伝染病の流行、人口予測といった自然科学モデル、リボ払いの計算や在庫管理といった経営・経済モデルといった具体的なものから、情報科学的な確率モデル、ベイズ統計、グラフ理論、GA(遺伝的アルゴリズム)といった各手法に基づいたモデル、エージェントベースモデル、強化学習による意思決定モデルまでを解説しています。
本書では、シミュレーションの各モデルの立て方やアイデアの説明に重点を置き、数値計算の厳密な詳細やモデルの数理よりはPythonによる実行を志向します。また、プログラムのほとんどは Jupyter Notebook形式で配布しているので、ご自身の手もとのPCで実行することができるようになっています。
○本書のサポートサイト
https://github.com/ohmsha/MHBooks
このような方におすすめ
・コンピュータシミュレーションに興味をもつ情報・コンピュータ系の方
・Pythonを用いたコンピュータシミュレーションの手法を知りたい方
・Pythonを用いてコンピュータシミュレーションを学びたい方
目次
主要目次
第1章 はじめに
第2章 数値計算と数学の基礎
第3章 アニメーション
第4章 確率モデル
第5章 自然科学モデル
第6章 経営モデル
第7章 ベイズ統計に基づくモデル
第8章 グラフ理論に基づくモデル
第9章 遺伝的アルゴリズムに基づくモデル
第10章 エージェントベースモデル
第11章 強化学習による意思決定モデル
詳細目次
第1章 はじめに
1.1 モデルとシミュレーション
1.1.1 モデルとは
1.1.2 シミュレーションとは
1.1.3 付録:モデルの性質とシステム
1.2 Python,Anaconda,パッケージ
1.2.1 Pythonと関連情報
1.2.2 Anacondaの導入
1.2.3 使用するパッケージ
1.3 開発環境
1.3.1 JupyterLabとNotebook
1.3.2 クラウドコンピューティングColaboratory
1.4 ちょっとした流儀
1.4.1 matplotlibの流儀
1.4.2 文字コードとマジックコマンド
1.5 クイックスタート
1.5.1 いくつかの決めごと
1.5.2 Anacondaとパッケージのインストール
1.5.3 プログラムの入手方法とNotebookでの開発と実行
1.5.4 エラーが生じたら
1.5.5 本書のサポートサイト
第2章 数値計算と数学の基礎
2.1 数学記号の用い方
2.2 有限桁のために生じる数値誤差
2.2.1 0.1変換誤差とIEEE 754規格
2.2.2 機械イプシロン
2.2.3 丸め,情報落ち,桁落ち
2.3 いくつかの数値計算
2.3.1 連立1次方程式
2.3.2 方程式
2.3.3 補間
2.3.4 常微分方程式
2.4 確率の基礎
2.4.1 確率とは
2.4.2 離散確率と連続確率
2.4.3 母集団,パラメータ,期待値,分散,平均
2.4.4 確率分布
2.5 疑似乱数とSciPyを用いた確率の計算
2.5.1 一様乱数の生成
2.5.2 正規乱数の生成
2.5.3 scipy.statsの使い方
2.5.4 パーセント点と確率の各種計算例
第3章 アニメーション
3.1 アニメーションの意義
3.2 Matplotlibを用いたアニメーション
3.2.1 ArtistAnimation,マークのランダム位置描画
3.2.2 FuncAnimation,軸の固定と軸の移動
3.2.3 地球儀の回転
3.3 VPython を用いたアニメーション
3.3.1 簡単な使い方
3.3.2 ビリヤード球の衝突問題
3.3.3 振り子の等時性は成り立つのか
第4章 確率モデル
4.1 時系列モデル
4.1.1 大数の法則と中心極限定理
4.1.2 ランダムウォーク(1次元,3次元)
4.1.3 モンテカルロ法による円周率計算
4.2 マルコフ連鎖
4.2.1 マルコフ連鎖とは
4.2.2 定常分布と極限分布
4.2.3 定常分布の求め方
4.3 確率微分方程式
4.3.1 ウィーナー過程
4.3.2 確率微分方程式の数値計算
4.3.3 シミュレーション例
4.4 カルマンフィルタ
4.4.1 離散時間線形の状態空間モデル
4.4.2 アルゴリズム
4.4.3 定常カルマンフィルタ
4.4.4 シミュレーション例
4.5 時系列モデル
4.5.1 ARMAモデル
4.5.2 パラメータ推定のシミュレーション例
4.5.3 ARIMAモデル
4.5.4 1次式トレンドのあるデータに対する予測
4.5.5 SARIMAXモデル
4.5.6 航空会社の乗客数の予測
第5章 自然科学モデル
5.1 人口予測
5.1.1 人口モデル
5.1.2 パラメータ推定
5.2 感染症の流行
5.2.1 SIR モデル
5.2.2 シミュレーション例
5.2.3 考察
5.3 捕食種・被食種の関係
5.3.1 捕食・被食モデル
5.3.2 シミュレーション例
5.3.3 考察
5.4 フラクタル
5.4.1 マンデルブロ集合
5.4.2 バーンスレイのシダ
5.5 カオス
5.5.1 アトラクタとカオス
5.5.2 ローレンツアトラクタ
5.5.3 ロジスティック方程式のカオス
5.6 音と周波数
5.6.1 周波数と十二平均律
5.6.2 PyAudioを用いた音の作り方と鳴らし方
第6章 経営モデル
6.1 簡単な例
6.1.1 リボ払い
6.1.2 損益分岐点
6.2 線形計画法
6.2.1 数学的表現
6.2.2 PuLPの使い方
6.2.3 シミュレーション例
6.3 在庫管理
6.3.1 在庫管理とは
6.3.2 経済的発注量
6.3.3 発注点法
6.3.4 定期発注法
6.3.5 シミュレーション例
6.4 待ち行列
6.4.1 待ち行列とは
6.4.2 ケンドールの記号
6.4.3 ポアソン到着過程と到着時間分布
6.4.4 指数サービス時間
6.4.5 評価指標
6.4.6 SimPy離散事象シミュレーション
6.4.7 M/M/1モデルのシミュレーション
第7章 ベイズ統計に基づくモデル
7.1 ベイズの定理とベイズ更新
7.1.1 ベイズの定理
7.1.2 病気の感染検査
7.1.3 犯人を捜せ
7.2 確率分布への適用
7.2.1 確率分布のベイズ推定
7.2.2 二項分布の例
7.3 確率的プログラミングPyMC
7.3.1 PyMC3,Theano,グラフィックパッケージの概要
7.3.2 MCMCの概要
7.3.3 確率モデル,Summary,グラフ化
7.3.4 正規分布モデル
7.3.5 単回帰モデル
7.3.6 到着数の変化検出
第8章 グラフ理論に基づくモデル
8.1 グラフ理論の概要
8.1.1 グラフ理論とは
8.1.2 グラフ理論の基礎
8.1.3 用意されているグラフ
8.2 噂の拡散のシミュレーション(スケールフリーネットワーク)
8.2.1 スケールフリーネットワークとは
8.2.2 ネットワークの構築
8.2.3 べき乗則
8.2.4 噂の拡散
8.3 人間関係のネットワーク(スモールワールド)
8.3.1 スモールワールドとは
8.3.2 ネットワークの構築
8.3.3 ネットワークのスモールワールド性
8.3.4 噂の伝搬シミュレーション
8.4 文章の相関の可視化(共起ネットワーク)
8.4.1 共起ネットワークとは
8.4.2 単語単位への分割
8.4.3 単語の結びつき
8.4.4 共起ネットワークの作成
第9章 遺伝的アルゴリズムに基づくモデル
9.1 遺伝的アルゴリズムの概要
9.1.1 遺伝的アルゴリズムとは
9.1.2 遺伝的アルゴリズムの基礎
9.2 組合せに関係した問題(ナップザック問題)
9.2.1 組合せに関係した問題とは
9.2.2 問題設定
9.2.3 手順
9.2.4 実装方法
9.2.5 別の解法
9.3 順序に関係した問題(巡回セールスマン問題)
9.3.1 順序に関係した問題とは
9.3.2 巡回セールスマン問題
9.3.3 手順
9.3.4 実装方法
9.4 順序と組合せに関係した問題(トラック配車計画の最適化)
9.4.1 順序と組合せに関係した問題とは
9.4.2 問題設定
9.4.3 手順
9.4.4 実装方法
9.5 実数値を用いた問題(数値最適化)
9.5.1 実数値を用いた問題とは
9.5.2 問題設定
9.5.3 手順
9.5.4 実装方法
第10章 エージェントベースモデル
10.1 エージェントベースモデルの概要
10.1.1 エージェントとは
10.1.2 エージェントベースモデルの基礎
10.2 離散的環境で行動するエージェント:ライフゲーム
10.2.1 ライフゲームとは
10.2.2 ルール
10.2.3 ライフゲームの定番生物
10.2.4 シミュレーション
10.3 連続的環境で行動するエージェント:鳥や魚の群れ(Boids)
10.3.1 Boidとは
10.3.2 ルール
10.3.3 シミュレーション
10.4 移動を伴わない意思決定個体としてのエージェント:囚人のジレンマ
10.4.1 囚人のジレンマとは
10.4.2 ルール
10.4.3 囚人のジレンマの定番戦略
10.4.4 シミュレーション:1対1の対戦
10.4.5 シミュレーション:リーグ戦
10.4.6 戦略の追加方法
第11章 強化学習による意思決定モデル
11.1 強化学習の概要
11.1.1 定義
11.1.2 一般式
11.1.3 Qラーニング
11.2 1人の意思決定
11.2.1 1人の意思決定の手順
11.2.2 例題:ミントタブレットを取り出して食べる問題
11.2.3 考え方
11.2.4 実現方法
11.2.5 実行結果
11.3 2 人の意思決定
11.3.1 二つのエージェントの意思決定の手順
11.3.2 例題:石取りゲーム
11.3.3 実現方法
11.3.4 実行結果
11.3.5 人間との対戦方法
11.3.6 発展:相手の行動
11.4 深層強化学習の概要
11.4.1 深層学習
11.4.2 深層強化学習
索引
続きを見る