【線型計画法】問題の背景と分割

image

線型計画法はいくつかの線形不等式(変数と変数の掛け算がない不等式)の解の中で、 ある線形表現の最大・小値となる解を見つける方法です。違う言い方をしてみれば、 数式で制御された変数の値の中で最適な値を見つける方法です。なんとなくの理解で問題ないですが、 もっと知りたい人はウィキペディアに参考してください。

線型計画法みたいな抽象的なテックニックをなかなか使う機会が出ないですが、 最近会社(株式会社東和製作所)で使えたおかげで塗装ラインの改善に貢献出来ました。

その背景と線型計画法を使うための問題分別を紹介します。 分かりやすくするため、一部のデータや状況を変更していますが、 流れ的には実際にぶつかった問題やその対策には変更がありません。

背景:塗装ラインの塗料無駄使い消滅

会社で製品を塗装していますが、少量多品種生産で色々な大きさのものをコンベアに掛けて 順番に自動塗装吹き付け機が塗装します。製品はコンベアに直接かけることができなくて、 ハンガーの治具を利用して塗装機の前を通させる必要があります。 製品の横幅や長さがバラバラで、作業者が掛け・下ろししやすくするためハンガーの長さもいくつかあります。

コンベアに様々な大きさが異なる製品を流す

下の図の通り、現在は製品の寸法に関係なく塗装機が動くため、 製品以外の場所にも塗料を噴射し、無駄(赤い枠)が発生しています。

塗装機が製品に関係なく動くため、塗料の無駄使いが多い

製品があまりにも多く、各製品の最適な塗装量を使うように塗装範囲を調整することも非現実的です。 ただし、製品をグルーピングして、そのグループ番号で塗装機の動きを制御すると現状より無駄を減らすことが可能です。 具体的に、製品の横幅、上限位置(ハンガーの長さ)、塗装長さ(製品の長さ)で塗装したい範囲が定義できるので、 それぞれの製品とハンガーから、3つのグループ番号を算出して、そのグループ番号から塗装範囲を決めます。

塗装範囲を特定するため、3つのパラメータを定義する

単純に考えると、各パラメータの値の範囲を一定の幅で分けてグルーピングを決めることができます。 例えば、横幅が20mmから200mmまでであれば、各グルーピングを20mmずつにすると全ての製品が対応できます。 同じく、他のパラメータのグルーピングを決めると以下のようなグルーピングが出来上がります。

グルーピング123456789
横幅~40~60~80~100~120~140~160~180~200
上限位置30~50~70~90~110~130~150~170~190~
塗装長さ~40~70~100~130~160~190~220~250~280

最適化問題の定義

それぞれの製品・ハンガーの組み合わせから各パラメータのグループが算出できます。

例えば、横幅43mm、長さ158mmの製品を120mmのハンガーに掛けるとします。上記のグルーピングを使えば、 横幅43mmが横幅グループ2(~60mm)に該当し、ハンガー120mmが上限位置グループ5(110mm~)に該当します。 上限位置グループ5は110mmのため、溢れたハンガー長さの10mmも塗装範囲内に入ります。 そのため、製品長さ158mmが塗装長さグループ6(~160)に該当しているが、製品がはみ出してしまいます。 上限位置を下回ったハンガーの10㎜を製品の長さ158mmと合わせて168mmの塗装長さとなり、 塗装長さグループ6(~190mm)に該当します。

製品・ハンガーの属性項目から塗装範囲を決める

そのグルーピングの組み合わせで、塗装範囲が分かりますので、その面積で使用する塗料が推理できます。 同じように、製品の寸法から理想の塗装範囲の面積と比較することが可能で、その差異で無駄も表現できます。 先の例ですと、グルーピングの塗装範囲が60mm x 190mm = 11,400mm2に対して、 理想の塗装範囲が43mm x 158mm = 6,794mm2になり、4,606mm2の無駄があります。

各製品に対して発生する無駄を計算するとグルーピング結果の評価ができ、違うグルーピング結果と比較することも考えられます。 つまり、違うふうにグループ分けをすれば、そのグルーピングの無駄も計算して、無駄が低いほうがよりいいグルーピングです。 このように、全ての製品を対応するグルーピングの中で無駄値が一番低いグルーピングが見つければ、 最適なグルーピングが見つかったことになります。これは最適化の問題で、答えを出す方法の1つが線型計画法です。

線型計画法を分かっている方はちょっとした違和感を覚えるかと思います。 それは、面積を計算するには横幅と製品長さの掛け算になるため、線形計画法の対象となるかが疑わしいからです。 確かに、今のままですと対象ではないため、次回に問題を変換する必要になります。

お知らせ

3月19日開催のアプリ開発講座の参加者募集中!!

3月19日開催のアプリ開発講座の参加者募集中!!

3月19日にアプリ開発講座を開催します!会場は岐阜県美濃加茂市のコワーキングスペース「こやぁね」です。興味のある方は是非ご参加ください!

Read More
可茂IT塾ではFlutterインターンを募集しています!

可茂IT塾ではFlutterインターンを募集しています!

可茂IT塾ではFlutterインターンを募集しています!可茂IT塾のエンジニアの判断で、一定以上のスキルをを習得した方には有給でのインターンも受け入れています。

Read More

関連の記事

タグ

Flutter (70)初心者向け (22)イベント (15)Nextjs (8)Google Apps Script (7)可茂IT塾 (6)Firebase (6)React (5)新卒 (3)就活 (3)給与支払報告書 (3)riverpod (3)Dart (3)JavaScript (3)TypeScript (3)インターン (3)FlutterWeb (2)画像 (2)アプリ開発 (2)React Hooks (2)tailwindcss (2)ワーケーション (2)社会人 (2)大学生 (2)お知らせ (2)webfeed (1)RSS (1)CodeRunner (1)VSCode (1)個人開発 (1)設計 (1)フルリモート (1)学生向け (1)Java (1)Spring Boot (1)エンジニア (1)DeviceOrientation (1)正規表現 (1)神楽 (1)趣味紹介 (1)プログラミングだけではない可茂IT塾のメンバー (1)線型計画法 (1)事例 (1)PreferredSize (1)マテリアルデザイン (1)Material (1)クパチーノデザイン (1)Cupertino (1)ListView (1)就活浪人 (1)既卒 (1)保守性 (1)シェアハウス (1)スクレイピング (1)Gmail (1)Googleグループ (1)GoogleWorkspace (1)ShaderMask (1)google map (1)Google Places API (1)Vercel (1)Google Domains (1)branch (1)Git (1)オンラインオフィス (1)Freezed (1)アイコン (1)Apple Store Connect (1)FlutterGen (1)検索機能 (1)Navigator (1)メール送信 (1)カスタム認証 (1)アニメーション (1)FloatingActionButton (1)Arduino (1)ESP32 (1)経験談 (1)フリーランス (1)Dialog (1)Figma (1)デザイン (1)Slack (1)BI (1)非同期処理 (1)BackdropFilter (1)iOS (1)レビュー (1)getAuth (1)匿名 (1)Algolia (1)chakra-ui (1)コンサルティング (1)Symbol (1)reactive_forms (1)

お知らせ

3月19日開催のアプリ開発講座の参加者募集中!!

3月19日開催のアプリ開発講座の参加者募集中!!

3月19日にアプリ開発講座を開催します!会場は岐阜県美濃加茂市のコワーキングスペース「こやぁね」です。興味のある方は是非ご参加ください!

Read More
可茂IT塾ではFlutterインターンを募集しています!

可茂IT塾ではFlutterインターンを募集しています!

可茂IT塾ではFlutterインターンを募集しています!可茂IT塾のエンジニアの判断で、一定以上のスキルをを習得した方には有給でのインターンも受け入れています。

Read More