数学やプログラミングの備忘録

数理最適化, Python, C++をメインに紹介するブログ。

MENU

NetworkX - グラフのノードとエッジに色を設定する方法

pythonパッケージであるNetworkXで、グラフのノードとエッジに色を設定する方法を紹介します。 目次 NetworkXでノードとエッジに色を設定するpythonコード ノードの色の設定方法 エッジの色の設定方法 NetworkXで設定できる色の一覧 NetworkXでノードとエッ…

配送計画問題をpythonで最適化する

『容量制約付き配送計画問題(Capacitated Vehicle Routeing Problem, CVRP)を定式化し、pythonのpulpで最適化する方法』を紹介します。 目次 容量制約付き配送計画問題(CVRP)の定式化 容量制約付き配送計画(CVRP)をpythonのpulpで最適化 検証結果と配送ルー…

pulpを使いこなすための備忘録

pulpは、pythonで数理最適化のモデルを記述するためのモジュール です。モデル記述後、そのまま指定した最適化ソフトウェアで解くことができます。デフォルトでは、最適化ソフトウェアとして同梱されているCBCが呼び出されます。pulpとCBCは、COIN-ORにより…

pythonでC++(std::vector)を呼び出す

pythonをC++化すると10倍早くなる と言われています。全てのpythonコードをC++する手もあります(割と大変)が、実際のボトルネックはプログラムの一部分であることが多いです。よって、pythonの部分的なC++化は、「C++化の実装コスト」と「プログラム高速化」…

実践的!Rによる重回帰分析

pythonが流行する以前、Rで統計モデルを求めていた頃を思い出して、今日はRで重回帰分析(線形回帰)のプログラムを書いてみようと思います。実践的な流れとして、 CSV形式のデータを読み込む 読み込んだデータから必要な部分を抽出する 重回帰モデルを求める…

python + CVXOPT: 制約無し凸二次計画問題を解く

今日は、python の CVXOPT と呼ばれるライブラリを使って制約無し凸二次計画問題を解いてみます。 CVXOPT の基本的な使い方も紹介します。 CVXOPT は、多分 CONVEX と OPTIMIZATION の造語でしょうね。 調べた感じだと、線形計画問題や制約付き凸二次計画問…

python: NetworkX によるグラフのパス列挙

今日は、NetworkXを使ったグラフの パスの列挙 を紹介します。 グラフの任意の2つのノードが与えられたとき、その2点を始点終点とするパスを列挙します。厳密には、単純道(simple path)を列挙します。単純道とは、簡単に言えば、同じノードが複数回パスに…

制約無し凸二次計画問題を手計算で解く例題

今日は、制約無し凸二次計画問題(最適化問題)を手計算で解いてみます。 制約無し凸二次計画問題って何?という方や解法の手順を詳しく知りたい人は、下記の記事を参考にしてください。 www.letsopt.com 目次 例題 手計算で解く 例題 変数として の二つを持つ…

制約無し凸二次最適化問題の解法 (理論編)

最適化問題の1つである 制約無し凸二次最適化問題(二次計画問題) の 解法 をどこよりもシンプルに解説します。 目次 制約無し凸二次最適化問題とは? 制約無し凸二次最適化問題の解法 解法手順まとめ 制約無し凸二次最適化問題とは? 名前の通り、制約無しの…

Python初心者がlistを使いこなすために見るメモ

pythonで作りたいものをすぐ実装するという観点で、list は便利で使いがってがいいです。 listを使う上でよく使う関数やメソッドを紹介します。 pythonをこれから勉強する人などのために役に立てばと思います。 目次 まとめ(サンプルコード) リストを作る 空…

python: NetworkX による無向/有向グラフの読み込みと可視化

pythonのNetworkXを使って、グラフをテキストファイルから読み込んで表示する方法を、グラフの種類別にまとめます。 目次 無向グラフの読み込みと可視化 入力ファイルのフォーマット(重み無し) read_edgelistメソッドの引数 重み付き無向グラフの読み込みと…

C++14: おぅっと驚く auto の使い方 [入門]

c++を書く上でとても便利な auto の使い方を入門者レベルで紹介します。 サンプルコードもあるので、是非参考にしてください。 目次 簡単な説明 サンプルコード 関数の返り値による型推論 初期化子による型推論 イテレータの型名を auto で推論 範囲for文で…

NumPy - 1次元/2次元配列の初期化

python の NumPy パッケージで、1次元/2次元配列を初期化する方法に加えて、配列のサイズや型を指定する方法も紹介します。 目次 配列を初期化する3つの関数 配列を0で初期化(0埋め): numpy.zeros 配列を1で初期化(1埋め): numpy.ones 配列を任意の値で…

パーセプトロンって 何?仕組みを理論的に解説

何となく機械学習を勉強しようと思って、手始めにパーセプトロンについてまとめます。 歴史 1943年、 MCPニューロン と呼ばれる簡略化された脳細胞に関する初めての概念が発表される その数年後、MCPニューロンに基づく パーセプトロン の学習規則に関する最…

git: リポジトリを作成してpushするまで

git

いつも忘れちゃって調べているので、メモしておく 新規リポジトリ作成手順 (プラウザ) Github にログイン 新規リポジトリ作成 アドレスをコピー (ターミナル) 初期設定 : push したいディレクトリで git init ファイルを追加 : git add -A or git add filena…

多目的最適化の3つの解法

実務ではいろんなことを最小化したい場合がありますよね。例えば、時間だったり、電気代だったり、人手だったり、、。そんなときに、考えるのは多目的最適化です。その多目的最適化について解法を紹介します。 今、最小化したい 個のコスト関数を $$ f_1(x),…

numpy: インストールとインポート

numpy のインストール・インポートの方法をメモ。 インストール まずは、numpy をインストール済みかどうかを確認します。 コマンドプロンプト を起動し、以下のように python を起動して、 numpy が利用できるかどうか確認します。 $ python > import numpy…

二次計画問題・整数二次計画問題の応用例

2次関数が現れる最適化問題って何があるんだろうか、、? そう思っていろいろ調べてみました。 この記事では、二次計画問題だったり、整数二次計画問題だったり、とにかく二次関数が現れる最適化問題の代表的な応用例を紹介します。 この記事では、数式は書…

Python: クラスの基本テンプレート

基本テンプレートの機能 Python のクラスのテンプレートを作成しました。機能的には、 コンストラクタ(初期化) カプセル化(publicとprivate) が含まれます。 解説 クラス名の先頭は 大文字 selfは文字通り 自分自身 メソッド 内外 で変数を定義できる 変…

二次計画問題のクラスと解法

クラス 二次式が現れる最適化問題はいろいろあるから、クラス別に簡単にまとめてみます。なんともマニアックな記事です。 この記事に出てくるのは、以下のクラスです。 制約無し二次計画問題 線形制約付き二次計画問題 二次計画問題 0-1整数二次計画問題 整…

C+11/14: autoの型推論とconst修飾子

C+11/14を初めて使ってみたとき、 auto による型推論は感動を覚えました。 ものすごく長ったらしい型を入力する必要が無くなると分かったときは、 auto 最高!とさえ、思いました。 型推論によって便利になった反面、ソースコードを読み解いたり・読み返すと…

今すぐ使える!Pythonで線形回帰分析

はじめに 大学の宿題や研究、会社での突然の無茶振り、などなど、線形回帰モデルを求めなければならない場面は多々あると思います。そういう人の参考になればと思います。ちなみに、この記事では線形重回帰を扱います。 前提として、 線形回帰モデルにが何な…

(理論編)線形回帰モデルの計算方法

個のサンプルデータ が与えられたとき、最小二乗法 で 線形回帰モデル を求める方法をまとめます(いつも忘れちゃう)。 線形回帰モデル 例えば、上のサンプルデータが、 人の身長、体重、座高だったとして、身長の値を体重と座高を線形の式で表したいなー、…