[[20160525164130]] 『図の総面積から必要な面積を最適で表示』(ほいみん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『図の総面積から必要な面積を最適で表示』(ほいみん)

 分かり辛くて申し訳ないのですが…。

例えば、本棚をつくる際、材料となる一枚の木材に必要なパーツを書き込み、そこから木材の不足がありそうなら買い足したり、大丈夫そうなら切り出したりしますよね。

その図のデータを用意(元の一枚の縦横の長さと図、必要なパーツの縦横の長さと図)して、Excelに最適な書き込み方を図で表示させることは可能でしょうか?

< 使用 Excel:unknown、使用 OS:Windows10 >


木材、と言っているのが板だとしたら、ロジックはかなり難しいですね。
棒材または延べ板として考えても、最適化するのは大変です。

可能かどうか、という事だけなら、可能です。
貴方に可能かどうか、という事なら、貴方次第です。

マクロにしないまでも、セルの幅と高さを小さくして方眼紙のようにして、
これに罫線や塗りつぶしで必要な部品を並べていってはどうでしょうか?

収まるかな〜?、と思ったときは、シェイプの四角形を配置。
セルの一辺を1cmとか10cmに読み替え、部品サイズに拡大。
これを白い部分に重ねてみて、他の部品と重ならないようレイアウト、とか。
(???) 2016/05/25(水) 17:47


 いわゆる 『カッティングストック問題』ですね。

 『カッティングストック問題』や『裁断 最適化』といったようなワードで検索すると
 いろんな記事が見つかると思います。(学校内にもありますね)

 どの記事を見ても、『できないことはないけど、とても難易度が高い』という印象ですね。
 たとえば『公式』や『普遍的なやり方』が、『ありそうで、実はない』ようで、
 その都度、アルゴリズムをどう 組み立てるかというところに帰着するようです。

(β) 2016/05/25(水) 19:38


ご回答ありがとうございます。返事が遅くなってしまい申し訳ありません。

「いわゆる カッティングストック問題〜」 アドバイスありがとうございます。なるほど…、やはり難易度が高いものなのですね。カッティングストック問題で検索してみましたが、私には難しそうです。しかし、何と検索すればよいか分からず、参考にしたくてもできない状況でしたので、今後はこれらの記事を参考に頑張ってみたいと思います。

「木材と言っているのが板だとしたら〜」 アドバイスありがとうございます。一応部品をエクセル上に表示するところまではやってあったのですが、やはりエクセルに最適化で書き込ませる、という点が難しいのですね。精進します。レイアウトの仕方を参考にさせていただきます。
(ほいみん) 2016/05/26(木) 10:14

まず、長さだけ決める一次元のカッティングストック問題でも、研究論文になるくらいの難易度になる事を頭に置いてください。
しばらく前に、最適でないけれど、そこそこの切断サイズ計算するロジックを書きました。それでも結構難しいです。

今回の場合、縦横共大きい素材に、部品を配置するような事を想定されているので、二次元問題になります。
私でも、さすがにちょいちょいとは作れないかなぁ、と思います。なので、可能そうな案だけ書きますね。
(部品形状が長方形だけに限定して考えます。 斜めや自由形、回転まで考えると、超難易度になりますので…)

2007以降のExcelの場合、横16384*縦1048576のセルが使えます。これを利用し、1セル1mmと仮定すれば、
1.6m * 104.8m までの板を扱えることになります。そこまでの精度は要らないと思うので、1セル1cmとして、
あとは使用セル数を減らせば、高速化になるでしょう。

マクロのロジックですが、Intersect関数でセル範囲同士が重なっているかの判定ができます。
これを判定に利用し、1部品毎にセル範囲で大きさを表現します。
部品は、縦横のサイズから必要なセル数を求め、これを素材サイズ分ループしていき、前の部品と重ならなくなる位置を探します。
見つかった場合、配列にセル範囲を記憶します。まずはこれを部品数分繰り返してはどうでしょうか。

問題点は、部品の順番に並べてしまうので、大大の途中に小を挟むとか、ちょっと縦をずらせば小が入る隙間ができ、もっと詰め込める、というところまで考えていないこと。それでも、大きい部品から順に並べれば、そこそこの配置にはなると思います。

ここまでコーディングできたならば、次は部品を置く場所を総当たりで試していくロジックに進めば良いでしょう。
(???) 2016/05/26(木) 10:45


ご回答ありがとうございます。返事が遅れてしまい申し訳ありません。

あれからHP等を参考にしながら自分でも試してみましたが、案の定難しくて行き詰まっていました。
非常に分かり易い具体例を出して頂き有難いです。ご回答を参考に、できるところまで進めてみようと思います。
(ほいみん) 2016/05/27(金) 15:35


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.