Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ちょっとかしこく生きよう
Search
なごみそ
May 23, 2018
Technology
0
520
ちょっとかしこく生きよう
※2018-05-23 23:50 式が間違っていたので修正。
なごみそ
May 23, 2018
Tweet
Share
More Decks by なごみそ
See All by なごみそ
デレマス呼称表から見える アイドルの関係(?)
nagomiso
1
980
ネットワーク分析してみた
nagomiso
2
440
JUMAN++で分かち書きをしたかった...
nagomiso
0
53
さよなら Storm
nagomiso
0
26
ここが変だよ Apache Storm
nagomiso
0
9
Other Decks in Technology
See All in Technology
データ分析を支える技術 生成AI再入門
ishikawa_satoru
0
380
Git 研修 Advanced【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
200
CTOから見た事業開発とプロダクト開発 / My Perspective on Business and Product Development as CTO
keisuke69
4
960
ギークの理想が7つ集まるエムスリーで夢を叶えよう - エムスリー株式会社
m3_engineering
1
260
Luupの開発組織におけるインシデントマネジメントの変遷 ver.RoadtoSRENEXT2024
grimoh
1
270
MySQLのロックの種類とその競合
yoku0825
6
1.6k
20240724_cm_odyssey_hibiyatech
hiashisan
0
110
20240725 LLMによるDXのビジョンと、今何からやるべきか @Azure OpenAI Service Dev Day
nrryuya
3
1.2k
Scaling Technical Excellence at 104: Evolution in AWS and Developer Empowerment
scotthsieh825
1
150
年間一億円削減した時系列データベースのアーキテクチャ改善~不確実性の高いプロジェクトへの挑戦~
lycorptech_jp
PRO
3
2.9k
[NIKKEI Tech Talk]Bias for Action!! 実践から学ぶための仕組とコミュニティ / Community for Practice and Learning
kanamasa
0
270
LINE WORKSへ簡単通知!Incoming Webhookアプリの紹介
mmclsntr
0
110
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
346
19k
Designing on Purpose - Digital PM Summit 2013
jponch
113
6.6k
The Power of CSS Pseudo Elements
geoffreycrofte
64
5.2k
Fireside Chat
paigeccino
25
2.8k
The Brand Is Dead. Long Live the Brand.
mthomps
52
36k
The Art of Programming - Codeland 2020
erikaheidi
48
13k
Build The Right Thing And Hit Your Dates
maggiecrowley
28
2.2k
StorybookのUI Testing Handbookを読んだ
zakiyama
15
4.9k
BBQ
matthewcrist
82
9k
The Pragmatic Product Professional
lauravandoore
29
6.1k
Happy Clients
brianwarren
94
6.5k
The Invisible Customer
myddelton
117
13k
Transcript
ちょっとかしこく生きよう なごみそ@Kawasaki.rb 60th
自己紹介 • 名前: なごみそ(@NagominHotMotto) • 仕事: 夏と冬に有明周辺で戦うこと • 副業: SEっぽいことをしています
使用できるロッカーも変更になるため ロッカーの再割当てが必要になった 社内の席替え
会社から出てきた割当案が あまりにも ク◦ だった
何が ク◦ だったか
何が◦ソだったか • 思考を完全停止させた配置 – 社員番号順に配置させただけ • 自席とロッカーが 遠い ここ◦ソ
頭にきたのでロッカーの割当を 数理最適化 するプログラムを作った
数理最適化してみた ロッカーの割当てを 整数計画問題 にした – 線形計画問題(Integer Programming; IP): • 目的関数が線形関数で表現できて変数ベクトルの
要素が整数のみ かつ制約条件が線形関数と不等式で表現できる問題
どんなことをしたか • 式を作る • 座席とロッカーの座標情報を取得する • ソルバーで解く
どんなことをしたか • 式を作る • 座席とロッカーの座標情報を取得する • ソルバーで解く
式を作る • もろもろ定義 – 座席: – ロッカー: – 定数: –
変数:
式を作る • 目的関数 – 全員の座席からロッカーまでの距離総和 – これが最小になる x を探す
式を作る • 制約条件 – ロッカーはひとり必ず1個割当てる – ロッカー1区画にはn人まで割当てられる
どんなことをしたか • 式を作る • 座席とロッカーの座標情報を取得する • ソルバーで解く
座席とロッカーの 座標情報を取得する • 座席とロッカーの地図はExcel製(ここもク◦) • Pandas + Xlrd でデータフレームとして読込み •
データフレームの0行0列要素を原点として 座席とロッカーの座標を取得 さくら いずみ うづき りん あこ みお ロッカーA ロッカーB さくら=(0,1) いずみ=(1,1) あここ=(0,2) ロッカーA=(0,6) ロッカーB=(1,6) S L
どんなことをしたか • 式を作る • 座席とロッカーの座標情報を取得する • ソルバーで解く
ソルバーで解く • PuLP ( https://pythonhosted.org/PuLP/) • Python用の線形計問題最適化モジュール • 作って式を違和感なくコード化できる(と思った)
直感的(?) x = { (l, s): pulp.LpVariable( name='{}:{}'.format(l, s), lowBound=0,
upBound=1, cat=pulp.LpInteger ) for l, s in product(L, S) }
直感的(?) problem += pulp.lpSum( c[l, s] * x[l, s] for
l, s in product(L, S) ), 'TotalDistance'
直感的(?) for l in L: problem += \ sum(x[l, s]
for s in s) <= n, \ 'Constraint_leq_{}'.format(l)
最近はあんまりメンテされていないみたい
本当に席に近いロッカーを 手に入れられたのか?
こたえ 微妙でした
反省 • 総和でしか評価していないのでバラツキがある – 遠いヒトと近いヒトがいる(私は遠かった……) • 忖度できていない – エラいヒトも問答無用で遠い場所に配置
ちょっとかしこく生きよう • 何気ない身近な問題を技術でカイゼンできた • 思考停止は誰も幸せにならないよね – 歩く距離が伸びて疲れる...... – 人手で割当てるの面倒くさい...... •
要改善点 – バラツキを考慮する – 忖度できるように条件を考える
おしまい