プログラミング所感 - 前へ 目次 次へ15/01/05(月)今野先生をまねして、ORの7カ条を 書いてみた。
15/01/06(火)正月、 パズルが舞い込み、テレビ見ながら解いてみた。 http://aial.shiroyagi.co.jp/2015/01/angel/ ちなみに、メールで回答を送ったのは、朝4時だったが、すぐに返事来てた。15/01/22(木)IISでPython。 コンパネの「プログラムと機能」でWindowsの機能の有効化または無効化を選ぶ。 インターネットインフォメーションサービスをチェック。 また、その中のWorld Wide Webサービス、アプリケーション開発機能、CGIをチェックしOK。 「C:\inetpub\wwwroot\test」ディレクトリを作成し、test.pyを後述のように作成。 コンパネの管理ツールを開き、「インターネット インフォメーション サービス (IIS) マネージャー」を起動。testフォルダをアプリケーションに変換。 testアプリケーションのハンドラーマッピングで、スクリプトマップの追加。 要求パスを「*.py」、実行可能ファイルを「python.exeのパス %s %s」、名前を「Python CGI」としOK。
15/02/04(水)プログラマが知るべき97のことが、 プログラマが知るべき97のこと.comで読める。15/02/10(火)娘が英検準1級の1次 受かったら、モニタの案内が来た。 モニタは、英検の試験の合格点を補正する目的で行うようだ。考えてみると、そもそもモニタを別に行う必要はない。 通常の試験問題とモニタ用の問題を混ぜて試験を行えばよい。 受験者には、どちらかわからないようにする。モニタ用の問題は採点対象としない。とすればよいだろう。 15/02/19(木)Pythonのはまりどころ。
15/03/08(日)Puzzleを数理最適化で解く 一番のメリットは、簡単ということだ。問題を定義さえすれば、汎用ソルバーが使えるから。 もう1つのメリットは、解がユニークだということを簡単に確認できることだろう。
一例を示そう。 要は一度解いて出てきた解を禁止する制約を追加してもう一度解けばよい。 解がなければユニークだ。 15/03/18(水)IPython3(Jupyter)にしてから matplotlibオプションが使えないので、グラフを書く前にマジックコマンドを書かないといけない。 いいかげん、面倒なので、下記のようにした。まず、「ipython profile create」で %HOMEPATH%\.ipython\profile_default にconfigファイルを作る。 その中の「ipython_config.py」の「c=」の次に下記を追加。
15/03/19(木)pulpを用いた定式化で はまった。空の制約式(例:c = LpConstraint(0, LpConstraintLE))を作って、 後から項を追加していくようにしていた。 1つめは、空の状態でaddConstraintしていたのだが、項を追加してからaddConstraintしないとダメであった。 2つめは、項の追加を、「c += 項」としていたのだが、cオブジェクトが別物になっていた。 別途リスト管理しているものが古いままで反映されなくなっていた。「+=」でなく、「addTerm」すればOKとなる。 3つめは、制約式が不要の場合に「c = None」としていて、「if c:」でチェックしていたが効いていなかった。 この箇所では、LpConstraint.__bool__がよばれ、変数がなくかつ右辺(RHS)が0の場合は、Falseとなる。 つまり、これでは空の制約式は引っかからない。 ちなみに(c = LpConstraint(非零, LpConstraintLE))では引っかかる。 その後「if c != None:」で比較していた。これは、not LpConstraint.__bool__(c - None)となる。 「c - None」は「c」と同じである。「if c != None:」と書くのと「if not c:」は等しい。 つまり、RHSが非零だとNoneと判断される! 結局、「if c is not None:」もしくは「if isinstance(c, LpConstraint)」ならばOKだ。 尚、Python2では、__bool__がよばれないので、上記のことは起こらない。 15/04/02(木)Windowsタブレット買った。 Diginnos DG-D08IWB 32GBとBluetoothのマウスとキーボード。
http://www.dospara.co.jp/5shopping/detail_prime.php?mc=5182&sn=0 ちょっと試しただけだが、HDMIでディスプレイにつながるし、普通のPCのように使える。 全部上着のポケットに入る。 15/04/10(金)日本語の形態素解析が 簡単になった。 「pip install janome」ですぐ使える。http://mocobeta.github.io/janome/ 15/04/13(月)Pythonだと、 「0.0 == -0.0」がTrueではあるが、0.0と-0.0は別のものだ。 どういう設計思想だったのだろうか。15/04/30(木)Juliaだと Ipoptがあっさりインストールできた。15/05/01(金)M/M/1待ち行列を SimJuliaでやってみたが、simpyより遅くなった。simpyより行数も若干多い。15/05/15(金)子供の SSHの海外派遣(短期留学)が内定。めでたしめでたし。15/05/22(金)PyCon申込んだら、 公開されている。https://pycon.jp/2015/ja/proposals/vote/8/ 15/05/24(日)最適化の仕事で Pythonを使うようになって、最適化以外にもいろいろできることを知り、 「面白い。みんなにも紹介しよう」と、セミナーを開催した。 https://kke.smartseminar.jp/public/seminar/view/1014https://kke.smartseminar.jp/public/seminar/view/1023 なかなか好評なので、その後も学会や講演などを続けて約1年で16件になる。
最適化のしきいが下がってきたので、Pythonを通じて普及させていきたい。 15/06/18(木)2040年の若年女性推計人口http://www.policycouncil.jp/pdf/prop03/prop03_2_1.pdf 日本やばい。地方はもっとやばい。マンションばっか建ててる場合じゃない。 15/06/25(木)数理最適化は覚える価値がある。数理最適化を解く手法の基礎は50年以上前に考えられたものであるが、 ここ最近になって、実務で使えるようになってきたと思う。 ソルバーの性能が上がったこともあるが、実行するためのしきいが下がってきたことにもよる。 「使える」とは、あなたが、数理モデルを容易に作れるようになってきたということだ。 あなたが、解くべき問題が1つだけだったなら、お金を払って誰かに頼むのがいいだろう。 あなたが、いくつかの課題を抱えているのなら、「数理最適化を覚える」ことは、投資対効果が大きい。 なぜならば、1つの方法を覚えるだけで、多種多様な問題を扱えるからだ。 その方法とは数式を用いた数理モデルの記述の仕方だ。 特に整数変数を用いた、離散最適化は、現実の様々な問題を扱うことができる。 ただし、離散最適化は、連続最適化に比べると難しい。 昔は、実務で扱うためには、問題の特性を考慮し、問題ごとにアルゴリズムを開発する必要があった。 今では、汎用ソルバの性能が上がってきたので、問題を数式で表現するだけで解けるようになってきた。 (もちろん、昔に比べれば解ける問題は増えてきたが、解けない問題もたくさん残っている) あなたが、抱えている問題は、実は、他の誰かが抱えている問題でもある。 多くの人が抱えている問題は、標準問題という形で類型化されており、より容易に扱えるようになっている。 さらに、数理問題としてとらえれば、標準問題の枠組みを超えて、より複雑になった場合でも扱えるのだ。 15/07/21(火)Windowsでnumpyをインストールする方法は、 3通りある。 3種類ともコンパイル済みのexeを使ってインストールする方法になる。 pipではソースからコンパイルさせるが、(相当がんばらないと)うまくいかないので、この中には入れていない。
次に、gohlkeを使うのは可能である。しかし、他にも入れようと思うと手間がかかる。 おすすめは、Anacondaを使う方法だ。他にも類似のはあるが、Python3への対応の早さを考えるとAnacondaが一番よい。 最初、gohlkeを使ってしばらくやっていたのだが、その後で、Anacondaを使うようになったが楽だ。 初心者には、間違いなくAnacondaを勧める。(覚えることは増えるが、しょうがない) 15/07/27(月)PyPIの登録数が6万3千超えている。 どういう風に増えているか、検索しても見つからなかったので、自分で記録を取ることにした。 ここ1週間だと、1日約50件づつ増えている。15/08/27(木)pulpの変数をpandas.DataFrameで 管理している。便利。PyCon2015トークセッション採択された。 15/09/03(木)定式化とPythonを なるべく一致させるために。
15/09/29(火)去年のPyConの発表資料。
数理最適化によるパズルの解法
15/09/30(水)OR学会誌、 最新号がwebで見れる。http://www.orsj.or.jp/e-library/elcorsj.html15/10/01(木)変換で キャッシュすると早くなるかもしれない。
15/10/02(金)IPythonのグラフ表示で、 後ろに「;None」って書いていたけど、「;」だけでいいのか。 http://yag.xyz/blog/2015/06/21/ipython-notebook-suppress-output/15/10/03(土)VS2015で PTVSのインストールが失敗していたのだが、VSの最初のインストールで選べばいいだけだった。15/10/05(月)seabornのパレット https://dl.dropboxusercontent.com/u/35689878/pdf/pal.pdf15/10/09(金)ドント方式の計算
15/10/13(火)PyConJP2015の 発表資料。http://www.slideshare.net/SaitoTsutomu/python-pycon-2015 PyConJP2015は600人超の参加で盛況でした。来年も楽しみ。 15/10/23(金)pythonのインデントは、 いくつでもいいようだ。下記も普通に実行できる。
15/11/04(水)flake8の main.pyの49行目に「sys.stderr.write('%.3f\n' % (report.total_errors / len(report.lines))」を入れて、 --countつきで実行すると行あたりの数が出る。15/11/11(水)ブログ歴19年目突入。 Docker勉強している。advent2015にPythonとアルゴリズムで申込んだ。15/12/03(木)Gurobiセミナーに参加した。advent書いた。 http://qiita.com/Tsutomu-KKE@github/items/29414e2d4f30b2bc94ae http://qiita.com/Tsutomu-KKE@github/items/a172137e80593a3005b3 15/12/08(火)5MBしかないlinuxのalpineに python3.4とnumpy,scipy,matplotlib,jupyter,...入れることができた。 https://github.com/catholabs/docker-alpineを参考にBLASとLAPACKをいれる。 下記を実行。
15/12/11(金)pandas.DataFrameやpulp.LpProblemを pickel形式でファイルでやりとりできる。 LpProblemは、_variables.clear()を呼んでからdumpしないと、load時に変数が倍になる。15/12/21(月)下記を参考に無限docker。https://orih.io/2015/12/we-should-think-twice-about-using-docker-in-docker/ ubuntu14.04で確認
15/12/30(水)DockerfileをUTF-8 にするとAutomateで失敗するかも。簡単に形態素解析。
プログラミング所感 - 前へ 目次 次へ |