人工生命Tierraの作成等についてのブログ

人工生命Tierraや他の技術的な事柄、また日々の出来事などについても書いていきます。

人工生命Tierra: 目次

(「Tierraの仕組みについて」追加。記事の順番修正。)

f:id:kkeiekk:20180128004933p:plain

人工生命Tierra1: 人工生命Tierraについて

人工生命Tierra2: Tierraの仕組みについて [new]

人工生命Tierra3: 先祖種の挙動について

人工生命Tierra4: 個体のイメージ

人工生命Tierra5: 人工生命Tierraの実行

人工生命Tierra6: 強い遺伝子による下剋上_個体数の変遷

人工生命Tierra7: 先祖種の挙動について

人工生命Tierra8: Tierraを知ったきっかけ

人工生命Tierra9: 突然変異8の挙動について1

人工生命Tierra10: 突然変異8の挙動について2

人工生命Tierra11: 突然変異8の挙動について3

 

[2019/5/10初稿]

 

モバイルSuicaエラー対処方法:F3-162-002、F3-003-002

①端末(携帯、スマホ)再起動

おサイフケータイ起動、ログイン

モバイルSuica起動

これで行けました。

 

■経緯

・クレジットカードからチャージ。

・処理中に改札タッチして入れずにエラー

・以来モバイルSuicaアプリを起動してもエラー文が表示され起動できず。

 端末再起動しても変わらず。

 モバイルSuicaサポートセンターに問い合わせるよう記載されている。

・エラーコードは

 F3-162-002

 F3-003-002

 

モバイルSuicaサポートセンター

ググると、エラーコード別の対処法が書いてあるが、

 F3-162-002

 F3-003-002

 については詳しくは書いておらず、F始まりのコードはモバイルSuica原因ではなくおサイフケータイ関連のエラーとのこと。

おサイフケータイアプリを起動してもエラーで起動できず、端末再起動するよう記載されている。

・端末再起動しておサイフケータイアプリを開くと正常に起動できた。

・その後モバイルSuicaアプリを開くと無事に起動でき、ログインもできた。

 

「作業場 or エンジニアバー」9/21(月)13-17時 1日バーテン

9/21(月)にイベントバーエデン池袋本店様で1日バーテンをさせていただきます!

 

いつもとは違う場所でご自身の仕事や作業を落ち着いてしたい方や
エンジニアの方がいらっしゃいましたら 良ければご来店ください

 

twitter.com

 

f:id:kkeiekk:20200919174913p:plain

 

【Python, bokeh】 軸に文字列を使用する → 「x_range」を使用する

1. コード

from bokeh.plotting import figure, output_file, show, reset_output

# x軸と表示データ(y)の作成
x = []# ←すみません、都合上全角なので半角に直してください
y = []# 同上
for cnt in range(10):
    x.append("x" + str(cnt))
    y.append(cnt)
# ['x0', 'x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9']
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# x軸を設定
p = figure(x_range=x)

# x軸を縦書きにする
p.xaxis.major_label_orientation = math.pi/2

# プロット
p.line(x, y, legend_label="y")

# グラフ表示
show(p)
 

2. 結果

f:id:kkeiekk:20200905181429p:plain

人工生命Tierra2: Tierraの仕組みについて

f:id:kkeiekk:20180128004933p:plain
Tierraとは、生命個体を模擬したプログラムから成り立つ人工生命のシステムです。
各個体プログラムは、自己増殖を繰り返しながら、時間をかけて代々その形を変え進化していきます。
自己増殖するだけなのになぜ進化が起きるのか、それは突然変異の仕組みによるものです。
Tierraシステムの仕組みについて記載いたします。

  • 1. 生命個体プログラムが活動する場所「スープ」
  • 2. 初期生命個体(先祖種)の作成、動作
  • 3. 突然変異
  • 4. 進化種
続きを読む

畳み込みニューラルネットワーク(CNN)、C++、配列サイズ動的、メモリ動的確保

・配列の要素数の宣言に変数を使いたい。
 下記のように
  int num = 5;
  int a[num];
 ・C++では上記のようにはできない。
・new演算子を使う方法がある。
  int num = 5;
  int* a = new int[num];
 ・num個のint型の配列を
  メモリに割り当てて
  そのメモリの先頭のアドレスを
  ポインタ変数aに入れる。
 ・new演算子を使った後はdeleteで消さなければならない。
  ・newで確保したメモリはいつまでも(プログラムが終わるまで)残ってしまうため。
   int num = 5;
   int* a = new int[num];
   delete[] a;

 

変数や配列の動的な生成

http://ext-web.edu.sgu.ac.jp/koike/semi/VC2005/c16.html

 

・2次元配列を同様にしようとしたがエラーとなる。

  int num1 = 5;

  int num2 = 5;

  int** a = new int[num1][num2]; //NG

・newで確保できるのは1次元までなので、1次元ずつ確保していく。

  int num1 = 5;

  int num2 = 5;

  int** a = new int*[num1];

  for(int i=0; i<num1; i++) a[i] = new int[num2];

・削除も1行ずつ。

  for(int i=0; i<num1; i++) delete[] a[i];

  delete[] a;

[C++] new による多次元配列の動的作成 | 旅の記録

ニューラルネットワークの作成 [C++][MNIST手書き数字画像データ][縮小MNISTデータ]

ニューラルネットワークをMNISTデータで実装していたが、認識率が向上せずむしろ劣化する結果となっていた。

原因を解析するためにより単純な状態を作ろうとして、最近は28*28のMNIST画像を縮小した9*9のミニMNISTデータを作成し、それでニューラルネットワークを実装したが、これでも同様に認識率が向上せずむしろ劣化した。

初期認識率が90%から開始しても10%から開始しても、学習を繰り返すと10%程度=10クラスなのでランダム認識率と一緒になっていた。

本を読み返していると、学習率について「0.01や0.001」「大きすぎても小さすぎても良い結果にならない」と書いてあった。
学習率を0.1や0.5で実行してしまっていたため、0.01にして実施してみると、初期認識率10%から50%へと向上した。
学習を繰り返せば更に改善するだろう。

割と長く詰まってしまっていたため非常に嬉しい。