この前の RAMP で線形計画問題などを含む Chubanov の方法についての話があって、とても勉強になった。Chubanov の方法が流行っている、というのは既に聞いていたが、自分では勉強していなかったので、いい機会でもあった。
個人的な印象としては、
「漠然と想像していたよりも内点法に似通っている」
というところ。
基本的には、錐の中心へとスケーリングする、という計算方法がKarmarkar の内点法に近い印象になっているのではないかと思う。
対称錐の場合、homogeneous の性質が効くため、錐の中心とすべての実行可能内点は同じとみなすことができるので、Karmarkar の内点法で生成される内点の点列以外にも内点の点列が作れる、ということである。
単純に考えると、Karmarkar の内点法の生成する点列と Chubanov の内点法の生成する点列で凸結合を取れば、それら2つの方法を統合した計算手法が作れるんだろうなぁ、って思う。
そうすると、最初の反復では計算効率の良い Karmarkar 法を使って、解の近くに近づいたら Chubanov 法に切り替えて固有値計算をうまくやる、とかできるかとは思う。
2017年10月24日火曜日
2017年10月5日木曜日
Julia で Mosek 8 がこけるので、Mosek 7 を使えるようにする
Julia を Linux 上で動かしていて、ここから Mosek を呼びたいのだが、なぜか Segmentation fault が起こってしまい失敗する。
たぶん libc のバージョンとかがあっていないんだろうなぁ、と勝手に推測しているわけだが、Matlab から Mosek を呼んでも Segmentation fault が起こる。
そこで、Mosek.jl を build しなおして、Mosek 7 を利用するようにする。
まずは、julia で Mosek.jl をインストールする。
julia> Pkg.add("Mosek")
そのあとで、
$ cd ~/.julia/v0.6/Mosek/deps
に移動して、build.jl の最初にある
mskvmajor = "8"
mskvminor_minimum = 1
を
mskvmajor = "7"
mskvminor_minimum = 0
に修正する。
本来 Mosek.jl は Mosekのバージョンが 8.1 以降にしか対応していないので、そのバージョンチェックを 7 でも通過できるように修正していることになる。
(このあたりの不具合は、どっかで出てくるかもしれない。)
そのあとで、
$ cd ~/.julia/v0.6/Mosek/deps
$ MOSEKBINDIR=/home/username/mosek/7/tools/platform/linux64x86/bin julia -e 'include("build.jl")'
たぶん libc のバージョンとかがあっていないんだろうなぁ、と勝手に推測しているわけだが、Matlab から Mosek を呼んでも Segmentation fault が起こる。
そこで、Mosek.jl を build しなおして、Mosek 7 を利用するようにする。
まずは、julia で Mosek.jl をインストールする。
julia> Pkg.add("Mosek")
そのあとで、
$ cd ~/.julia/v0.6/Mosek/deps
に移動して、build.jl の最初にある
mskvmajor = "8"
mskvminor_minimum = 1
を
mskvmajor = "7"
mskvminor_minimum = 0
に修正する。
本来 Mosek.jl は Mosekのバージョンが 8.1 以降にしか対応していないので、そのバージョンチェックを 7 でも通過できるように修正していることになる。
(このあたりの不具合は、どっかで出てくるかもしれない。)
そのあとで、
$ cd ~/.julia/v0.6/Mosek/deps
$ MOSEKBINDIR=/home/username/mosek/7/tools/platform/linux64x86/bin julia -e 'include("build.jl")'
としてパッケージを build しなおす。このとき MOSEKBINDIR は Mosek のインストールされたディレクトリにあわせて適宜修正する。
これで何はともあれ Mosek 7 を Julia から呼べるようになる。
2017年10月3日火曜日
モデリング言語特集を読んでみて
今回の OPTIMA (つまり OPTIMA 103) はモデリング言語特集ということで、
JuMP (Julia), PuLP (Python), CVXPY (Python), ompr (R), ZIMPL
について書いてあって、それぞれの比較があって面白かった。
プログラミング言語としては、やはり Julia は R や Python よりも後発なだけあって使い勝手なども向上しているが、モデリング言語として考えると他との連携もあるので単純に比較するのは難しいので、結局最後は好みの問題とかこれまでの経験とかで決まるんだろうなぁ、と思ったりもする。
あと、それぞれのサンプルがあるが、サンプルとして数独が使われていることが多くて、研究者の中では数独って手ごろな問題としても面白いんだろうなぁ、って思ったりもする。
JuMP (Julia), PuLP (Python), CVXPY (Python), ompr (R), ZIMPL
について書いてあって、それぞれの比較があって面白かった。
プログラミング言語としては、やはり Julia は R や Python よりも後発なだけあって使い勝手なども向上しているが、モデリング言語として考えると他との連携もあるので単純に比較するのは難しいので、結局最後は好みの問題とかこれまでの経験とかで決まるんだろうなぁ、と思ったりもする。
あと、それぞれのサンプルがあるが、サンプルとして数独が使われていることが多くて、研究者の中では数独って手ごろな問題としても面白いんだろうなぁ、って思ったりもする。
2017年10月2日月曜日
論文読み:Julia で Feasiblity Pump
Julia で Feasibility Pump ベースのヒューリスティクスを実装した、という内容があったので、チェックしてみた。
FPBH.jl: A Feasibility Pump Based Heuristic for Multi-objective Mixed Integer Linear Programming in Julia
http://www.optimization-online.org/DB_HTML/2017/09/6195.html
手法としては、多目的関数最小化問題の Pareto をどうやっていくのか、というのがメインで、Feasibility Pump はサブぐらいの位置づけだった。
あと、Julia で整数計画問題を解くところは、CPLEX.jl を使っている。
FPBH.jl: A Feasibility Pump Based Heuristic for Multi-objective Mixed Integer Linear Programming in Julia
http://www.optimization-online.org/DB_HTML/2017/09/6195.html
手法としては、多目的関数最小化問題の Pareto をどうやっていくのか、というのがメインで、Feasibility Pump はサブぐらいの位置づけだった。
あと、Julia で整数計画問題を解くところは、CPLEX.jl を使っている。
2017年9月29日金曜日
Julia の now()
Julia の計算時間を測るには、@elapsed マクロが準備されているわけだけど、これだと begin-end でくくらないといけないので、Matlab のコードを tic, toc を移植したりするのが面倒だった。
調べてみたら、Julia には Julia で now() っていうナウい関数がちゃんとあった。例えば、
julia> start_time = now();
julia> X = rand(8,8);
julia> end_time = now()
julia> elapsed_time = end_time - start_time
10704 milliseconds
調べてみたら、Julia には Julia で now() っていうナウい関数がちゃんとあった。例えば、
julia> start_time = now();
julia> X = rand(8,8);
julia> end_time = now()
julia> elapsed_time = end_time - start_time
10704 milliseconds
のようにできるので、Matlab の tic, toc を置き換えるのも比較的簡単に行うことができる。
(ちなみに、最初の now() だけは LLVM でのコンパイルがあるので時間が少しかかる)
2017年9月21日木曜日
論文読み:白血病治療に関する最適化
Optimization of Combined Leukemia Therapy by Finite-Dimensional Optimal Control Modeling
https://link.springer.com/article/10.1007/s10957-017-1161-9
Journal of Optimization Theory and Applications,
First Online: 15 September 2017
白血病治療に関する最適化の論文が出てきていた。
基本的には制御理論の計算手法を適用しているようで、細かいところは専門用語のために追い切れていないが、こういった使い方も最適化としてできる、という点が面白いと思う。
あと、感覚的にはこういった治療とかに関しての論文は、イスラエルの研究者も多いような気がする。どこかにそういったのをカウントしているデータとかあったりするのだろうか?
https://link.springer.com/article/10.1007/s10957-017-1161-9
Journal of Optimization Theory and Applications,
First Online: 15 September 2017
白血病治療に関する最適化の論文が出てきていた。
基本的には制御理論の計算手法を適用しているようで、細かいところは専門用語のために追い切れていないが、こういった使い方も最適化としてできる、という点が面白いと思う。
あと、感覚的にはこういった治療とかに関しての論文は、イスラエルの研究者も多いような気がする。どこかにそういったのをカウントしているデータとかあったりするのだろうか?
2017年9月20日水曜日
ソウルに行ってきた
先週のほとんどの時間を使って、ソウル滞在をしてきた。
日本から見ると、北朝鮮のミサイル問題などでソウルに行くのは危ない、と思うかもしれないが、実際にソウルに行ってみるとそれほど大騒ぎをしていなかった。日本のテレビのようにミサイルの発射画面を繰り返して写したりするわけでもないし、避難訓練とかの案内もまったくなかった。
むしろ、着実に生活水準を上げてきているソウルと、デフレ問題などで生活水準がジリ貧で下がってきている東京の差を、きちんと注視するべきだとは思う。なんだかんだ言っても、自分が頑張る場所は東京なわけだし。
ソウルでは、たまたまスケジュールが重なったドイツからの研究者の Max clique に関するSDP緩和の話を聞くことができて面白かった。自分が普段やってないことを聞くというのは、新しい視点ができていいものだと思う。
自分のほうは、SDP 緩和を SOCP で解く方法などを考えてみたりして、普段の環境とは違うと集中力なども違うので、いい転換になったかと思う。
日本から見ると、北朝鮮のミサイル問題などでソウルに行くのは危ない、と思うかもしれないが、実際にソウルに行ってみるとそれほど大騒ぎをしていなかった。日本のテレビのようにミサイルの発射画面を繰り返して写したりするわけでもないし、避難訓練とかの案内もまったくなかった。
むしろ、着実に生活水準を上げてきているソウルと、デフレ問題などで生活水準がジリ貧で下がってきている東京の差を、きちんと注視するべきだとは思う。なんだかんだ言っても、自分が頑張る場所は東京なわけだし。
ソウルでは、たまたまスケジュールが重なったドイツからの研究者の Max clique に関するSDP緩和の話を聞くことができて面白かった。自分が普段やってないことを聞くというのは、新しい視点ができていいものだと思う。
自分のほうは、SDP 緩和を SOCP で解く方法などを考えてみたりして、普段の環境とは違うと集中力なども違うので、いい転換になったかと思う。
登録:
投稿 (Atom)