創作意欲とか物欲とか、そういう類のものスマートフォン用の表示で見る創作意欲とか物欲とか、そういう類のもの2019-05-28DIYで使う木材を無駄なく買いたい話—ビンパッキング問題で材料カットの組合せを最適化—DIYさて、「段取り八分、仕事二分」という言葉がありますが、とくに時間的に限られたリソースをうまく回さなければならない週末DIYerとしては、つねに「段取り十分、仕事外注」くらいの勢いでやっていきたいところです。(外注したらDIYじゃないとか、細かいことは気にせず)図はイメージですそんなわけで今日は、DIYで木材(SPF材とか)を使うときに、材料をムダなく買ってムダなく使うための上級呪文を紹介したいと思います。そんな時、この記事がその助けになるでしょう。実行結果まとめ定尺の木材、SPF材について本題に入る前に、主要登場品目の紹介をしておきましょう。ここで言うSPFってのは、日焼け止めの強さのことじゃなくて、「ツーバイフォー工法」に使われる建材用の木材のことです。どこのホームセンターでもほとんど必ず置いてあって、流通が多くて安いので、この規格サイズの組み合わせで設計すれば、材料費をけっこう安く抑えることができます。nodoame.netちなみに僕は、ワンバイフォーを使うことが多いです。"仕事外注"(ホームセンター最高)さてさて、ワンバイフォーを使うていで本棚の設計ができたとします。続く工程で面倒なのがカットです。本棚を作るときは部材の直角・直線が命ですが、手鋸で直線をビシッと決めるのはなかなか大変だし、なによりあんまり楽しくないです。そこで活用したいのがホームセンターの加工サービス。木材を買って簡単な図を描いて渡すだけで、1カット数十円でサクッと精度よく切ってくれるので、うまく使えば自前の工具がドライバー1本でも、大抵のものは作れてしまうでしょう。"段取り十分"(材料カットの最適化)こっちが本題です。加工はホームセンターに任せるとして、材料が何本いるかとか、カットの割り振りは自分で決めないといけません。部材が多いほど難しくめんどくさくなっていきます。その悩みを解決してくれそうなのが「ビンパッキング問題」です。いうジャンルだそうです、世の中にはいろんな学問があるんだなぁ。名前がかっこいいので少し調べてみましたが、正直全然わかりませんでした。今回は数学世界の探求が目的ってわけじゃないので、使えればよしとします。ビンパッキング問題を解く強力な呪文「Ortoolpy」というわけで、難しいところの理解はすっ飛ばして、ラクして簡単にビンパッキング問題を解く方法が知りたい。そんな堕落したモチベーションをもってGoogle先生に教えを請うたところ、そんな僕にぴったりの、組み合わせ最適化をカンタンに解くためのPythonライブラリを授けてくれました!(厳密にはライブラリではないのかな?)pypi.org前置きがだいぶ長くなりましたが、こちらが今日の主役「Ortoolpy」です。ここからはもう、サクッとツールを使って、バババッと答えを出していきましょう。Worldできる程度の知識があれば読み解けると思います。)www.google.co.jportoolpyのインストールOrtoolpyのインストールはこのコマンドで一発です。見ての通り、binpacking(入れ物の大きさ,荷物のリスト)とやるだけです。超簡単ですね、やりたい事があっけなくできてしまいました。おしまいではあまりにあっけないので、ついでに結果をソートしたりとか、金額の見積もりなんかを追加してみました。あと、リストの並び順によって結果の精度が少し変わるようなので、リストをシャッフルしながら数回繰り返して、一番材料が少なくすむ組み合わせを採用するようにしてみます。5回にしてみました、部材の数が多いので少しだけ結果にブレがありますね。その中から狙い通り、材料をより少なくできる組み合わせを選べているようです。端材:11mmまとめカットのスケジュールと見積もりって実際かなり面倒なので、これはめちゃめちゃ便利です、捗ります。最近はワンバイフォーでこんな棚を作りました、材料費はビスとかダボとか含めて7千円くらい。室内の妙な出っ張りに合わせた設計ちなみに、SPFは無垢材なので、塗装して仕上げたほうが耐久性が上がります。この棚はその後「ビネガーステイン」っていう、ビンテージ風に仕上がる塗装で仕上げたので、その話も今度書こうと思います。はてなブログPro物作りやガジェットの事を書いていきます。(1)検索スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。