2018年5月17日木曜日

発表した内容よりもいい定式化に気がついた

土曜日に発表したときに定式化をあげたけど、今朝の通勤時間にもっといい式変形があることに気がついた。非ゼロの数を1/3程度にできる。

で、30分ぐらいでプログラムを作って実行してみたけど、思っていたほど効果が出ない。
計算時間だと 5 % 程度しか削減できない。
内点法の動きは、ちょっと謎だ。

まぁ、今回のはうまく行かなかったけど、first-order method に使えるかもしれないんで、もう少し考えてみることにする。

2018年5月14日月曜日

研究集会で発表してきた

土曜日にあった研究集会で発表をさせてもらった。
今回の発表では、ここまでの研究内容の棚卸もいろいろとできたし、もらったコメントも勉強になるコメントが多く、とてもいい機会になった。

今回の内容については、似たような構造の数理最適化問題がたくさんあるので、まだまだ何本も論文にできるような内容を含んでいるかと思うし、もっと時間を使ってやっていけたら、とも思う。今回の発表でもらったコメントなどで「Todoリスト」も強化できたし。

また、数理最適化があまり使われてこなかった分野の話でもあるけど、数理最適化手法が強い効果を発揮したりもするので、数理最適化手法を作れる人には面白いかな、と思ったりもする。個人的には、離散最適化の人が入ってきたりしたらアルゴリズムを作るという意味では無敵なんだろうな、と予想していたりもするけど、その一方で参入障壁も大きいかもしれない。

あと、違った分野の人とやり取りをしていると、「数理最適化だけだと井の蛙かも?」ということに気づいたりする。専門用語の違いから話が全く通じなかったりすることもあったりするけど(自分の英語力のなさも見落とせない要素だけど)、分野の違いを超えて研究をするのにどういったことが大事なのか、ということを教わったりもする。こういった経験は、別に進めている放射線治療に関する最適化などの勉強にも役立っている。


あと、今回の発表で細かいところでは、最後の質問が終わったところでピッタリ予定の時間になったのが、「あぁ、こういう偶然ってあるもんなんだなぁ」と思ったりもした。発表スピードは自分でコントロールできるにしても、質問の数とかは自分ではコントロールできるものではないし。


そんな色々があるにしても、もうちょっと研究を頑張って、いろんなところに役立てられるようになれれば、と思う今日この頃。

2018年4月23日月曜日

sharelatex の日本語入力がうまくいかない

ローカルなところにインストールした sharelatex だが、今までほとんど英語しか入力してなかったので気にならなかったが、日本語を入力しようとすると変な四角が出てきて、これがどうしたものか、というところ。

具体的には、
https://qiita.com/RAWSEQ/items/7f9fc0fd4b3d572856ed
にあるような Ace エディタで日本語入力するときのトラブルと同じ症状なのだけど、これを sharelatex で回避するにはどうしたらいいかが今一つよくわからない。

うーん、ローカルで CSS 制御すれば回避できそうだけど、それを調べるのも今のところは面倒だし、どうしたものか。

まぁ、その点を除けば sharelatex はとても良くできていて、やっぱり便利。

2018年4月19日木曜日

CPLEX の前処理をパズル感覚で楽しむ

最近、CPLEX で LP を解いているが、CPLEX の前処理が思っていた以上に優秀である。
例えば、A*x = b という等式制約を A*x <= b と (-A)*x <= (-b) と2つの不等式制約に分解すると一般的には内点がなくなるので、内点法では解きにくいはずである。しかも、A と (-A) が両方入ると行の線形独立も失われれる。
単純に内点法を組むとうまく行かない、という典型例なのだが、CPLEX だと前処理がきちんと働いて、それなりに数値的に安定して解ける。

ということで、CPLEX の前処理ではうまく処理できないような LP の例を簡単に作れないだろうか?ということを試してみているのだが、これがパズル感覚でなかなかに面白い。
単純に A と (-A) を入れるだけでなくて、もう少し細工をしたりすると CPLEX が CPX_STAT_NUM_BEST を返すようになる。

もっと単純な例で CPX_STAT_NUM_BEST を出せないだろうか?と、ついついいじり倒してしまう。

ただ、「こういう例で CPX_STAT_NUM_BESTを出せるよ」という例題をインターネットに公開してしまうと、CPLEX の開発者がうっかり見つけてしまって、それを回避してしまう前処理を入れてしまうかもしれないから、イタチごっごかもしれないけど。

2018年4月10日火曜日

台湾、進んでるなぁ

INFORMS の雑誌に台湾の AI とかブロックチェーンとかの話が載っていたのでパラパラと読んでみたけど、第一印象としては「台湾、進んでるなぁ」ということだった。

結構実用化に近いことをやってたりもしているようなので、重要な特許とかは先に抑えたりとかもしているかもしれない。(ブロックチェーンについては、特許を押さえるようにしている企業が日本の中にもある、というのを読んだ記憶がある。)
そうなると、こういった分野で基礎研究の論文とか書くにしても、特許と重なってないか、とかを慎重に調べる必要があるんだろうなぁ、と思ったりする。論文のデータベースで検索とかする時に特許の情報が一緒に掲載されたりということは見たことがないから、両方調べたりするのは大変そう。

AIとかブロックチェーンとかだと、台湾はこれから大きく発展していくのかもしれない、と思うような話だった。

2018年3月30日金曜日

Linux の screen が勝手に終了してしまうのを回避する

いつのころからか、Linux の screen コマンドや nohup コマンドがログアウトと同時に勝手に終了(あるいは切断)してしまっていて、困っていたのだが、今日になって調べてみたら systemd の変更に由来していることが分かった。

基本的な原因は
http://gihyo.jp/admin/clip/01/linux_dt/201605/30
にあるけれど、解決策としては、
http://blog.daionet.gr.jp/gami/server/systemd%E3%81%A8gnu-screen.html
にあるように
/etc/systemd/logind.conf 
に KillUserProcesses=No を書いて再起動すると screen や nohup が使えるようになる。

上記2つめの URL の記事だと No を書いただけだと反映されない、と書いてあったが、自分のところの設定では再起動してみたら反映されていた。この記事が書かれた後に、また設定の仕方に変更があったのかもしれない。


2018年3月28日水曜日

研究集会に参加してきた

今日は政策研究大学院大学での研究集会に参加してみて、あまり長い時間はいられなかったけど、どれも面白い話だった。

まずは、SDPで主問題と双対問題の両方に内点がないような問題で、その場合には「ほぼ確実に」双対ギャップがある、という話だった。
面白いのは、元の主問題を摂動した SDP の目的関数値は双対問題の値に近くなる、ということだと思う。つまり、摂動SDPの最適値と双対問題の間にあるギャップが分かれば、双対問題の値を求められるわけで、内点法では解けないような問題が解けるようになるかもしれない。

あと、クラスタリングの方法は、ある基準を満たせば凸計画問題で最適なクラスタリングができる、という理論的側面の話があった。
この基準について、どれくらいタイトなのか、というところが分かると、さらに面白いなぁ、と思う。つまり、その基準に使っている値よりも少しでも大きいと最適でないクラスタリングが作れるかどうか、ということ。

もう一つは機械学習系の DC アルゴリズムの話で、こちらの数値実験は精度が 10^{-5} ぐらいの緩いところでは matlab の fmincon よりも速い、という話だった。ただ、matlab の fmincon は汎用ソルバーなので、Lipshitz 条件を満たさない関数でも扱えるはずだから、fmincon よりも速い、というのは妥当なところかと思う。
個人的には、||x||_0 <= k の制約を ||x||_0 = k にも置き換えられたら、もっといろんな問題も解けるなぁ、と思ったり、あとは停留点だけでなくて Robinson 条件とかも満たしているかどうか調べると面白そう、と思ったりした。


やっぱり、たまに他のところで話を聞いてくると、いろいろと思いついたりでいいなぁ。