サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ブックレビュー
qiita.com/SaitoTsutomu
数理モデル 数理モデルは、元記事と一緒ですが、表現方法だけ変えています。 変数: df.Var:ジョブをスタッフに割り当てるかどうか(0-1変数) df_staff.VarS:スタッフを使うかどうか(0-1変数) 目的関数:スタッフ数(df_staff.VarSの和) → 最小化 制約条件: ジョブごとに、いずれかのスタッフに割り当てる スタッフごと、クリークごとに、対象のVarの和がVarS以下 ※ クリークとは、1人のスタッフが同時にできないジョブの集合です。 データの取得 下記のOR-LibraryからZIPファイルをダウンロードして、解凍してください。 データの説明は、下記を参照してください。 pip install mip pandasで必要なライブラリをインストールしてください。 今回は、元記事と同じptask/data_1_23_40_66.datを使います。 データの読み込
これなに Blender3.4のジオメトリーノードで下記のようなことができるといいなと思って作ってみたアドオンの紹介です。 ビジュアルでなくテキストで読みたい。 Pythonでジオメトリーノードを作成するのではなく、テキストからジオメトリーノードを作成したい。 とりあえず、サンプルが動く状態になったので紹介します。 ジオメトリーノードはテキストにしても読むのは大変でした。 不具合 一部のノードでしか動作確認していませんが、下記の不具合があります。 Join Geometryノードの入力の順番が取得不可なので、順番が正しくないです。 非表示の入力ソケットの判別ができないので、inputsに不要なものが出ます。 ShaderNodeFloatCurveの曲線が再描画されません。 Undoなどをすると、落ちることがあり不安定です。 使い方 下記のアドオンをインストールします(テスト中に表示されま
はじめに この記事は、「最適化におけるPython(PuLP版)」で使っているモデラーのPuLPをPython-MIPに置き換えたものです。 どちらのモデラーもデフォルトのソルバーはCBCで使い勝手もほぼ同じですが、Python-MIPは下記の利点があります。 ソルバーとのインターフェースにCFFIを用いていて高速です。 PyPyが使えます。Python部分の実行速度も向上できる可能性があります。 ベクトル(NumPyの多次元配列)で制約条件を書けます。PuLPではforを使わないといけない制約条件をforを使わずにシンプルに書けます。サンプル PuLPよりわかりやすくモデルを作成できます。 目的関数の設定でobjectiveを明記してわかりやすい。 最大化か最小化を目的関数で指定できてわかりやすい。 目的関数の設定が=なのでわかりやすい(PuLPでは、追加でないのに+=)。 モデルのクラ
これなに N Queen問題を題材にした、組合せ最適化で求解するときのTipsです。 元記事:組合せ最適化でN Queen問題を解く 結論 制約の順番を変えると、計算時間が変わることがある。 4パターンで検証してみましょう。 from ortoolpy import pd, addbinvars, model_min, lpSum, addvals n = 8 df = pd.DataFrame([(i, j) for i in range(n) for j in range(n)], columns=['X', 'Y']) addbinvars(df); m = model_min() for i in range(n): m += lpSum(df[df.X == i].Var) == 1 m += lpSum(df[df.Y == i].Var) == 1 for i in rang
数理最適化による問題解決について説明し、巡回セールスマン問題を例に実際にPythonでモデル化の例を紹介します。 数理最適化とは 数理最適化とは、問題解決の手法です。 課題を数理モデルとしてとらえ、最適解(最も良い答え)を求めます。ここでは最適解を1つだけ求めることを考えます。 数理モデルは、「変数、制約条件、目的関数」で構成されます。 変数のとりうる空間を解空間といい、1つの解は空間上の1点になります。 制約条件は、空間の中の壁になります。目的関数は、空間の中のベクトル(進行方向)になります。 すなわち、最適化とは、壁で囲まれた空間(実行可能領域)を進行方向に最も進んだ点を探すことです。 社会の最適化問題 数理最適化は、社会の問題解決に役立っています。ここでは、オペレーションズ・リサーチ学会(OR学会)の「ORを探せ!」ポスターから抜粋してみます。 避難施設の配置計画作成 エネルギーマネ
%matplotlib inline import seaborn as sns, numpy as np from ipywidgets import interact, FloatSlider color_palette()を用いた作成方法 (Building color palettes with color_palette()) color_paletteを用いると、ほとんどのカラーパレットを作成できます。 set_paletteを用いると、デフォルトのカラーパレットを設定できます(例は後述)。 定性的なカラーパレット (Qualitative color palettes) カラーパレット名を指定しないと、現在のカラーパレットが取得できます。(下記は、デフォルトのカラーパレット) palplotは、カラーパレットを表示します。
これなに 日本地図を県別に色分けする Python3 用のライブラリ(japanmap)を作成したので紹介します。 実行例は、Jupyter Notebook 上で確認しています。 インストール pipでできます。numpy1、OpenCV、Pillowも一緒にインストールされます。xlrdは、Excelファイルの読み込みで使います。
webアプリでないコマンドラインでの、pythonのチャットプログラムは、探せばある。 しかし、どれも(非同期入力ができるものは)Windowsで動かない。一応、動くものができたので公開する。 サーバープログラム 「python server.py IPアドレス」として起動 import sys, socket, select def broadcast(socklist, server_socket, sock, message): print(message) for socket in socklist: if socket != server_socket and socket != sock : try : socket.send(message.encode()) except : socket.close() socklist.remove(socket) if __name
物流における最適化問題を紹介する。生産は物流と関係が深いので生産に関する問題も含む。 物流の問題は、一部の問題を除き、難しい問題が多い。また、入力データとなる諸元の入手が困難であることが多い。 以降で紹介する典型問題は理解を補助するため、簡略化しているものが多いので、実務で使う場合は、別途、検討すべきことが多いだろう。 経済発注量モデルは定式化して解く問題ではないので、ここでは省く。また、生産スケジューリング問題も定式化して解かれることが少ないので省く。 ロジスティクス・ネットワーク設計問題 配送最適化問題(運搬経路問題) 船舶スケジューリング問題 クルースケジューリング問題(勤務スケジューリング問題) 最小費用流問題 安全在庫問題 ロットサイズ決定問題 ジョブショップ問題(フローショップ問題) パッキング問題 収益管理問題 ロジスティクス・ネットワーク設計問題 工場や倉庫などの拠点の配置
最大安定集合問題の解で選ばれなかったノードは最小頂点被覆問題の解となる。 配送最適化を配送計画のように、XX最適化をXX計画と呼ぶことも多いが、XX計画は古い呼び方となる。 実行してみよう Dockerから起動する場合 Docker Toolboxをインストールし、Kitematicから、Dockerイメージtsutomu7/typical_optimizationを実行してください。 実行したら http://localhost:8888 を開いてください。Jupyter Notebook のパスワードは jupyter です。 Dockerのインストールに関しては、DockerでJupyterを起動するまでも参考にしてください。 ローカルにインストールし実行する場合 下記ソフトウェアをインストールしてください。インストール後は、上記の各問題のリンク先のコードを実行できます。 Pytho
これなに Binderという無料サービスの紹介をします。 github上のJupyter notebook のリポジトリから、実行可能なサービスを簡単に試せます。 つまり、ブラウザだけでいろいろな実行環境を作ることができます。 サンプルで試してみる サンプルとして、私の公開しているパズルを解くSaitoTsutomu/OptForPuzzleを試してみましょう。 手順 http://mybinder.org/ を開いてください。 Build a repositoryに「SaitoTsutomu/OptForPuzzle」と入力して、submitボタンを押してください。 自動的にdockerのイメージが作成され状態が更新されます。 completedが緑になったら、右上のlaunchボタンを押してください。 Jupyter notebookが起動するので、適当に開いて実行してみましょう。 G
なにをするの? 待ち行列について簡単に説明し、Pythonのプログラムを通してシミュレーションし確認します。 待ち行列とは 待ち行列では、サービスを提供するものをサーバ、サービスを提供されるものを顧客(クライアント)とよぶことにします。 顧客は、確率的(または確定的)に発生し、FIFO(First In First Out:先入れ先出し)の行列に並びます。 そして、先頭から確率的(または確定的)な時間をかけてサービスを受け、サービス終了後に抜けていきます。 このようなしくみを系またはシステムとよびます。 待ち行列における最も簡単なモデルは、M/M/1 モデルになります。 M/M/1 モデルとは 待ち行列では、(A)どのように到着するか、(B)どのようにサービスされるか、(C)サーバがいくつあるかが重要になります。 この3つの情報を、A/B/Cのように書く形式をケンドールの記号とよびます。つ
import numpy as np, pandas as pd from pulp import * from ortoolpy import addvars, addbinvars from io import StringIO a = pd.read_table(StringIO("""\ 曜日\t月\t月\t月\t火\t火\t火\t水\t水\t水\t木\t木\t木\t金\t金\t金\t土\t土\t土\t日\t日\t日 時間帯\t朝\t昼\t夜\t朝\t昼\t夜\t朝\t昼\t夜\t朝\t昼\t夜\t朝\t昼\t夜\t朝\t昼\t夜\t朝\t昼\t夜 必要人数\t2\t3\t3\t2\t3\t3\t2\t3\t3\t1\t2\t2\t2\t3\t3\t2\t4\t4\t2\t4\t4 従業員0\t○\t\t\t○\t\t\t○\t\t\t○\t\t\t○\t\t\t○\t\t\t○\
Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up
はじめに Python-MIP版の記事を作成しました。モデラーとしてPuLPよりPython-MIPの方がメリットが多いので、ぜひ、下記の記事も参考にしてください。 最適化におけるPython(Python-MIP版) 概要 私は、業務で、組合せ最適化技術を用いたソフトウェア開発(例えば、物流における輸送コストの最小化など)を行っています。以前は、C++やC#を用いて、最適化のモデルを作成していましたが、最近ではPythonを用いることが多いです。 ここでは、最適化におけるPythonについて紹介します。 Pythonのメリット Pythonを利用している理由としては、以下のような点があげられます。 わかりやすい。数式によるモデルとPythonによるモデルが近いため、より本質的な記述に専念でき、保守しやすいモデルを作成できる。 短い記述量で済む。C++などに比べるとプログラムのサイズは、数
はじめに データ分析、機械学習、最適化、可視化で Jupyter notebookを使っている人が多いかと思います。 また、Pythonの実行環境構築のために、anaconda を利用している人も増えているようです。 Jupyterの拡張機能として、nbextensionsがありますが、最新の anaconda の jupyter では、単純には利用できないようです。 ここでは、anaconda の jupyter でnbextensionsを使う方法を説明します。 Anaconda cloudを使う conda コマンドでは、continuum社で稼働確認したパッケージをインストールできます。それとは別に、PyPIのように、anacondaに特化したコミュニティパッケージサイトがあります。それが、anaconda cloudです。このサイトの先人たちの用意してくれたパッケージを使うと、通
はじめに DigitalOceanの管理ツール(dioc)を作成したので、ご紹介します。(利用については自己責任でお願いします。) 操作は、Ubuntu上で、DockerとPython3.5を用います。Windowsの方は、Ubuntuを入れてDockerを使う方法を参考に、VirtualBox、Ubuntu14、Docker1をインストールしてください。 Dockerが使えれば、Dockerイメージdioc-python-3.5を用いてすぐに始められます。 用語 DigitalOcean: AWSのEC2のようなクラウドサービス。 Droplet: 仮想OSのインスタンス。 Snapshot: Dropletの状態を保存したもの。Snapshotを元にDropletを作成できます。 Image: Dropletの元になるもの。公式のものと、Snapshotで作成した私的なものから選べます
Jupyter notebook最新版のセキュリティ notebookパッケージが4.3になってから、セキュリティが強化されたようです。 参考: Security in the Jupyter notebook server 「jupyter notebook」とすると、パスワード入力を求められます。 下記の手順で使えるようになります。 (1) 下記のように設定ファイルを作成する。
野菜の選び方はナップサック問題、乗り換え駅探索は、最短路問題といいます。典型問題は、よく研究もされているので、多くの場合、効率的な解法があります。あるいは、定式化がされているので、すぐ解くことができます。あとで、やってみましょう。ここで、あげている全ての典型問題の実行例は、典型問題と実行方法をご覧ください。 汎用問題 最近、私がやっているコンテナの仕事のお話しをします。 世界中の人たちが、いろいろなものを安く買えるのはコンテナ輸送のおかげです。中国などで生産したものを日本やアメリカやヨーロッパに、大量に安く運べるからです。でも、空のコンテナが、どんどんたまります。また中国に戻さないといけません。いつ、どこからどこに戻すかを決めるのが、最小費用流問題になります。ところが、最小費用流問題で表せない制約条件もあります。1 つが、カボタージュとよばれるものです。カボタージュというのは、国内のみの輸
このページを最初にブックマークしてみませんか?
『@SaitoTsutomuのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く