変数の宣言の必要なし

Unicode対応で一部のギリシャ文字や添え字が使える

関数は

 hoge(x)=3/x

 hoge(3)=1

 returnは省略可能で、省略した場合、最後の式の値を返す

 

パイプライン演算子

t(n,x)=exp(n*cos(x))のように入れ子構造の関数について

t(n,x)=n*cos(x) |>exp

と書くことができる。

右の変数は引数が一つという制限がある

 

ブロードキャスト(ドット構文)

 配列A.+1

 で配列要素すべてに+1

 関数.(配列) → 配列要素それぞれを引数にできる

 

f(x)

f(x,y)

と引数の数が違う関数を別物として定義可能

 

多重ディスパッチ

f(float x)

f(string y)

を宣言すると、引数に応じて適応される

型だけではなく、f(x) f(x,y,z)など引数の数でも多重ディスパッチが適応される

 

構造体

Structは一度定義したら変更不可

Mutable structは変更可能

 

usingは借りてくる、Importは自分のものにする

 

ローカル変数とグローバル変数の区別もしない

グローバルで定義された変数xがあるとき、関数内でxを定義することが可能

 

ラムダ式は->

行列Aの転置行列はA'

数値微分で近似値を出してくれる関数がForwardDiff.jlのderivative(関数、変数)にある

A=B && C=A でIf文になる

 

pdf(分布P、a)=P(a)

 分布が配列ならブロードキャストしてP1(a),P2(a)...となる

 

X=[i for i=1:10]

 で配列を生成する

 

ifelse(条件、真、偽)

ただし、真偽いずれにせよ両方計算は行われるため、

ルートをとるなど、場合によってはエラーになる

 

三項演算子

float = bool ? A : B

 でboolに応じたIf文になる

こちらは片方しか計算しない

 

range(1:10,step=2) ==1:2:10

range(1:10, length=n) は分割数n

反応閾値モデルは各アリがここのタスクを実行に移すためには有限の不可が必要だという仮定に基づき、行動を起こすかどうかを決定する

実際のアリでも限界負荷=閾値が確認されているらしい

 

このボナボーのモデルの基本仮定は、タスクを1種類として

 

・コロニー内のすべてのアリはタスクに応じたコロニー共通の負荷(餌の枯渇度など)を時々刻々感知する

・コロニー内のいずれのアリもタスクを実行しない場合、コロニーとしての負荷は一定の割合で増加し続ける

・コロニー内でタスクを行っているアリの割合に応じてコロニーの負荷は時間とともに低下する

 

である

 

地球上でもっとも繁栄している生物の一つである蟻は採集や畜産を行うにもかかわらず

地球上で最軽量の脳を持っているとのこと

このため、アリは個体レベルでみるならば単一化、単純化に向かっていると言ってもいい

 

ここから、アリを研究することで

「単純かつ均一な個体だけで構成されるシステムがどのようにして複雑な分業制や高度な作業を集団で安定して行えるのか」

を解明するカギになっている

 

以下の3つの条件のうち一つでも満たせば、広い意味での社会性を持つ

 

・複数個体が協調して子育てする

・子供を産まない個体と子供を産む個体という生殖上の分業が行われている

・2世代以上が同じコロニーに同居して子育てを行う

 

アリの社会にはヒエラルキーがあるのだが、完全に分業してるわけではなく

兵隊アリが体の小さい幼少期に子育てをしたり小型アリが採集活動をしたりといった役割分化が発生する

実際に、実験によれば個体はコロニー全体の必要に応じて役割を変化させているという

 

これはいわゆる働きアリの法則であるが、

怠けている(フリーランス、入力待ち)という状態も一つの役割とすれば、

働きアリの法則を一般化したものと言えるかもしれない