2014年4月21日月曜日

サクラエディタで Aspell のマクロを作ってみる(不完全版)

サクラエディタを最近試してみており、そのなかからスペルチェックの Aspell を呼び出そうと考えている。
ただ、TeX Wiki の情報
http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?%E3%82%B5%E3%82%AF%E3%83%A9%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%2F%E3%83%9E%E3%82%AF%E3%83%AD

からたどれる情報は更新されていないようで、現在のサクラエディタだとうまく利用できなかった。

少しマクロなどを修正して、現状としては以下のようにしている。
--- aspell.js ----

(function () {
    var c = Editor.ExpandParameter("$e");
    var b = Editor.GetFilename();
    var cd = "cd /d " + ["\"", c, "\""].join("");
    var aspellcmd = "\"c:\\Program\ Files\ \(x86\)\\Aspell\\bin\\aspell.exe\" --lang=en -c -t" + " " + ["\"", b, "\""].join("");
    var cmd = "cmd /c " + cd + " && chcp 65001 && " + aspellcmd;
    Editor.FileSave();
    var objShell = new ActiveXObject("WScript.Shell");
    objShell.Run(cmd,1,1);
    Editor.FileClose();
    var movecmd = "cmd /c " + cd + " && " + "move " + b + ".new " + b;
    objShell.Run(movecmd,1,1);  
}.call(this));

--- ここまで ---

これを設定フォルダ(サクラエディタの「設定」->「共通設定」として出てくるダイアログの左下にある「設定フォルダ」を押すと表示されるフォルダ)において、「共通設定」の「マクロ」タブで登録すると利用できるようにはなる。

ただ、まだ機能面で不足があって、
(1) a.txt を Aspell にかけると a.txt.new というファイルに結果が保存されて、a.txt.new を a.txt に移動している。このあとで、 Editor.FileReopen() をかけると空の状態でエディタに表示されてしまう(ファイルが「無題.txt」になる)。「X」ボタンでファイルを一度閉じた後に、もう一度開けると、Aspell のかかった結果を表示できる。
(2) ファイルが UTF-8 の場合、コマンドプロンプトのコードを chcp 65001 で UTF-8 に変換しているが、フォントが合わないため日本語部分が誤って表示される。Aspell 自身は日本語部分を飛ばして処理するようで処理自体は問題ないのだが、フォントを変更するにはレジストリを regedit で修正する方法がある。regedit ではなく、コマンドプロンプトからのコマンドで修正できるかどうか、がよく分かっていない。

となっている。



2014年4月10日木曜日

要約メモ:Math Prog A, Vol 144, No. 1-2

だいたいどんなことが研究されているか、一部の論文を抜粋して簡単にメモしておく。

[1] Iteration complexity of randomized block-coordinate descent methods for minimizing composite function
Richtarik and Takac

Nesterov の一次法のあたりでよく見かける
min : F(x) = f(x) + Psi(x)
の形式の問題を解いている。ベースになっているのは、Nesterov の 2012 の SIAM J. Optim の論文だが、ここでは、ベクトル x をいくつかのブロックに分解して、それぞれのブロックごとに手法を適用している。これは、例えば、 x のうちのx_1 から x_100 まで、などブロック単位で区切って処理しないとならないほど大きな問題などを想定できる。

解析の中では、Lipsitz 連続や strong convexity などを利用するタイプ。
また、完全に最適解に収束させるわけではなくて、確率的に収束させるタイプ。(99% 以上の確率で最適値とのずれが 0.01 以内、といった感じ。)


[2] On the complexity of finding first-order critical points in constrained nonlinear optimization
Cartis, Gould and Toint

min: f(x) such that c(x) = 0
という制約付き最適化問題に対する KKT 条件の近似解を求めるのに必要な計算量は、
min: fbar(x)
のように制約なしの場合から本質的には増えたりしない、ということを言っている。

解析の道具としては、信頼領域法のアルゴリズムを利用している。

[3] An introduction to a class of matrix cone programming
Ding, Sun and Toh

この論文のMatrix cone programming は、
min { c^T x | A x \in b + Q \times K}
の形で定式化されている。ここで、Qは基本的には対称錘なので、second-order cone や SDP などを含む。また、 K は epigraph による錘で、
epi (f) = {(t,X) : t \ge f(X)}
といったもの。
このような定式化に含まれるのは、Matrix completion, Robust PCA, 低ランク行列近似などがある。

アルゴリズムの基本要素は、錘などへの射影計算。

[4] A unified approach for minimizing composite norms
Aybat and Iyengar

この論文も composite の関数の最小化で
min    mu_1 || F(X) -G ||_{alpha}   + mu_2 || C(X) -d ||_{beta}
subject to A(X) - b \in Q.
という問題が対象。ここで、alpha と beta のノルムは 1-norm, 2-norm などがある。
解法としては、augmented Lagrangian がベース。