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
640
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ちょっとかしこく生きよう
※2018-05-23 23:50 式が間違っていたので修正。
なごみそ
May 23, 2018
More Decks by なごみそ
See All by なごみそ
デレマス呼称表から見える アイドルの関係(?)
nagomiso
1
1.3k
ネットワーク分析してみた
nagomiso
2
530
JUMAN++で分かち書きをしたかった...
nagomiso
0
89
さよなら Storm
nagomiso
0
47
ここが変だよ Apache Storm
nagomiso
0
26
Other Decks in Technology
See All in Technology
なぜ私たちのSREプラクティスはなかなか機能しないのか 〜システムより先に組織を見る〜 / Why our SRE practices aren't really working
vtryo
3
3.7k
ローカルLLMとLINE Botの組み合わせ その3 / LINE DC Generative AI Meetup #8
you
PRO
0
130
個人開発で育てる「大規模設計の苗床」 - AI時代の1人開発から始める業務への知識接続 / The Seedbed for Large-Scale Design - From AI-Era Solo Projects to Professional Knowledge
bitkey
PRO
1
220
証券システムを10年Scalaで作り続けるということ - 関数型まつり2026
krrrr38
3
840
タスクの複雑さでモデルを選ぶ ── Thompson Samplingで動かす“トークン/コスト最適化
satohy0323
0
380
Claude Code公式skillで 自分の仕事を少しずつ手放そう!(Claude Code開発ノウハウ大公開スペシャル by クラスメソッド)
kaym
1
340
ZOZOTOWNの進化と信頼性を両立する負荷試験
zozotech
PRO
2
160
プロダクトだけじゃない、社内プロセスにおける自動化・省力化ノススメ
kakehashi
PRO
1
3.7k
SREとQA 二人三脚で進めるSLO運用/sre-qa-slo
sugitak
0
560
関数型の考えを TypeScript に持ち込んで、テストしやすい純粋関数を増やす / Pure at the Core, Effects at the Edge: Bringing Functional Thinking into TypeScript
kaminashi
1
110
10年目を迎えた「ABEMA」がどのように AI 活用を推進して、AI 駆動開発にシフトしているのか / How ABEMA, entering its 10th year, is promoting the use of AI and shifting toward AI-driven development
miyukki
0
140
Compose 新機能総まとめ / What's New in Jetpack Compose
yanzm
0
230
Featured
See All Featured
ラッコキーワード サービス紹介資料
rakko
1
3.9M
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
330
Believing is Seeing
oripsolob
1
170
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
A Tale of Four Properties
chriscoyier
163
24k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Being A Developer After 40
akosma
91
590k
The Curse of the Amulet
leimatthew05
2
13k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
320
AI: The stuff that nobody shows you
jnunemaker
PRO
8
830
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
270
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)
最近はあんまりメンテされていないみたい
本当に席に近いロッカーを 手に入れられたのか?
こたえ 微妙でした
反省 • 総和でしか評価していないのでバラツキがある – 遠いヒトと近いヒトがいる(私は遠かった……) • 忖度できていない – エラいヒトも問答無用で遠い場所に配置
ちょっとかしこく生きよう • 何気ない身近な問題を技術でカイゼンできた • 思考停止は誰も幸せにならないよね – 歩く距離が伸びて疲れる...... – 人手で割当てるの面倒くさい...... •
要改善点 – バラツキを考慮する – 忖度できるように条件を考える
おしまい