Slide 1

Slide 1 text

Power始めたときに 意外と役に立った背景知識 (線形計画問題など) 2023.04.22 きままに勉強会 陽(AKIRA)

Slide 2

Slide 2 text

おことわり ワイの登壇は基本的に「お話」ベースです 技術的な内容はなかなかに希薄ですので 家事でもやりながらお聞きください。

Slide 3

Slide 3 text

おことわり2 たぶん後半は すんごい むずかしい話をします もう何が難しいのか わからなくなってきた

Slide 4

Slide 4 text

自己紹介 表田 陽(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!!

Slide 5

Slide 5 text

イベント紹介 毎週金曜21:30からPOWER APPSのアプデを漫才チックにお届けしています。 GUEST出演も歓迎しますのでよかったら遊びに来てください! YOUTUBE LIVEです、詳しくは「まぐろの生態ちゃんねる」で検索ぅ (最近収録ばっかりでごめんね) ちょんまげ(yamad365) まぐろ

Slide 6

Slide 6 text

楽器作ってます(再燃中) cymbal chime base oboe harp cajon 銅鑼 theremin Twitterで演奏公開中 Home 365 Office365 Office365 日報アプリ W/F お歳暮アプリ 在庫管理 機器管理 • プロジェクト管理アプリ • 図番検索アプリ • 社内図書アプリ • 社内行事アルバムアプリ • ビンゴアプリ • おみくじアプリ・・・など現在200個以上作成 勤怠アプリ

Slide 7

Slide 7 text

数学の家庭教師やってます

Slide 8

Slide 8 text

YouTuberやってます (チャンネル登録おなしゃす)

Slide 9

Slide 9 text

たぶん本業は設計士です 建築士 …建築の設計を行う人 土木施工管理技士 …土木の設計を行う人 ハーネス設計 …車の電線の配置設計をする人 精密機械加工設計 …材料からどう切削するかどの機械を作るか設計する人 業務改善(設計)支援 …業務改善を方法や手法を考え、その方法を考える人

Slide 10

Slide 10 text

市民開発者だからね・・・? わたしはもともとプログラマでもなんでもありませんので、 あくまで「設計」のプロとしてお話しますね 実際の手法とズレてるかもしれないですので、ご了承ください。 あと個人の見解ってやつです(言い訳)

Slide 11

Slide 11 text

アンケート!!! ぶっちゃけ、数学すきですか? ▼挙手してくらはい

Slide 12

Slide 12 text

よくこんなことを言われています 数学なんて将来なんの役に立つんだよ!! 三角関数なんて大人になってから使わないよ! コミュニケーション能力があればヨシ! 君、成績いいけど あたま悪いよね? ヲタクwwww おべんきょうできるのすごいね! おなじくらいしごともできたらいいのにね! 学生時代に習ったことなんて 社会では役に立たないからな(イキリ)

Slide 13

Slide 13 text

そしてよくこんな返しをします 数学なんて将来なんの役に立つんだよ!! 三角関数なんて大人になってから使わないよ! コミュニケーション能力があればヨ シ! 君、成績いいけど あたま悪いよね? ヲタクwwww おべんきょうできるのすごいね! おなじくらいしごともできたらいいのにね! 学生時代に習ったことなんて 社会では役に立たないからな(イキリ) 「役に立たない」じゃなくて 「役立ててない」だよね?www 能力不足を道具のせいにすんなよwww

Slide 14

Slide 14 text

煽るだけなのもなんなので… 要件定義 (要求定義) 設計 フロー実装 単体テスト 結合テスト 運用テスト 本番環境移行 保守運用 数学をよく使うのはココ 次点 主観です

Slide 15

Slide 15 text

ツールは和訳すると「道具」ですね 「使うと便利になるもの」が知識や学問、勉強や研鑽です。 積み上げたものに意味がないものなんて無い

Slide 16

Slide 16 text

BUT 「道具を使う事を工夫する」ことだけが改善ではない

Slide 17

Slide 17 text

Power Automateを「どう使う」か 要件定義 (要求定義) 設計 フロー実装 単体テスト 結合テスト 運用テスト 本番環境移行 保守運用 たぶんここの話 次点 もしこれを設計と考えるならば 語ることは「設計の前」の話

Slide 18

Slide 18 text

設計とは? 設計 モノを作るときに、 構造や仕様を実際の生産に対する「必要十分な程度」に決定 道具の選定/手法の確立など

Slide 19

Slide 19 text

必要十分とは? 要件定義 要求定義 ヒアリングにて何をしたいのかを聞き 「必要十分条件」を定義する 手段/インプット/アウトプット/かかる時間/データ数/タイミング …etc

Slide 20

Slide 20 text

手段とは? ? 知らないと 手段なんて 提案できないよね

Slide 21

Slide 21 text

提案の手段の数 =アイディアの引き出しの数 こっちの計算のほうが 演算少なくないか…? インプットって こんなに必要か? 結果を出すために こんなに面倒な作業 必要か? 大事なのって「アルゴリズム」じゃないのか?

Slide 22

Slide 22 text

Power始めたくらいに思ったこと① 最適化アルゴリズムが大事なんじゃね?

Slide 23

Slide 23 text

アルゴリズムって? 「演算手段」のことです。 もっと簡単に言うと「計算方法」のことです。 数学の問題で考えてみましょう。 例題 1988×2012を計算せよ!

Slide 24

Slide 24 text

単純にやる(筆算) 1988 ×2012 3976 1988 0 3976 3999856

Slide 25

Slide 25 text

ちょっと工夫(因数分解の公式) 1988×2012=(2000-12)(2000+12) =2000²-12² =4000000-144 =3999856

Slide 26

Slide 26 text

解は同じなんだから楽したいじゃん! これが数学で誰もが習った 「最適化アルゴリズム」ってやつです ※習ってなくとも体得して感動した人はいるはず…

Slide 27

Slide 27 text

競技プログラミングって知ってますか? 競技プログラミングとは、いかに課題を解決するプログラム を短時間で記述するかを競う、プログラミングコンテストの 総称です。「競プロ」とか言われます。 「問題解決能力」を競うコンテストです。

Slide 28

Slide 28 text

最適化アルゴリズムの例 競技プログラミングの有名問題(Ants) 出典:プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ の改題 99センチの棒の上に100匹のアリがいます。 1cm間隔で100匹のアリが右・左・右・左…と向きを違え交互に並んでいます。 スタート!と言ったら毎秒1cmのスピードで歩いています。 竿の上は狭くてすれ違えないので、アリが出会うと、反対を向いて戻っていきます。 端に来ると落ちていきます。 すべてのアリが竿から落ちるまでにかかる時間を求めなさい。(アリの長さは考えないものとする)

Slide 29

Slide 29 text

最適化アルゴリズムの例 競技プログラミングの有名問題(Ants) 99センチの棒の上に100匹のアリがいます。 1cm間隔で100匹のアリが右・左・右・左…と向きを違え交互に並んでいます。 スタート!と言ったら毎秒1cmのスピードで歩いています。 竿の上は狭くてすれ違えないので、アリが出会うと、反対を向いて戻っていきます。 端に来ると落ちていきます。 すべてのアリが竿から落ちるまでにかかる時間を求めなさい。(アリの長さは考えないものとする) 毎秒1cm進む ぶつかったら 反対を向く 端から順番に 落ちていく 全匹落ちるのは何秒後?

Slide 30

Slide 30 text

考え方(1番左のアリは1秒で落ちる) 1.0㎝ ぶつかるのはお互いに0.5cm進んだ時=0.5秒後 反転してまた0.5cm進むと端に 到達するので合計で1秒かかる →初期位置に端にいたアリは1秒で落ちる

Slide 31

Slide 31 text

考え方(50番目のアリは…) … … ワイ、いつ落ちれるんや・・・ まともに考えるとエラすぎる(方言) =計算量が多すぎる→計算量爆発

Slide 32

Slide 32 text

美しい考え方 ぶつかって反転する=すれ違う と考えても計算変わらなくない?

Slide 33

Slide 33 text

つまり ぶつかって戻る すれ違っても… アリA アリB アリA アリB アリA アリB アリA アリB アリA アリB アリB アリA 1秒! 1秒 つまり…

Slide 34

Slide 34 text

つまり … 99㎝の橋の端から端まで、端にいるアリが進む時間を求めればいい 1cm/s×99cm=99秒! 99㎝ 考え方次第で2秒で解ける

Slide 35

Slide 35 text

つまり … 99㎝の橋の端から端まで、端にいるアリが進む時間を求めればいい 1cm/s×99cm=99秒! 99㎝ 考え方次第で2秒で解ける

Slide 36

Slide 36 text

知識×経験を用いて○○量が少ない方法をとる =最適化アルゴリズム 人間が楽するためにAIを使用し、「人間の労働量」を減らす …労働の最適化 無駄な業務を減らし「残業」を減らす …業務の最適化 Power AutomateでApply to eachを駆逐し、「無駄な処理」を減らす …道具の使用方法の最適化 Power Automateを知識で最適化し「計算量」を減らす …知識を用いた計算量の最適化 これらすべてを「工夫」という二文字で定義されがちだけど 実際は大小さまざまな最適化アルゴリズムがあるよね 工 夫

Slide 37

Slide 37 text

Power始めたくらいに思ったこと② 変数って代入法と数列じゃね?

Slide 38

Slide 38 text

JPAUG 初心者LT大会(2020/11) このころは初めてPower Automateを触ってみたので ツールの使い方はほとんど知らなかったんだ だからこそ、数学的に考えることに全振りしていたんだ

Slide 39

Slide 39 text

JPAUG 初心者LT大会(2020/11) これを「全数検査」といいます そしてその特徴を表にして 同じ計算をしている箇所を分析しているんだ

Slide 40

Slide 40 text

JPAUG 初心者LT大会(2020/11) これを「計算量爆発」といいます(違)

Slide 41

Slide 41 text

JPAUG 初心者LT大会(2020/11) …

Slide 42

Slide 42 text

JPAUG 初心者LT大会(2020/11) 開発は成功したけども以下の理由で運用は断念 ・自分が死んだら誰が引き継ぐ? ・法律変わったときメンテできる? ・失敗したら給料がヤヴァイ! 面白い登壇に全振りしてたけど、 ジツは動きは問題なくて完成はしてたんですよ (ホントだよ?)

Slide 43

Slide 43 text

JPAUG 初心者LT大会(2020/11) 今考えると「勤怠管理」という クッソ面倒なことに体当たりしたけども ちゃんと自分の中では計算量を減らそうと 代数的に考えて作成していたんだ (それでも途方もない計算量だったけど)

Slide 44

Slide 44 text

少ない手間で最高の結果を JPPGB #4の登壇資料にて

Slide 45

Slide 45 text

Power始めたくらいに思ったこと③ 数理最適化を伴う線形計画問題に似た 業務改善提案実例

Slide 46

Slide 46 text

数学には「数理最適化」という分野があります 「数理最適化」という考え方はわたしたちの身の回りにあります 例1:3時間で観光地を楽しむためにはどのルートを通るか? 例2:300円の予算で遠足のお菓子を選ぶには満足度が一番高い組み合わせは? つまり限定された中で、最適解は何か?という考え方です。 よくいう「ベストプラクティス」という概念と似たものです。 計算をし、期待値を出し、比較する

Slide 47

Slide 47 text

数学を使った考え方(線形計画問題) ごめんなさい多分すごい難しい… ※実際のお仕事で登壇者がPower Automateを使って作成した要件の改題です 廃材利用で儲けたいんだけど 余ってる材料で最大売上出したいんだよね 廃材で製品Aと製品Bが作れるんだけど それぞれ製品の値段が違うんだけど 計算を自動化できないかな? ついでにTeamsに通知だしてほしいんだわ (メンドクサソウ) (フンダクロウ)

Slide 48

Slide 48 text

数学を使った考え方(線形計画問題) ごめんなさい多分すごい難しい… ※実際のお仕事で登壇者がPower Automateを使って作成した要件の改題です 今収集できているデータって何がありますか? とりあえずExcelで残った材料数はチェックしてるよ それなら可能だと思いますよ(即断)

Slide 49

Slide 49 text

数学を使った考え方(線形計画問題) ごめんなさい多分すごい難しい… ※実際のお仕事で登壇者がPower Automateを使って作成した要件の改題です 単純な計算でいけます 考え方はあqwせdrftgyふじこlp; う、うるせぇ!!!! え、ちょっ…

Slide 50

Slide 50 text

数学的に要件定義(かなり条件を絞っています) 木材がQ₁kg、石材がQ₂㎏あり、 製品Aは木材A₁kg、石材B₁kg使用、N₁万円で売れる 製品Bは木材A₂kg、石材B₂kg使用、N₂万円で売れる 残っている材料でより効率的に最大売上を上げたい。 そのときの売上と製品A、Bの個数を知りたい。 製品Aを作る量X₁、製品Bを作る量X₂とし、それぞれの条件を考える 数学の問題 にしてみた

Slide 51

Slide 51 text

数学的に要件定義(かなり条件を絞っています) 木材が300kg、石材が400㎏あり、 製品Aは木材10kg、石材20kg使用、80万円で売れる 製品Bは木材10kg、石材10kg使用、60万円で売れる 残っている材料でより効率的に最大売上を上げたい。 そのときの売上と製品A、Bの個数を知りたい。 製品Aを作る量X₁、製品Bを作る量X₂とし、それぞれの条件を考える わかりやすく 数字にしてみた

Slide 52

Slide 52 text

数学を使った考え方(線形計画問題) 木材が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 この全パターン作って 比較しますか? このやり方だと 計算量爆発 するな…

Slide 53

Slide 53 text

数学を使った考え方(線形計画問題) 数学Ⅱ「不等式利用に伴う最適値」を応用 売上の式: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万

Slide 54

Slide 54 text

数学を使った考え方(線形計画問題) 数学Ⅱ「不等式利用に伴う最適値」を応用 売上の式: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万 平行移動

Slide 55

Slide 55 text

数学を使った考え方(線形計画問題) 数学Ⅱ「不等式利用に伴う最適値」を応用 売上の式: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で毎日 交点座標値出す だけじゃん! やったぜ! 楽して金儲け!

Slide 56

Slide 56 text

ではない!(傾きの考察) 単価の変動に備える 売上の式: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

Slide 57

Slide 57 text

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; これだけ

Slide 58

Slide 58 text

Power Automateで傾きを3パターン考える 最大値はQX₁+WX₂だから QX₁+WX₂=Aで Aが正の数であるならば絶対に X₁の傾きはーQ/Wとなるので これを以下の条件で振り分ける • -2≦a≦-1/2 • a<-2 • a>-1/2 これだけ

Slide 59

Slide 59 text

線形計画問題は様々な応用ができる 売上の最大値 給食の献立の栄養の量の最大値 プロジェクトの日程計画 営業の最短経路(巡回セールスマン問題) 品物の重量と耐荷重の最大値(ナップサック問題) などなど… みなさんも「数理最適化」の恩恵を受けています

Slide 60

Slide 60 text

注意 X₂ 40 50 10 20 30 20 30 40 50 交点の数だけ条件が出来るので、計算量を見積もる必要がある ▲6条件必要 Power Automateでやるのは 現実的ではないかも… 解ける問題に落とし込む(近似など) 見極めが大事

Slide 61

Slide 61 text

まとめ 「考え方」や「前提条件」を最適化すると ツール上の工夫なんてほとんどしなくてもよくなります。 今回は高校の数学Ⅱを使用した例を見せましたが、 実際は中学の知識でも使えることが多々あります(ドモルガンの定理など) ローコードなのかそうでないのか、の前に 「Power Platformを使用して何がしたいのか」を考えて Power Automateなどでの処理を最低化し、 「処理」を「思考」や「経験」で 少なくしていきましょう。