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
490
ちょっとかしこく生きよう
※2018-05-23 23:50 式が間違っていたので修正。
なごみそ
May 23, 2018
Tweet
Share
More Decks by なごみそ
See All by なごみそ
デレマス呼称表から見える アイドルの関係(?)
nagomiso
1
910
ネットワーク分析してみた
nagomiso
2
420
JUMAN++で分かち書きをしたかった...
nagomiso
0
31
さよなら Storm
nagomiso
0
14
ここが変だよ Apache Storm
nagomiso
0
7
Other Decks in Technology
See All in Technology
データマネジメントを支える武器としてのメタデータ管理
10xinc
1
440
HoneycombとOpenTelemetryでオブザーバビリティに入門してみる
sumiren
2
150
Tohoku.Tech #1 「Cursorを使ったRaspberry Piの開発」by ねこまた
jun2882
0
250
プッシュ型子育てサービスを、先行プロジェクト実施自治体において開始します
govtechtokyo
0
250
Kubeflow Pipelines v2 で変わる機械学習パイプライン開発
asei
4
340
複数の LLM モデルを扱う上で直面した辛みまとめ
kazuyaseki
1
230
今さら聞けない!? AWSの生成AIサービス Amazon Bedrock入門!
minorun365
PRO
11
2.3k
バッチ処理のSLOをどう設計するか
rynsuke
7
560
中央集権体制からDataOpsへの転換 / centralized-to-dataops-transformation
pei0804
7
1.5k
単回帰分析について数式を追いながら実装してみた
kentaitakura
0
500
あらゆる商品を扱う商品データベースを再設計した話 / product db re-architecture
rince
8
3.6k
BDD(Cucumber)コミュニティが無料提供しているコンテンツの紹介と現在起きている危機
nihonbuson
4
730
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
317
37k
The Invisible Side of Design
smashingmag
293
49k
The Power of CSS Pseudo Elements
geoffreycrofte
58
4.9k
Agile that works and the tools we love
rasmusluckow
323
20k
The Illustrated Children's Guide to Kubernetes
chrisshort
28
46k
Designing on Purpose - Digital PM Summit 2013
jponch
109
6.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
23
1.9k
Rails Girls Zürich Keynote
gr2m
91
13k
VelocityConf: Rendering Performance Case Studies
addyosmani
319
23k
Making Projects Easy
brettharned
106
5.4k
How to Ace a Technical Interview
jacobian
272
22k
Principles of Awesome APIs and How to Build Them.
keavy
119
16k
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)
最近はあんまりメンテされていないみたい
本当に席に近いロッカーを 手に入れられたのか?
こたえ 微妙でした
反省 • 総和でしか評価していないのでバラツキがある – 遠いヒトと近いヒトがいる(私は遠かった……) • 忖度できていない – エラいヒトも問答無用で遠い場所に配置
ちょっとかしこく生きよう • 何気ない身近な問題を技術でカイゼンできた • 思考停止は誰も幸せにならないよね – 歩く距離が伸びて疲れる...... – 人手で割当てるの面倒くさい...... •
要改善点 – バラツキを考慮する – 忖度できるように条件を考える
おしまい