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
Power始めたときに意外と役に立った背景知識(線形計画問題など)
Search
akira
April 27, 2023
Technology
0
280
Power始めたときに意外と役に立った背景知識(線形計画問題など)
2023.04.22 きままに勉強会
akira
April 27, 2023
Tweet
Share
More Decks by akira
See All by akira
No9をサクッと難易度4パターン作ってみた
hyodol2513
0
160
様々な現場のPower Platform ~小さなエンジニアの奮闘記~
hyodol2513
0
3.8k
会社とタイから喰らったダメージが大きかった話
hyodol2513
0
800
Power Apps オンライン勉強会 ~つまづきポイント対策会~
hyodol2513
1
3.1k
業務改善検討会Vol.5
hyodol2513
0
140
第33回 Office 365 勉強会
hyodol2513
0
1.4k
コンポーネント勉強会の登壇決まったからコンポーネント勉強会登壇するためにコンポーネント勉強してみた
hyodol2513
1
3.5k
print機能でこう変わった!
hyodol2513
0
270
Teamsで教育丸投げメソッド
hyodol2513
3
2.7k
Other Decks in Technology
See All in Technology
物価高なラスベガスでの過ごし方
zakky
0
380
カメラを用いた店内計測におけるオプトインの仕組みの実現 / ai-optin-camera
cyberagentdevelopers
PRO
1
120
10分でわかるfreeeのQA
freee
1
3.4k
フルカイテン株式会社 採用資料
fullkaiten
0
36k
独自ツール開発でスタジオ撮影をDX!「VLS(Virtual LED Studio)」 / dx-studio-vls
cyberagentdevelopers
PRO
1
180
Commitment vs Harrisonism - Keynote for Scrum Niseko 2024
miholovesq
6
1.1k
生成AIと知識グラフの相互利用に基づく文書解析
koujikozaki
1
140
小規模に始めるデータメッシュとデータガバナンスの実践
kimujun
3
590
プロダクト成長に対応するプラットフォーム戦略:Authleteによる共通認証基盤の移行事例 / Building an authentication platform using Authlete and AWS
kakehashi
1
150
LeSSに潜む「隠れWF病」とその処方箋
lycorptech_jp
PRO
2
120
ネット広告に未来はあるか?「3rd Party Cookie廃止とPrivacy Sandboxの効果検証の裏側」 / third-party-cookie-privacy
cyberagentdevelopers
PRO
1
130
ガチ勢によるPipeCD運用大全〜滑らかなCI/CDを添えて〜 / ai-pipecd-encyclopedia
cyberagentdevelopers
PRO
3
210
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
53
9k
Measuring & Analyzing Core Web Vitals
bluesmoon
1
40
Learning to Love Humans: Emotional Interface Design
aarron
272
40k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
For a Future-Friendly Web
brad_frost
175
9.4k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Thoughts on Productivity
jonyablonski
67
4.3k
What's new in Ruby 2.0
geeforr
342
31k
The Power of CSS Pseudo Elements
geoffreycrofte
72
5.3k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
9
680
Transcript
Power始めたときに 意外と役に立った背景知識 (線形計画問題など) 2023.04.22 きままに勉強会 陽(AKIRA)
おことわり ワイの登壇は基本的に「お話」ベースです 技術的な内容はなかなかに希薄ですので 家事でもやりながらお聞きください。
おことわり2 たぶん後半は すんごい むずかしい話をします もう何が難しいのか わからなくなってきた
自己紹介 表田 陽(AKIRA, HYODA) 株式会社S-TBLのCEO 情シス代行業、業務改善/POWER PLATFORMコンサル @AKIRA_365 HTTPS://WWW.YOUTUBE.COM/CHANNEL/UCRK_UMORGHYOBQJO_KUIVNW 一級建築士/一級土木施工管理技士/数学塾講師/家庭教師/
3DCADデザイナー/2DCADエンジニア/CAMエンジニア/動画作成 株式会社s-tbl CEO 株式会社ASAHI Accounting Robot 研究所 Growth hacker New!!
イベント紹介 毎週金曜21:30からPOWER APPSのアプデを漫才チックにお届けしています。 GUEST出演も歓迎しますのでよかったら遊びに来てください! YOUTUBE LIVEです、詳しくは「まぐろの生態ちゃんねる」で検索ぅ (最近収録ばっかりでごめんね) ちょんまげ(yamad365) まぐろ
楽器作ってます(再燃中) cymbal chime base oboe harp cajon 銅鑼 theremin Twitterで演奏公開中
Home 365 Office365 Office365 日報アプリ W/F お歳暮アプリ 在庫管理 機器管理 • プロジェクト管理アプリ • 図番検索アプリ • 社内図書アプリ • 社内行事アルバムアプリ • ビンゴアプリ • おみくじアプリ・・・など現在200個以上作成 勤怠アプリ
数学の家庭教師やってます
YouTuberやってます (チャンネル登録おなしゃす)
たぶん本業は設計士です 建築士 …建築の設計を行う人 土木施工管理技士 …土木の設計を行う人 ハーネス設計 …車の電線の配置設計をする人 精密機械加工設計 …材料からどう切削するかどの機械を作るか設計する人 業務改善(設計)支援
…業務改善を方法や手法を考え、その方法を考える人
市民開発者だからね・・・? わたしはもともとプログラマでもなんでもありませんので、 あくまで「設計」のプロとしてお話しますね 実際の手法とズレてるかもしれないですので、ご了承ください。 あと個人の見解ってやつです(言い訳)
アンケート!!! ぶっちゃけ、数学すきですか? ▼挙手してくらはい
よくこんなことを言われています 数学なんて将来なんの役に立つんだよ!! 三角関数なんて大人になってから使わないよ! コミュニケーション能力があればヨシ! 君、成績いいけど あたま悪いよね? ヲタクwwww おべんきょうできるのすごいね! おなじくらいしごともできたらいいのにね! 学生時代に習ったことなんて
社会では役に立たないからな(イキリ)
そしてよくこんな返しをします 数学なんて将来なんの役に立つんだよ!! 三角関数なんて大人になってから使わないよ! コミュニケーション能力があればヨ シ! 君、成績いいけど あたま悪いよね? ヲタクwwww おべんきょうできるのすごいね! おなじくらいしごともできたらいいのにね!
学生時代に習ったことなんて 社会では役に立たないからな(イキリ) 「役に立たない」じゃなくて 「役立ててない」だよね?www 能力不足を道具のせいにすんなよwww
煽るだけなのもなんなので… 要件定義 (要求定義) 設計 フロー実装 単体テスト 結合テスト 運用テスト 本番環境移行 保守運用
数学をよく使うのはココ 次点 主観です
ツールは和訳すると「道具」ですね 「使うと便利になるもの」が知識や学問、勉強や研鑽です。 積み上げたものに意味がないものなんて無い
BUT 「道具を使う事を工夫する」ことだけが改善ではない
Power Automateを「どう使う」か 要件定義 (要求定義) 設計 フロー実装 単体テスト 結合テスト 運用テスト 本番環境移行
保守運用 たぶんここの話 次点 もしこれを設計と考えるならば 語ることは「設計の前」の話
設計とは? 設計 モノを作るときに、 構造や仕様を実際の生産に対する「必要十分な程度」に決定 道具の選定/手法の確立など
必要十分とは? 要件定義 要求定義 ヒアリングにて何をしたいのかを聞き 「必要十分条件」を定義する 手段/インプット/アウトプット/かかる時間/データ数/タイミング …etc
手段とは? ? 知らないと 手段なんて 提案できないよね
提案の手段の数 =アイディアの引き出しの数 こっちの計算のほうが 演算少なくないか…? インプットって こんなに必要か? 結果を出すために こんなに面倒な作業 必要か? 大事なのって「アルゴリズム」じゃないのか?
Power始めたくらいに思ったこと① 最適化アルゴリズムが大事なんじゃね?
アルゴリズムって? 「演算手段」のことです。 もっと簡単に言うと「計算方法」のことです。 数学の問題で考えてみましょう。 例題 1988×2012を計算せよ!
単純にやる(筆算) 1988 ×2012 3976 1988 0 3976 3999856
ちょっと工夫(因数分解の公式) 1988×2012=(2000-12)(2000+12) =2000²-12² =4000000-144 =3999856
解は同じなんだから楽したいじゃん! これが数学で誰もが習った 「最適化アルゴリズム」ってやつです ※習ってなくとも体得して感動した人はいるはず…
競技プログラミングって知ってますか? 競技プログラミングとは、いかに課題を解決するプログラム を短時間で記述するかを競う、プログラミングコンテストの 総称です。「競プロ」とか言われます。 「問題解決能力」を競うコンテストです。
最適化アルゴリズムの例 競技プログラミングの有名問題(Ants) 出典:プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ の改題 99センチの棒の上に100匹のアリがいます。 1cm間隔で100匹のアリが右・左・右・左…と向きを違え交互に並んでいます。 スタート!と言ったら毎秒1cmのスピードで歩いています。 竿の上は狭くてすれ違えないので、アリが出会うと、反対を向いて戻っていきます。
端に来ると落ちていきます。 すべてのアリが竿から落ちるまでにかかる時間を求めなさい。(アリの長さは考えないものとする)
最適化アルゴリズムの例 競技プログラミングの有名問題(Ants) 99センチの棒の上に100匹のアリがいます。 1cm間隔で100匹のアリが右・左・右・左…と向きを違え交互に並んでいます。 スタート!と言ったら毎秒1cmのスピードで歩いています。 竿の上は狭くてすれ違えないので、アリが出会うと、反対を向いて戻っていきます。 端に来ると落ちていきます。 すべてのアリが竿から落ちるまでにかかる時間を求めなさい。(アリの長さは考えないものとする) 毎秒1cm進む ぶつかったら
反対を向く 端から順番に 落ちていく 全匹落ちるのは何秒後?
考え方(1番左のアリは1秒で落ちる) 1.0㎝ ぶつかるのはお互いに0.5cm進んだ時=0.5秒後 反転してまた0.5cm進むと端に 到達するので合計で1秒かかる →初期位置に端にいたアリは1秒で落ちる
考え方(50番目のアリは…) … … ワイ、いつ落ちれるんや・・・ まともに考えるとエラすぎる(方言) =計算量が多すぎる→計算量爆発
美しい考え方 ぶつかって反転する=すれ違う と考えても計算変わらなくない?
つまり ぶつかって戻る すれ違っても… アリA アリB アリA アリB アリA アリB アリA
アリB アリA アリB アリB アリA 1秒! 1秒 つまり…
つまり … 99㎝の橋の端から端まで、端にいるアリが進む時間を求めればいい 1cm/s×99cm=99秒! 99㎝ 考え方次第で2秒で解ける
つまり … 99㎝の橋の端から端まで、端にいるアリが進む時間を求めればいい 1cm/s×99cm=99秒! 99㎝ 考え方次第で2秒で解ける
知識×経験を用いて◦◦量が少ない方法をとる =最適化アルゴリズム 人間が楽するためにAIを使用し、「人間の労働量」を減らす …労働の最適化 無駄な業務を減らし「残業」を減らす …業務の最適化 Power AutomateでApply to eachを駆逐し、「無駄な処理」を減らす
…道具の使用方法の最適化 Power Automateを知識で最適化し「計算量」を減らす …知識を用いた計算量の最適化 これらすべてを「工夫」という二文字で定義されがちだけど 実際は大小さまざまな最適化アルゴリズムがあるよね 工 夫
Power始めたくらいに思ったこと② 変数って代入法と数列じゃね?
JPAUG 初心者LT大会(2020/11) このころは初めてPower Automateを触ってみたので ツールの使い方はほとんど知らなかったんだ だからこそ、数学的に考えることに全振りしていたんだ
JPAUG 初心者LT大会(2020/11) これを「全数検査」といいます そしてその特徴を表にして 同じ計算をしている箇所を分析しているんだ
JPAUG 初心者LT大会(2020/11) これを「計算量爆発」といいます(違)
JPAUG 初心者LT大会(2020/11) …
JPAUG 初心者LT大会(2020/11) 開発は成功したけども以下の理由で運用は断念 ・自分が死んだら誰が引き継ぐ? ・法律変わったときメンテできる? ・失敗したら給料がヤヴァイ! 面白い登壇に全振りしてたけど、 ジツは動きは問題なくて完成はしてたんですよ (ホントだよ?)
JPAUG 初心者LT大会(2020/11) 今考えると「勤怠管理」という クッソ面倒なことに体当たりしたけども ちゃんと自分の中では計算量を減らそうと 代数的に考えて作成していたんだ (それでも途方もない計算量だったけど)
少ない手間で最高の結果を JPPGB #4の登壇資料にて
Power始めたくらいに思ったこと③ 数理最適化を伴う線形計画問題に似た 業務改善提案実例
数学には「数理最適化」という分野があります 「数理最適化」という考え方はわたしたちの身の回りにあります 例1:3時間で観光地を楽しむためにはどのルートを通るか? 例2:300円の予算で遠足のお菓子を選ぶには満足度が一番高い組み合わせは? つまり限定された中で、最適解は何か?という考え方です。 よくいう「ベストプラクティス」という概念と似たものです。 計算をし、期待値を出し、比較する
数学を使った考え方(線形計画問題) ごめんなさい多分すごい難しい… ※実際のお仕事で登壇者がPower Automateを使って作成した要件の改題です 廃材利用で儲けたいんだけど 余ってる材料で最大売上出したいんだよね 廃材で製品Aと製品Bが作れるんだけど それぞれ製品の値段が違うんだけど 計算を自動化できないかな? ついでにTeamsに通知だしてほしいんだわ
(メンドクサソウ) (フンダクロウ)
数学を使った考え方(線形計画問題) ごめんなさい多分すごい難しい… ※実際のお仕事で登壇者がPower Automateを使って作成した要件の改題です 今収集できているデータって何がありますか? とりあえずExcelで残った材料数はチェックしてるよ それなら可能だと思いますよ(即断)
数学を使った考え方(線形計画問題) ごめんなさい多分すごい難しい… ※実際のお仕事で登壇者がPower Automateを使って作成した要件の改題です 単純な計算でいけます 考え方はあqwせdrftgyふじこlp; う、うるせぇ!!!! え、ちょっ…
数学的に要件定義(かなり条件を絞っています) 木材がQ₁kg、石材がQ₂㎏あり、 製品Aは木材A₁kg、石材B₁kg使用、N₁万円で売れる 製品Bは木材A₂kg、石材B₂kg使用、N₂万円で売れる 残っている材料でより効率的に最大売上を上げたい。 そのときの売上と製品A、Bの個数を知りたい。 製品Aを作る量X₁、製品Bを作る量X₂とし、それぞれの条件を考える 数学の問題 にしてみた
数学的に要件定義(かなり条件を絞っています) 木材が300kg、石材が400㎏あり、 製品Aは木材10kg、石材20kg使用、80万円で売れる 製品Bは木材10kg、石材10kg使用、60万円で売れる 残っている材料でより効率的に最大売上を上げたい。 そのときの売上と製品A、Bの個数を知りたい。 製品Aを作る量X₁、製品Bを作る量X₂とし、それぞれの条件を考える わかりやすく 数字にしてみた
数学を使った考え方(線形計画問題) 木材が300kg、石材が400㎏あり、 製品Aは木材10kg、石材20kg使用、80万円で売れる 製品Bは木材10kg、石材10kg使用、60万円で売れる 残っている材料でより効率的に最大売上を上げたい。 そのときの売上と製品A、Bの個数を知りたい。 製品Aを作る量X₁、製品Bを作る量X₂とし、それぞれの条件を考える 売上の式:80X₁+60X₂ 条件1:10X₁+10X₂≦300 条件2:10X₁+20X₂≦400
この全パターン作って 比較しますか? このやり方だと 計算量爆発 するな…
数学を使った考え方(線形計画問題) 数学Ⅱ「不等式利用に伴う最適値」を応用 売上の式:80X₁+60X₂ 条件1:10X₁+10X₂≦300 条件2:10X₁+20X₂≦400 10 X₂ X₁ 40 50
10 20 30 20 30 40 50 この条件を満たすのは灰色の領域 のどこかでしかありえない つまり赤丸部分座標の(X₁,X₂)=(10個,20個)が最大値をとり、最大売上は2400万
数学を使った考え方(線形計画問題) 数学Ⅱ「不等式利用に伴う最適値」を応用 売上の式:80X₁+60X₂ 条件1:10X₁+10X₂≦300 条件2:10X₁+20X₂≦400 10 X₂ X₁ 40 50
10 20 30 20 30 40 50 この条件を満たすのは灰色の領域 のどこかでしかありえない 売上の式を 80X₁+60X₂=Tとおくと どんなTでも傾きは一定なので この傾きでスライドした軌跡の 初めての交点が最大値 つまり赤丸部分座標の(X₁,X₂)=(10個,20個)が最大値をとり、最大売上は2400万 平行移動
数学を使った考え方(線形計画問題) 数学Ⅱ「不等式利用に伴う最適値」を応用 売上の式:80X₁+60X₂ 条件1:10X₁+10X₂≦300 条件2:10X₁+20X₂≦400 10 X₂ X₁ 40 50
10 20 30 20 30 40 50 この条件を満たすのは灰色の領域 のどこかでしかありえない この傾きでスライドした軌跡の 初めての交点が最大値 つまり赤丸部分座標の(X₁,X₂)=(10個,20個)が最大値をとり、最大売上は2400万 Power Automateで毎日 交点座標値出す だけじゃん! やったぜ! 楽して金儲け!
ではない!(傾きの考察) 単価の変動に備える 売上の式:QX₁+WX₂ 条件1:10X₁+10X₂≦300 条件2:10X₁+20X₂≦400 つまり売上の最大値は3パターンで2000万、1600万、1800万の何れかになる 紫が青よりも射角が高けれ ば青が、 緑より射角が少なければ 緑が最大値になる
10 X₂ X₁ 40 50 10 20 30 20 30 40 50
Power Automateで連立方程式を解く ax+by=c...① dx+ey=f...② Xの係数を合わせる (①の両辺にdを掛ける。②の両辺にaを掛ける。) adx+bdy=cd...③ adx+aey=af...④ 式③から式④を引く ③-④=
(bd-ae)y=cd-af y=(cd-af)/(bd-ae)...⑤ ①よりx=(c-by)/a に⑤で求めたyを代入してxを求める。 プログラム的には… y=(c*d-a*f)/(b*d-a*e); x=(c-b*y)/a; これだけ
Power Automateで傾きを3パターン考える 最大値はQX₁+WX₂だから QX₁+WX₂=Aで Aが正の数であるならば絶対に X₁の傾きはーQ/Wとなるので これを以下の条件で振り分ける • -2≦a≦-1/2 •
a<-2 • a>-1/2 これだけ
線形計画問題は様々な応用ができる 売上の最大値 給食の献立の栄養の量の最大値 プロジェクトの日程計画 営業の最短経路(巡回セールスマン問題) 品物の重量と耐荷重の最大値(ナップサック問題) などなど… みなさんも「数理最適化」の恩恵を受けています
注意 X₂ 40 50 10 20 30 20 30 40
50 交点の数だけ条件が出来るので、計算量を見積もる必要がある ▲6条件必要 Power Automateでやるのは 現実的ではないかも… 解ける問題に落とし込む(近似など) 見極めが大事
まとめ 「考え方」や「前提条件」を最適化すると ツール上の工夫なんてほとんどしなくてもよくなります。 今回は高校の数学Ⅱを使用した例を見せましたが、 実際は中学の知識でも使えることが多々あります(ドモルガンの定理など) ローコードなのかそうでないのか、の前に 「Power Platformを使用して何がしたいのか」を考えて Power Automateなどでの処理を最低化し、
「処理」を「思考」や「経験」で 少なくしていきましょう。