[[20120410160047]] 『材料の切断について』(こまったさん) ページの最後に飛ぶ

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

 

『材料の切断について』(こまったさん)
Excel2010
Windows 7

お世話になります。

定尺5.5mのアルミ鋼材を注文寸法に対し出来るだけ材料に無駄が出ないように切断したいのですが、その組み合わせ方を出せないでしょうか?

切断タイプはAからADまで30タイプあります。
注文はひと月ごとにまとめています。
切断工程は1か月分だけの時や2か月分まとめて切断する時もあります。
まとめての切断は最大でも3か月分です。

タイプ 切断寸法 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
A     780   1 2 4 4 2   4   6    1  2
B     830   3   1 2   4 2 4 5 1
C     880   2 1 2 4 2 1 2 1 2 3  5  2
D     980   3 3   3   3 1 2   4  4  2
E    1,080     3 3 1 4 4 2 4 3 2  8  2
F    1,180   2   4     5
G    1,280   2 2   3 5     4   4  4  3    
H    1,380       6     6   6   6     6 
I    1,480       3   4   4   5    4
J    1,580       3
K    1,680               5     5
L    1,780             5          5
M    1,880     3
N    2,080             3   4
O    2,280                        1
P    2,480     3 3
Q    2,680
R    2,880
S    1,840
T    2,040
U    2,240
V    2,440       3     3   4
W    2,640     1              2   3
X    2,840       2   3 
Y    2,010
Z    2,210
AA    2,410
AB    2,610       3   3
AC    2,810
AD    3,010
本数計

A1セルにタイプがありB1は切断寸法C1からN1は月入っています。
A2からA30まではタイプの記号がありその横にそれぞれの切断寸法が入っています。
各月ごとにいろいろな寸法の注文が入ります。
この表から切断するタイプの組み合わせを出したいです。
また、本数計は各月ごとの切断本数の合計が入ります。
切断寸法には切断するカッターの厚みも含まれています。
 
よろしくお願いします。


[[20081224065339]] 『組合わせ計算の関数?』

他にも探せばあるかと思いますが。
一から作ろうと思うと結構大変だと思います。
(みやほりん)


みやほりんさん

ご回答ありがとうございます。

早速ソフトを探してみます。

(こまったさん)


 こんにちは。

 同様なテーマは過去にいくつか出てます。
 一定の長さから、長さの違う製品をカットする。必要本数は?
 http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200906/09060058.txt

 ここに提示されているVBAのプログラムで計算されてみてはどうですか。
 問題によっては最適解が得られない場合もありますが...

 それからブログのネタにさせていただきました。
 Excelによる数理散策
 http://mathinfo.blog.fc2.com/
 その他の解き方も参考になるのではないかと思います。

 (varum)

varumさん

いろいろ提案していただきありがとうございます。

参考にさせていただきます。

(こまったさん)


お世話になります。

http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200906/09060058.txt

ここにありましたコードを試してみたのですが、エラーが出てしまい結果が得られませんでした・・・

まったく知識がないのでエラーの原因もわかりません(^_^;)

Sub Try1()

  Dim cons As Long 
  Dim c As Range 
  Dim r As Range 
  Dim j As Long 
  Dim ok As Boolean 

  With ActiveSheet 
  '[A2]に定尺 
      cons = .[A2].Value 
      .ChartObjects.Delete 
      .[D1].CurrentRegion.ClearContents 

  '[B2]以下に 切り出し製品リスト 
      Set r = Excel.Range(.[B2], .[B65536].End(xlUp)) 

  '[D1]に 定尺 を用意して 
      Dim usCount As Long 
      usCount = 1 
      .[D1].Item(1, usCount).Value = cons 

  'B列製品リスト範囲の上から順に 切り出していく 
      For Each c In r 
          If c.ID = "" Then 
              ok = False 
              Do 
                  For j = 1 To usCount 
                      With [D1].Item(1, j) 
                          If .Value >= c.Value Then 
                              .Value = .Value - c.Value 
                              Cells(Rows.Count, .Column).End(xlUp).Offset(1).Value = c.Value 
                              c.ID = "ok" 
                              ok = True 
                              Exit For 
                          End If 
                      End With 
                  Next 
                  If Not ok Then 
                      usCount = usCount + 1 'もう1本 定尺追加 
                      [D1].Item(1, usCount).Value = cons 
                  End If 
              Loop Until ok 
          End If 
      Next 

      Set c = .[D10].Resize(15, 7) 
      Set r = .[D1].CurrentRegion 
      With .ChartObjects.Add( _ 
                  c.Left, c.Top, c.Width, c.Height).Chart 
          .ChartType = xlColumnStacked 
          .SetSourceData r, PlotBy:=xlRows 
          .HasLegend = False 
      End With 
  End With 

End Sub

このコードの

Sub Try1()

  Dim cons As Long 
  Dim c As Range 
  Dim r As Range 
  Dim j As Long 
  Dim ok As Boolean 

  With ActiveSheet 
  '[A2]に定尺 
      cons = .[A2].Value 
      .ChartObjects.Delete ←

矢印のところがエラーとなります。

(こまったさん)


 こんにちは〜

 >       .ChartObjects.Delete ←
 >  矢印のところがエラーとなります。

 Excel2010 ではエラー、Excel2003までならOK.
 とりあえず、
    On Error Resume Next
   .ChartObjects.Delete '  シート内のグラフを削除
    On error goto 0
で逃げてください。
  (kanabun)


こんばんは

早速回答いただきありがとうございます。

.ChartObjects.Delete を

On Error Resume Next

   .ChartObjects.Delete '  シート内のグラフを削除
    On error goto 0
に置き換えて実行すると結果が得られました。

ありがとうございます。

(こまったさん)


 こんばんは。

 先ほど帰宅して初めて見たものでエラーの件も知りませんでした。
 でもプログラムの作者からのアドバイスで解決したようでよかったですね。 
 この種の市販ソフトの解の精度はよくないものが多いので、kanabunさん
 のプログラムを紹介した次第です。
 日常業務でこの種の計算をよくされるようですが、これを最適に解く
 ことは相当難しいです。規模が小さい場合は別ですが...
 この問題はカッティング・ストック問題と呼ばれており、これと同等な
 ものにビン・パッキング問題があります。
 当方のブログではこれらの話題を中心にあれこれのっけてますので
 興味をもたれたら覗いてみてください。

 (varum)
 (varum)さん (kanabun)さん

この度はいろいろご指導いただきありがとうございました。

業務でエクセルを使うことがあるのですが、まったくの初心者で毎回頭を痛めています。

今回紹介していただいたプログラムで求めたい値を得ることができ、より効率よく活用できるように頑張ってみます。

また、カッティング・ストック問題やビン・パッキング問題ということも初めて知りました。

私のレベルではまったく理解できませんがこれからの課題として勉強していきます。

ブログもゆっくり拝見させていただきます。

今後もご指導お願いいたします。

(こまったさん)


コメント返信:

[ 一覧(最新更新順) ]


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