Local Optima

数理最適化を趣味的に楽しむ。

Python

こんなふうにPythonプログラムを育てたい(願望)

Pythonプログラムを実装・開発した先に「展開」のステップが待ち構えていることだろう。つまり,ただの小さなスクリプトが,他の人の環境に配布されていったり,アプリケーションやシステムになっていったりする日が来るかもしれない。 そこで覚えたい(願望…

標準ライブラリのソースを読んでPython力を鍛えよう

Pythonの標準ライブラリは,開発された時代が古い場合があることを除けば,汎用性が高く,背景知識への依存度が少なく,他のライブラリとの依存関係も少ないため,ソースコードを読むことにより,「きれいで機能的なPythonのコーディング」を学ぶことができ…

私とPythonのバージョン

私が最初にPythonを触ったのは2017年頃だった。当時すでにPython 3系の開発も進んではいたが,まだまだPython 2.7の人気が盤石だった時代である。インターネット上のPython関係の記事も,あるにはあったが現在の掃いて捨てるほどあるような様子に比べればま…

python-mip.Model.add_constr について

本日もPython MIPの話題だが,その前に,PuLPの話から。 PuLPのモデルに制約を追加するときの記法 # PuLP model += 2*x + 3*y<= 6 という記法が,個人的にあまり好みでない。完全に好みの問題だ。 Python MIPでは,もともとPuLPに触発されて開発が始まったと…

Python MIPについて

オープンソースの数理計画ソルバーでなかなかの地位にいるのが,Coin-ORプロジェクトのCBCソルバーである。 CBCのドキュメント (readme.md) にあるように,このソルバーを利用する方法はいろいろある。 なかでも,CBCを使えるPythonモジュールとして,cbcpy…

Pythonで信号の平滑化

MATLABドキュメントにある「信号の平滑化」は、日本語の文献としては、情報の量と粒度が適度にまとまっているようです。 jp.mathworks.com 本稿では、上記ドキュメントで行われていること(の一部)を、Pythonベースで、numpy, pandas, scipyなどのライブラ…

Pythonでグラフを書く & レポートで使うには

グラフ描き、していますか。Excelでグラフを作るのも悪くはないけど、データ量が多いとか、Excelよりはもう少し気の利いたことを「何か」にやって欲しいなあというときには、Pythonが便利です。 Pythonを使ってグラフを描くツール グラフの書式をレポート向…

Python + PuLP でたくさん輸送問題

第2回で輸送問題をPuLPで解きました。 local-optima.hateblo.jp あれでもいいのですが、あのコードでは一回解いたきりで終わってしまいます。 ただの趣味ならいいけれど、最適化を外部から呼び出せるものとして実装する必要が(普通は)あるでしょう。そして…

Python + PuLPでナップサック問題

3回目は整数計画問題ということでナップサック問題を扱います。ナップサック問題を通じてPuLPで整数変数を使う方法を見ていきます。

Python + PuLPで輸送問題

PuLPで最適化シリーズ第2回は、輸送問題を解いてみます。工場から店舗への供給を最適化する、ロジスティクスの基本問題です。 モデリングの復習でもありますが,リストや辞書を使ったPythonらしい書き方でモデリングをしていきます。 輸送問題の定義 m個の…

Python + PuLPで線形計画

しばらく,線形計画でできる話をしていきます。 線形計画問題とは 線形「計画」とはいいますが Linear Programming の訳語です。リニアが線形(一次式)で,プログラミングはこういう文脈では「計算」くらいの意味合いです。どんな計算かといえば, 何本かの…