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
600
ちょっとかしこく生きよう
※2018-05-23 23:50 式が間違っていたので修正。
なごみそ
May 23, 2018
Tweet
Share
More Decks by なごみそ
See All by なごみそ
デレマス呼称表から見える アイドルの関係(?)
nagomiso
1
1.2k
ネットワーク分析してみた
nagomiso
2
480
JUMAN++で分かち書きをしたかった...
nagomiso
0
72
さよなら Storm
nagomiso
0
41
ここが変だよ Apache Storm
nagomiso
0
16
Other Decks in Technology
See All in Technology
KotlinConf 2025_イベントレポート
sony
1
140
会社紹介資料 / Sansan Company Profile
sansan33
PRO
6
380k
テストを軸にした生き残り術
kworkdev
PRO
0
210
今日から始めるAWSセキュリティ対策 3ステップでわかる実践ガイド
yoshidatakeshi1994
0
110
LLM時代のパフォーマンスチューニング:MongoDB運用で試したコンテキスト活用の工夫
ishikawa_pro
0
170
Codeful Serverless / 一人運用でもやり抜く力
_kensh
7
450
MagicPod導入から半年、オープンロジQAチームで実際にやったこと
tjoko
0
100
COVESA VSSによる車両データモデルの標準化とAWS IoT FleetWiseの活用
osawa
1
380
未経験者・初心者に贈る!40分でわかるAndroidアプリ開発の今と大事なポイント
operando
5
730
下手な強制、ダメ!絶対! 「ガードレール」を「檻」にさせない"ガバナンス"の取り方とは?
tsukaman
2
450
Oracle Cloud Infrastructure IaaS 新機能アップデート 2025/06 - 2025/08
oracle4engineer
PRO
0
110
現場で効くClaude Code ─ 最新動向と企業導入
takaakikakei
1
260
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Fireside Chat
paigeccino
39
3.6k
KATA
mclloyd
32
14k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
Done Done
chrislema
185
16k
Faster Mobile Websites
deanohume
309
31k
Visualization
eitanlees
148
16k
Side Projects
sachag
455
43k
Balancing Empowerment & Direction
lara
3
620
Code Review Best Practice
trishagee
71
19k
Being A Developer After 40
akosma
90
590k
Designing for Performance
lara
610
69k
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)
最近はあんまりメンテされていないみたい
本当に席に近いロッカーを 手に入れられたのか?
こたえ 微妙でした
反省 • 総和でしか評価していないのでバラツキがある – 遠いヒトと近いヒトがいる(私は遠かった……) • 忖度できていない – エラいヒトも問答無用で遠い場所に配置
ちょっとかしこく生きよう • 何気ない身近な問題を技術でカイゼンできた • 思考停止は誰も幸せにならないよね – 歩く距離が伸びて疲れる...... – 人手で割当てるの面倒くさい...... •
要改善点 – バラツキを考慮する – 忖度できるように条件を考える
おしまい