[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『材料の切断について』(こまったさん)
お世話になります。
定尺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まではタイプの記号がありその横にそれぞれの切断寸法が入っています。
各月ごとにいろいろな寸法の注文が入ります。
この表から切断するタイプの組み合わせを出したいです。
また、本数計は各月ごとの切断本数の合計が入ります。
切断寸法には切断するカッターの厚みも含まれています。
よろしくお願いします。
他にも探せばあるかと思いますが。
一から作ろうと思うと結構大変だと思います。
(みやほりん)
ご回答ありがとうございます。
早速ソフトを探してみます。
(こまったさん)
こんにちは。
同様なテーマは過去にいくつか出てます。 一定の長さから、長さの違う製品をカットする。必要本数は? http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200906/09060058.txt
ここに提示されているVBAのプログラムで計算されてみてはどうですか。 問題によっては最適解が得られない場合もありますが...
それからブログのネタにさせていただきました。 Excelによる数理散策 http://mathinfo.blog.fc2.com/ その他の解き方も参考になるのではないかと思います。
(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.