2015年5月11日月曜日

Julia の面白いところ(数理最適化のプログラミングから見て)

この前、内点法を実装してみて分かった、面白いところを列挙してみる。

1. UTF-8 の文字列を変数に使える。例えば
  α = β + γ
なんて式が可能。

2. A ? B : C が使える。(C っぽい)

3. リスト内包が使える。(python っぽい)
これは、SDP のときに便利で、例えば内積の A_k \bullet X というのを A_1,...,A_m で行いたければ
float([ sum(A[:,:,k].*X) for k=1:m ])
とすれば一行で作れる。
(float をかけているのは、リスト内包で上のリストを作るとなぜか Any のリストになってしまって、その後に足し算引き算などができなくなってしまうので、float に型を強制変更している。)

4. Cell にできる。(Matlab っぽい)
たとえば、
Z = cell(3,2)
Z[1,2] = [3 4; 5 6]
Z[3,1] = spzeros(7,8)
のように違うデータを入れ込むことができる。


3 と 4 は SDP のときには相当便利で、これがあれば SDPA-M 入力と SeDuMi 入力の両方のアドバンテージを一つのデータでこなすことができる。

0 件のコメント:

コメントを投稿