JP2010266991A - 部材取りシステム及び部材取りプログラム - Google Patents
部材取りシステム及び部材取りプログラム Download PDFInfo
- Publication number
- JP2010266991A JP2010266991A JP2009116456A JP2009116456A JP2010266991A JP 2010266991 A JP2010266991 A JP 2010266991A JP 2009116456 A JP2009116456 A JP 2009116456A JP 2009116456 A JP2009116456 A JP 2009116456A JP 2010266991 A JP2010266991 A JP 2010266991A
- Authority
- JP
- Japan
- Prior art keywords
- list
- class
- solution
- search
- cut
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 324
- 239000002994 raw material Substances 0.000 claims abstract description 227
- 238000004364 calculation method Methods 0.000 claims abstract description 41
- 230000037431 insertion Effects 0.000 claims description 199
- 238000003780 insertion Methods 0.000 claims description 192
- 238000005520 cutting process Methods 0.000 claims description 151
- 230000008569 process Effects 0.000 claims description 141
- 238000012545 processing Methods 0.000 claims description 105
- 239000000463 material Substances 0.000 claims description 86
- 238000012790 confirmation Methods 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims 1
- 239000002699 waste material Substances 0.000 abstract 1
- 238000003860 storage Methods 0.000 description 13
- 239000004149 tartrazine Substances 0.000 description 8
- 210000003128 head Anatomy 0.000 description 7
- 238000002360 preparation method Methods 0.000 description 7
- 239000002151 riboflavin Substances 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 230000009467 reduction Effects 0.000 description 6
- 230000001186 cumulative effect Effects 0.000 description 4
- 230000005764 inhibitory process Effects 0.000 description 4
- 239000013589 supplement Substances 0.000 description 4
- 108700028516 Lan-7 Proteins 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000012856 packing Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 102000020897 Formins Human genes 0.000 description 1
- 108091022623 Formins Proteins 0.000 description 1
- 241000258937 Hemiptera Species 0.000 description 1
- 229910000831 Steel Inorganic materials 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- ZPUCINDJVBIVPJ-LJISPDSOSA-N cocaine Chemical compound O([C@H]1C[C@@H]2CC[C@@H](N2C)[C@H]1C(=O)OC)C(=O)C1=CC=CC=C1 ZPUCINDJVBIVPJ-LJISPDSOSA-N 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 239000010959 steel Substances 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Images
Abstract
【解決手段】部材取りシステム(部材取りプログラム)は、所定のクラスに属するカットパターンから余分な部材を出さないカットパターンを探索し(I101)、当該カットパターンを[当該クラス番号,カットパターン特定番号]のフィールドを備えた探索ノードによって特定するか(I102)、又は、当該カットパターン不存在を[当該クラス番号,カットパターン不存在表示]のフィールドを備えた探索ノードによって特定し(I106)、当該探索ノードを探索リストに追加して(I107)探索リストを作成する前方探索手段(前方探索手順)を備える。
【選択図】図11
Description
更に、特許文献1、2に開示された技術は、多種類の複数原資材から複数部材と切り出す技術とは異なる。
原資材から[部材(例えば、部材長さが挙げられるが、これに限定されるものではなく、部材を特定できるものであればよい、以下同じ),必要本数]のフィールドを備えた部材リスト(長部材リスト、短部材リストを含む)に記憶された当該各[部材,必要本数]の部材(長部材、短部材を含む)を切り出すのに用いられるカットパターンを演算するシステム(プログラム)であって、
[原資材(例えば、原資材長さが挙げられるが、これに限定されるものではなく、原資材を特定できるものであればよい、以下同じ),切り方]のフィールドを備えたカットパターンからなるカットパターンリストを作成するカットパターンリスト作成手段(手順)(C100)と、
前記各カットパターンをクラスに分類するカットパターン分類手段(手順)(D100)と、
所定のクラスに属するカットパターンの中から余分な部材を出さないカットパターンを探索し(I101)、当該カットパターンを[当該クラス番号,カットパターン特定番号]のフィールドを備えた探索ノードによって特定するか(I102)、又は、当該カットパターン不存在を[当該クラス番号,カットパターン不存在表示]のフィールドを備えた探索ノードによって特定し(I106)、当該探索ノードを探索リストに追加して探索リストを作成する(I107)前方探索手段(手順)(H102、H114、H109)とを備えたことを要旨とする。
この場合に、前記カットパターンリスト作成手段(手順)は、
(a1)切り方フィールドは、部材が長さの降順に並んだものである、
(a2)原資材フィールドは、切り方フィールドの部材を全て足し合わせたものに対して最も破材長さが短くなる原資材である、
という条件(C102)を満たすカットパターンを全て作成し、それらを切り方フィールドをキーとして長さにおける辞書式順序の降順(長い方から短い方を意味する)に並べたカットパターンリストを作成するものであることが望ましい(C103)。
また前記カットパターン分類手段(手順)は、そのカットパターンリストの第1行目から順にカットパターンを取り出し、
(b1)取り出した分類すべきカットパターンの原資材フィールド及び切り方フィールドの代表長さが既分類のカットパターンのものと同一である、
(b2)取り出した分類すべきカットパターンの切り方フィールドの部材の数が既分類のカットパターンのものと同一又はこれよりも少ない、
という条件(D103)を全て満たす場合にはその既存クラスに分類し(D104)、存在しなければ新たなクラスを作成してそこに分類する(D106)ものであることが望ましい。
また、前記前方探索手段(手順)における「余分な部材を出さないカットパターン」とは、
(c1)あるクラス番号に分類されているカットパターン[原資材長さ,切り方]を適用したときに部材リストの必要本数を超えて部材を切り出さないそのようなカットパターン[原資材長さ,切り方]、
(c2)カットパターン[原資材長さ,切り方]中の各切り方の各本数が部材リストの当該長さの各必要本数以下であるそのようなカットパターン[原資材長さ,切り方]、
(c3)カットパターンに従って(原資材から)部材を切り出したときに、部材リストの必要本数を超えて不要な部材や余分な部材を切り出さないそのようなカットパターン[原資材長さ,切り方]を意味する。
そして、前記前方探索手段(手順)は、所定のクラスに属する余分な部材を出さないカットパターンの中から最も破材長さの短いカットパターンを一つ選択するものであることが望ましい。
更に、前記前方探索手段(手順)は、前記部材リストの必要本数が0超の最長部材が属するクラスのうち先頭クラスから優先的に探索するものであることが望ましい(H113→H114、H107→H108→H109)。この場合に、前記前方探索手段(手順)は、前記最長部材が属するクラスに属するカットパターンのうち先頭カットパターンから優先的に探索するものであることが望ましい(I102)。
この場合に、前記最適解計算手段(手順)は、前記長部材リストに対して近似解法(例えば、グリーディ法)によって求めた初期解(F104)で要するコスト未満の場合(H110:YES)に前記全探索ノードによって特定される[原資材,切り方]を最適解とし(H111)、そのコスト以上の場合に前記初期解を当該最適解とする(F104)ことが望ましい。
得られた最適解のうち、最長部材を用い、かつ、破材長さが基準値以下である解(L103)を確定解とする第一確定手段(手順)と、
前記第一確定解を削減した長部材リスト及び短部材リストを結合することにより、部材リストを作成し(L101)、再度、当該部材リストについて前記分割手段(手順)による分割処理を行い(行わせ)、前回の分割ポイントと、新たな分割ポイントとが合致する場合に真の分割ポイントとする(A110)分割ポイント確定手段(手順)とを備えることが望ましく、更に、
前記分割ポイント確定手段(手順)による処理によって、真の分割ポイントが確定した場合には、得られた最適解のうち最長部材以外の部材を用いているもの、又は、破材長さが基準値超のものを前記確定解に追加する(M103)第二確定手段(手順)と、
切り方が決まっていない短部材を挿入パターン化(N101)して当該確定解に挿入する(N113)第二短部材挿入手段(手順)と、
切り方が決まっていない短部材を近似解法(グリーディ法)に基づいて挿入パターン化し(P103)、当該確定解に挿入(P113)又は追加(P116)して最終確定解を得る最終短部材挿入手段(手順)とを備えることが望ましく、更に、
前記最終確定解を切断機に送信する確定解送信手段(手順)と、
前記最終確定解に基づいて原資材から所定長さの部材を切断する切断手段(手順)とを備えることが望ましい。
(部材取りシステム1)
図1は部材取りシステム1のハードウエア・ソフトウエア構成を概略的に示すシステム構成図である。同図において、部材取りシステム1は、原資材リストMLに登録・記憶されている多種類の複数原資材から、部材リストCLに登録・記憶されている長さの異なる種々の部材を必要本数切り出す場合に、使用する原資材の総コスト又は発生する破材長さを抑える切断方法を求め、複数原資材から種々の部材を必要本数切り出すシステムである。
記憶部2aは、ROMやRAM、上記の原資材DB3、部材DB4によって構成され、原資材DB3には原資材リストMLが記憶され、部材DB4には部材リストCLが記憶される。また、記憶部2aは、部材取りプログラムPGその他の各種プログラムを記憶するほか、部材取りプログラムPGの実行に際して使用する、各種パラメータとして、
(1)原資材DB3及び原資材リストMLのファイル名・パス名、
(2)部材DB4及び部材リストCLのファイル名・パス名、
(3)建築図面KZ(建築図面データベース9(以下単に「建築図面DB9」という)に記憶される)のファイル名・パス名、
(4)鋸厚TH(鋸厚とは、原資材の切断に用いる「鋸の厚さ」をいう、以下同じ)、
(5)端切長HL(端切長とは、原資材の端から一定の長さが切断されるその長さをいう、以下同じ)、
(6)コスト破材選択フラグFL(コスト破材選択フラグとは、部材取りプログラムPGの実行によって抑える対象をコストにするのか破材にするのかを選択するフラグをいう、以下同じ))、を記憶する。
原資材リストMLの原資材長さとしては、原資材DB3に格納されている各原資材長さから端切長HLを引いたものが登録・記憶される。
原資材リストMLの原資材コストとしては、使用する原資材の総コストが最小化される場合(コスト破材選択フラグFLがコストを示す場合)は、各原資材コストが登録・記憶され、発生する破材が最小化される場合(コスト破材選択フラグFLが破材を示す場合)には各原資材長さが登録・記憶される。
鋸厚THは、部材取りシステム1を機能させるための基本的なパラメータの一つとして入力される値であり、切断部6cに設けられる鋸の厚さを示す。鋸厚THは、部材リストCLの作成時において必要とされる部材長さに自動的に加算される。
コスト破材選択フラグFLは、部材取りシステム1を機能させるための基本的なパラメータの一つとして指定される値であり、最小化の対象が原資材コストか破材長さかを示す。
モニタ画面2dは、原資材DB3のファイル名・パス名、建築図面KZのファイル名・パス名、鋸厚TH、端切長HL、コスト破材選択フラグFLの値入力を促す入力ボックスや、原資材リストMLや部材リストCLの一覧・演算結果を表示する。
本発明の一実施形態に係る部材取りシステム1の動作及び部材取りプログラムPGの処理手順について、図2に示すパラメータ・リスト・手続・関数及び図3〜図18に示すフローチャート等を参照して説明する。尚、その処理手順は、制御部2bが記憶部2aに記憶された部材取りプログラムPG(メインプログラムA100等)を読み出して実行することにより実現され、これにより、コンピュータ等を部材取りシステム1として機能させ、動作させる。また、本実施形態は、最適解法(図10参照)と近似解法(図8、図13〜図18等参照)とを組み合わせた新規なアルゴリズムであり、効率的に演算を行いながら、使用する原資材の総コスト及び/又は発生する破材長さの抑制を実現する。
第一の実施形態に係るメインプログラムA100は、
(A1)部材リストを長部材と短部材に分割する(A103)→
(A2-1)長部材リストに対してカットパターンリストを作成し、クラス分けをする(A103)→
(A2-2)カットパターンリストに分枝限定法を適用し、部分最適解を求める(A106)→
(A2-3)短部材を1本ずつ、既定の条件を満たす場合に限り(A2-2)の解に挿入する(A107)→
(A3)ここまでで得られている解の中から確定パターン(例えば、最長原資材を使用し、かつ、破材長さが原資材長さの1%以下になっているもの)のみを保存し、この確定パターンで切り出されることが決定された部材はその分だけ部材リストから減少させる(A108)→
(A4)再び部材リストの分割を行うが(A3)の実行により部材リストが縮小し、長部材の範囲が増える場合があるため、その場合は(A2-1)に戻って繰り返す(A104〜A110)→
(A5)短部材を何本かまとめて、既定の条件を満たす場合に限り(A4)の解に挿入する(A112)→
(A6)最後に残った短部材を、(A5)の解にうまく挿入する(A113)という手順による。
A101においては、初期設定画面(図示省略)が表示される。初期設定画面においては、原資材DB3及び原資材リストMLのファイル名・パス名、部材DB4及び部材リストCLのファイル名・パス名、建築図面KZのファイル名・パス名、鋸厚TH、端切長HL、コスト破材選択フラグFLを設定するための入力ボックス(図示省略)が表示され、オペレータによってこれらのパラメータが入力される。入力された各パラメータは、記憶部2aに登録・記憶される。そして、A101においては、上記のユーザ入力に基づいて、原資材リストML、部材リストCLが認識され、あるいは、作成される。原資材リストML及び部材リストCLの一例は、上記表1、表2の通りである。
表2に示す部材リストCLは、建築図面KZに基づいて、[部材長さ,必要本数]というフィールドを備えたリスト形式で登録・記憶される。ここで、「部材長さ」は、「実際に必要な部材長さに鋸厚THを加えた値」が登録・記憶されたものである。
A102においては、部材取りプログラムPGの実行過程に得られる一応の結果や、最終的に得られる結果を格納するリストとしてSolutionが生成される。
Solutionは、[原資材長さ,切り方]、すなわち、(m,P)=(m,(l1,l2,l3,…,ln))で表されるフィールドを備えたカットパターンによって構成される。尚、「切り方」とは、少なくとも1の切断長さを含む切断長さの集まりである。A102の処理が終わると、A103の処理に進む。
A103においては、部材リスト分割プログラムB100が呼び出され、その実行により、分割ポイント(B101〜B106のループ脱出条件を満たすp、本プログラムでは、部材リストCLの第p行目以降が短部材となる)が求められ(B105)、部材リストCLの第1行目〜第(p-1)行目の長部材からなる長部材リストCLLと、部材リストCLの第p行目〜第size(CL)行目の短部材からなる短部材リストCLSとが作成される(B107)。長部材リストCLL及び短部材リストCLSは、部材リストCLと同様に、[部材長さ,必要本数]のフィールドを備える。
そして、長部材リストCLLからカットパターンリストPLが作成され(B108)、B108で作成されたカットパターンリストPLを構成する各カットパターン(m,P)がクラス分けされ、分類後のカットパターンリストClassが作成される(B109)。以下にこれらの処理について詳細に説明する。
B101においては、ループ脱出条件を判断するためにパラメータpが採用される。ここで、パラメータpは、分割ポイント(B105)を意味する他、「部材リストCLの第何行目までを対象として、B103におけるカットパターンを作成するかを示す値であり、第1行目を初期値としてB106を介してB101に戻る毎に1ずつインクリメントされ、部材リストCLの行数が上限となる」パラメータである。
B102においては、長部材を格納する長部材リストCLLと、短部材を格納する短部材リストCLSとが生成される。すなわち、B102においては、パラメータi(=1〜p)の値に応じて、部材リストCLの第1行目〜第p行目までを対象とする長部材リストCLLが作成され(push(CLL,CL[i]))、部材リストCLの第(p+1)行目〜部材リストCLの最終行目(第size(CL)行目)までを対象とする短部材リストCLSが作成される(push(CLS,CL[i]))。
B103においては、カットパターンリスト作成プログラムC100が呼び出され、原資材リストMLと長部材リストCLLに基づいて可能な切り方が列挙されたカットパターン(m,P)が作成され(C102)、ソートされたカットパターンリストPLが作成される(C103)。
C101においては、カットパターンを格納するためのリストとして、カットパターンリストPLが生成される。カットパターンリストPLは、[原資材長さ,切り方]=(m,P)=(m,(l1,…,ln))のフィールドを備えたリストである。
C102においては、長さmの原資材から、「C102の条件」を満たすようにカットパターン(m,P)が生成され、カットパターンリストPLに格納される。尚、カットパターン(m,P)は、部材リストCLに含まれる少なくとも1の部材を1本用いたあらゆる組み合わせ、すなわち、部材リストCLの第1行目〜第p行目までのいずれかを使用して生成された少なくとも1本の切り方を含むものであればよい。「C102の条件」は、カットパターン(m,P)の生成毎又はその生成後のタイミングで判断される。「C102の条件」は次の通りである。
(C102の条件1)「m=suite(sum(P))」とは、C102で生成されるカットパターン(m,P)を構成する各切り方P(=l1,…,ln)を加算した値(=l1+…+ln)以上の最短長さの原資材長さがカットパターン(m,P)の原資材長さmと等しいことを要することを意味する。この判断により、切り方を加算してそれよりも長い最短の原資材があることがわかり、コストや破材長さを抑えることができる。
表2の場合には、size(CL)が19であるから、p=1〜19の値をとりうる。ここで、「p=1〜19の値をとりうる」との表現をしたのは、部材リスト分割プログラムB100は、後述するB105において、そのパラメータpを用いて分割ポイントpが設定されるが、これは、p=size(CL)まで到達しないうちに、部材リストCLの分割ポイントpが設定され、ループを脱出して(B105:≧)、次のB107に進むからである。
表3は、B103の処理によって作成されるカットパターンリストPLの一例(p=14の場合)を示す。その後、B104の処理に進む。
B104においては、カットパターンリスト分類プログラムD100が呼び出され、カットパターンリストPLを構成する類似するカットパターン同士が後述する「D103の条件」により、同一クラスに分類される。分類後のものを「カットパターンリストClass」、単に「Class」ともいう。
D101においては、各カットパターン(m,P)が分類されるClass番号(表4参照)を示すパラメータcnに0が代入される。
D102〜D105のループ処理においては、カットパターンリストPLを構成する全行の[原資材長さ,切り方]=(m,P(l1,…,ln))について、第1行目から順番に「D103の条件」が判断され、その判断結果に基づいて分類分けがなされる(D103〜D104,D106)。「D103の条件」は、以下の通りである。
「P=(l1,…,ln),Class[i][1]=(m',(l'1,…,l'n'))としたとき」のうち、「P=(l1,…,ln)」は、B103で作成したカットパターンリストPLの各行のカットパターン(m,P)のうち処理対象となるまさに分類しようとするカットパターン(m,P)の切り方Pを示す。また、「Class[i][1]=(m',(l'1,…,l'n')」は、D102〜D105のループ処理で作成された(ただし、最初にD103を行う場合にはClass[i][1]は未だない)、分類後のカットパターンリストClass(表4参照)のうち、Class[i]の第1行目の行、すなわち、Class[i]の代表カットパターン(m',P')を示し、「l'1」は、Class[i]の代表長さを示す(表4参照)。
従って、m=m'である場合には、他の「D103の条件」を満たすことで、該当する既存Classに新たな行が追加され、既存Classに分類される(D104)。一方、すべての既存クラスにおいてm≠m'である場合には、新たなClassが生成され、その生成されたClassの第1行目に行が代表カットパターンとして追加される(D105)。
換言すれば、「n≦n'」は、既存Class[i]に新たな行を追加する場合には、切り方Pを構成する本数が既存Classの代表カットパターンの切り方P'を構成する本数以下であることを要すること、逆に言えば、切り方Pを構成する本数が代表カットパターンの切り方P'を構成する本数より多いようなClassしか存在しない場合には、新たなClassが生成されることを意味する。「n≦n'」の条件を導入したのは、出力結果の最適性を保証しつつ探索範囲を限定し、演算効率を高めるためである。
換言すれば、「l1=l'1」は、既存Class[i]に新たな行を追加する場合には、追加される切り方Pの代表長さl1がClass[i]の代表カットパターンの切り方P'の代表長さと同じことを要すること、逆に言えば、切り方Pの代表長さが代表カットパターンの切り方P'の代表長さと異なるようなClassしか存在しない場合には、新たなClassが生成されることを意味する。「l1=l'1」の条件を導入したのは、切り方の代表長さの長いカットパターンを優先的に探索することで、演算効率を高めるためである。
また、「D103の条件」を一つでも満たさないと判断された場合には(D103:NO)、D106に進み、クラス番号を示すカウンタcnがインクリメントされるとともに、新たな「分類後のカットパターンクラスClass[cn]」が生成され、そこに、分類対象となっているカットパターン(m,P)が新たなClassの代表カットパターンとして追加される。その後、D105に進み、カットパターンリストPLの全行についてクラス分類が終了するまで、D102の処理に戻って、D102〜D105のループ処理が行われる。
表4は、B104の処理によって作成される分類後のカットパターンリストClassの一例(p=14の場合)を示す。その後、B105の処理に進む。
B105においては、「ある種類数(1又は2以上の種類数)のクラスを用いてある長さの部材を必要本数切り出す」のに何通りあるかが重複組合せの理論によって求められ(部材リスト分割プログラムB100においては、#(p)Hrpのように示す記号が重複組み合わせの記号)、これを、必要な各部材毎に求め、各部材毎の重複組み合わせの数を全て掛け合わせたもの(#(1)Hr1×#(2)Hr2,…(,×#(k)Hrk×,)…,×#(p)Hrp)が、切り出し方の総数(=treesize(p,Class))として求められ、その総数が所定の閾値以上か否かが判断される(B105)。ここで、treesize(p,Class)は後述する最適解探索プログラムH100における全探索のサイズを見積もるための概算値を意味しており、「所定の閾値」とは、現実的な時間内で探索が可能な限界サイズを示す。「所定の閾値」は、1014〜1016の範囲が望ましく、B105では1015としたが、計算機の性能に応じて調整すればよい。
表6は、表5に示す長部材リストCLLについて、B108において作成されるカットパターンリストPLを示す。尚、表6作成時のパラメータp値は、表3作成時のパラメータp値と異なるが、表6は表3と同一である。これは、B104においては部材リストCLの第1行目〜第p行目が、B107においては部材リストCLの第1行目〜第(p-1)行目が、それぞれ、長部材リストCLLに格納されるためである。
(B105:分割ポイント判定処理の詳細)
B105において用いるtreesize(p,Class)について説明する。パラメータpは、B101におけるパラメータpと同義であるが、確認すると、部材クラスCLの第1行目〜第p行目(すなわち、長部材リストCLLに格納された方)が処理対象であることを示す。そして、分類後のカットパターンリストClassとしては、直近のB104で作成されたものが用いられる。
ここで,1≦k≦pについて(lk, rk) = CL[k]とすると,
rk = 0のとき
#(k) = 1
rk > 0のとき
#(k) = tk - hk + 1
ここで,(hk, tk) = range(lk, Class)」について説明する。
B105において所定の閾値以上であると判断された後(B105:≧)、B107においては、その時点でのp値ではtreesize(p,Class)が所定の閾値を超えてしまうので、再度、長部材リストCLL及び短部材リストCLSが作成し直される。このため、部材リストCLの第1行目〜第(p-1)行目が長部材リストCLLとして作成(すなわち、コピー)され、部材リストCLの第p行目〜第size(CL)行目が短部材リストCLSとして作成(すなわち、コピー)される。
表2の部材リストCLについて、部材リスト分割プログラムB100をpを1からインクリメントさせながら実行させると、B101〜B106のループ処理において、p=14の場合には、ループ脱出条件を満たすまでの一過程として、B103において表3のカットパターンリストPLが作成されるとともに、B104において表4の分類後のカットパターンリストClassが作成される。しかしながら、p=14の場合には、B105におけるループ脱出条件が満たさない。
そして、部材リストCLの第1行目〜第14行目が長部材リストCLLとして作成(コピー)され、部材リストCLの第15行目〜第19行目が短部材リストCLSとして作成(コピー)される(B107)。
B108においては、カットパターンリスト作成プログラムC100が呼び出され、分割ポイント(p=15)で分割した長部材リストCLL(本実施形態では、部材リストCLの第1行目〜第14行目)について、カットパターンリストPLが再度生成される。その詳細は、B103における説明と同様であるため、その説明をもってこれに代える。
B109においては、カットパターンリスト分類プログラムD100が呼び出され、分割ポイント(p=15)で分割した長部材リストCLL(本実施形態では、部材リストCLの第1行目〜第14行目)について、B108で作成されたカットパターンリストPLの各行が再度分類される。その詳細は、B104における説明と同様であるため、その説明をもってこれに代える。
B109の処理が終わると、A104〜A110のループ処理に進む。A104及びA105においては、パラメータの初期設定が行われる。A105においては、A103で分割ポイントとされたパラメータpの値がパラメータp'にマーキングされる。後述するA109においても部材リスト分割処理がなされるが、そこで求められる新たな分割ポイントの基準となるパラメータpの値と比較し、同一値である場合に真の分割ポイントとして確定させ、A104〜A110のループ処理を脱出させるためである。
A106においては、部分最適解計算部プログラムE100が呼び出され、その実行により、長部材リストCLLの各長部材を必要本数切り出す部分的な最適解として[原資材長さ,切り方]のフィールドを備えた最適解Resultが求められる。尚、ここで、部分最適解という名称を用いているのは、A106が近似解法(E101)と最適解法(E102)とを組み合わせたものであり、しかも、部材リストCLの一部について最適解法を適用しているためである。更に詳しく述べれば、部分最適解計算処理は、グリーディ法を応用したE101の初期解生成処理(近似解法)、分枝限定法を応用したE102の最適解探索処理(最適解法)から構成され、E101の初期解生成処理により一応の目安としての初期解(Result)が求められ、その上で、E102の最適解探索処理により最適解(Result)が求められる。これら両者をResultとしているのは、初期解よりも破材長さが少ない、コスト安であるという条件を満たした場合には、E102で求めた最適解が初期解に上書きされてResultとされるが、そのような条件を満たさない場合には、E101の初期解がResultとされるためである。
E101の初期解生成処理においては、初期解生成プログラムF100が呼び出され、その実行により、原資材リストMLと長部材リストCLLから初期解([原資材長さ,切り方]のフィールドを備えたカットパターンリスト)が求められ、Resultに格納される。ここでは、グリーディ法を応用して長部材リストCLLに対する近似解が高速に求められる。
F103においては、グリーディ法プログラムG100が呼び出され、グリーディ法を用いて、できるだけ原資材の余りが少なく、かつ、単位長さ当たりのコストが安くなるようにカットパターン(m,P)=[原資材長さ,切り方]が求められる。
そして、G103においては、当該原資材長さmを用いた場合における「G103の条件」を満たす切り方P(=l1,…,ln)が求められる。ここで、「G103の条件」は以下の通りである。
以下の(1)、(2)の条件を満たすものの中で、sum(P)の値が最大であることを要する。
(1)possible(P,Cutlist)が真であること。
(2)sum(P)≦mを満たすこと。
ここで、possible(P,Cutlist)が真であるということは、分類後のカットパターンリストClassの各カットパターン(m,P)の切り方Pを構成する各長さ(l=l1,…ln)の各本数(=count(l,P)=count(l,(l1,…,ln)))が「Cutlistの当該部材長さ(l=l1,…ln)の各必要本数以下」であることを要することを意味する。不要な部材をカットしないためである。
そして、これらの条件を満たすものの中でsum(P)の値が最大であるということは、当該原資材m(原資材長さmの長さである原資材をいう、以下同じ)において発生する破材が最も少ないことを意味し、破材長さの抑制、コストダウンに寄与することとなる。
以上の処理がCutlistを対象に全ての原資材mを用いて行われると、G106でループから脱出する。グリーディ法プログラムG100の実行により、発生する破材が最小で、単位長さ当たりのコストも最小のカットパターン(mp,Pp)、すなわち、F102での最新のCutlistに対する唯一の(mp,Pp)=[原資材長さ,切り方]が得られる。そして、F104に進む。
その結果得られる初期解Resultを表8に示す。表8は、初期解生成プログラムF100を本実施形態における原資材リストML(表1参照)、長部材リストCLL(表5参照)を用いて実際に実行した結果であり、各行がカットパターン(m,P)=[原資材長さm,切り方P]のフィールドを備える。表8の各行はF101〜F105のループ処理を一巡する毎に、一行毎作成される。
E102においては、最適解探索プログラムH100が呼び出され、その実行により、分類後のカットパターンリストClassに基づいて最適解法により最適解が計算され、上記F100の初期解生成処理により得られたmincostよりもコストcostが安いと判断される場合に、その最適解がResultに格納される。
最適解探索プログラムH100においては、カットパターンリスト分類プログラムD100の実行により得られたクラスを用いて、各カットパターンが探索ノード(u,v)=[クラス番号,カットパターン特定番号]、すなわち、(u,v)=[クラス番号,当該クラスの何行目かを示す行番号]とすることにより特定される。
Class[1]の(m,P)=(5486,(5430))が(u,v)=(1,1)で表され、
Class[2]の第1行目の(m,P)=(6096,(4286,1790))が(u,v)=(2,1)で表され、
Class[2]の第2行目の(m,P)=(6096,(4286,1776))が(u,v)=(2,2)で表され、
Class[18]の第1行目の(m,P)=(6096,(2920,2752))が(u,v)=(18,1)で表され、
Class[18]の第2行目の(m,P)=(6096,(2920,2724))が(u,v)=(18,2)で表され、
Class[18]の第3行目の(m,P)=(6096,(2920,2648))が(u,v)=(18,3)で表される。
H101においては、累計コストを示すパラメータcostに初期設定として0が代入されるとともに、探索リストSが生成される。ちなみに、後述から明かであるが探索リストSを構成する探索ノード(u,v)は、[当該クラス番号,カットパターン特定番号]のフィールドを備えてカットパターンを特定するとともに、[当該クラス番号,カットパターン不存在表示]のフィールドを備えて当該カットパターン不存在を特定する。
H101においては、また、クラス番号を示すパラメータuに1が代入される。表7でいえば、そのClass[1]からカットパターンを探索するという意味である。これにより、H102の探索プログラムI100を呼び出す準備ができ、H102に進む。
まず、I101においてはClass[1]を構成する全てのカットパターン(m,P1)…(m,Pn)のうち、possible(Pk,CLL)を満たすk(1≦k≦n)が存在するか否かが判断される。すなわち、「所定のクラス(Class[1])に属するカットパターンの中に余分な部材を出さないカットパターンが存在するか否か」が判断される。具体的には、「クラス番号1に分類されている[原資材長さ,切り方]を適用したときに長部材リストCLLの必要本数を超えて部材を切り出さないそのような[原資材長さ,切り方]が存在するか否か」、換言すれば、「カットパターン中の各切り方の各本数が長部材リストCLLの当該長さの各必要本数以下であるか否か」、更に換言すれば、「カットパターンに従って(原資材から)部材を切り出したときに、長部材リストCLLの必要本数を超えて不要な部材や余分な部材を切り出さないか否か」が判断される。
従って、Class[1][1](クラス1の第1行目)のカットパターンを用いて切り出すと余分な部材(不要な部材)が出る場合には、不要な部材が出ず、かつ、1≦k≦nの中で最小の第k行目のカットパターンが選ばれる。
そして、I107においては、探索リストSに(1,1)=(Class[1]のクラス番号1,Class[1]の第1行目の行番号1)=[当該クラス番号,カットパターン特定番号]が追加される。
表7のClassについては、H101〜H102が実行されると、(u,v)=(1,1)が探索リストSに追加される。
以上のようにして、I105又はI106を実行した後、I107を実行し、H103〜H112のループ処理に進む。
ここで、H104の説明を行う前にH103〜H112のループ処理及びH115の処理について簡単に説明する。
H103〜H112のループ処理の脱出条件は探索リストSが0(空)になることであるが、以下に説明するように、このループでは、
(1)長部材リストCLLが空になるまで、探索リストSに(u,v)、すなわち、[当該クラス番号u,カットパターン特定番号v]=[クラス番号u,当該クラス番号の第k行目の行番号v]が追加(I107)され(この間にH106のバックトラック等を介するときはバックトラックの間は探索リストSの探索ノードが削減され又は削減され続け、優先度の低いクラスから探索されることはある)、その後は、
(2)H106のバックトラックを介して、探索リストSの削減と長部材リストCLLへの戻しを行いつつ、カットパターンを探索すべき優先度の低いクラスが存在しないかを判定し(探索すべき優先度の低いクラスが存在しない場合にはH107:≧)、そのような優先度の低いクラスが存在する場合には(H107:<)、再度長部材リストCLLが空になるまで、探索リストSに(u,v)を追加しながら、コストや破材長さを抑えることができるカットパターンを探索しつつ、
(3)最終的には、カットパターンを探索すべき優先度の低いクラスが全く存在しない(H107:≧)という判断がされ続ける状態になり、結果、探索リストSが0(空)になるまで探索ノードが全て削減され(J101)、探索リストSが空になる。
もっとも、初期解探索プログラムF100を実行しないようにしてもよい。この場合には、mincostには十分大きな値を最初から設定しておくことにより、最適解探索プログラムH100で探索しうる中で最低コストを実現するResultが必ず得られる。
以上のH101〜H112の処理により、長部材リストCLLのカットパターンが全て暫定的に定まる。従って、H115においては長部材リストCLLの各部材の各必要本数に全て0が代入される。
さて、話を元に戻す。次に、H104においては、(u,v)、すなわち、(Class[u]のクラス番号u,Class[u]の第k行目の行番号v)に探索リストSの末尾の探索ノードが代入される。どのClassを探索するかの基準にするためである。
(1)state=forward、すなわち、フラグstateがforward(前方探索)である、
(2)∃(l,r) in CLL, r>0、すなわち、長部材リストCLLの必要本数が0超である部材(すなわち、切り方が決まっていない長部材)が存在する、
(3)cost<mincost、すなわち、累積コストcostが直近のF104又はH111で求めたmincost(初期解探索プログラムF100が実行されない場合には、十分に大きな値が設定されたmincost)よりも小さい、
という条件が全て満たされるか否かが判断される。
これらの条件が全て満たされると判断された場合(H105:YES)には、H113に進む。H113においては、まず、longest(CLL)が実行されることにより、長部材リストCLLに残っている切り方を決めるべき部材(すなわち、必要本数rが0超の部材)のうち、最長部材がどれかが求められる。そして、次に、range(longest(CLL), Class)が実行されることにより、その最長部材長さが代表長さl1であるClassが第何クラスh〜第何クラスtに存在するかが求められる。すなわち、h(headの略)、t(tailの略)で、hにはその最長部材長さが代表長さl1である先頭のクラス番号が代入され、tにはその最長部材長さが代表長さl1である末尾のクラス番号が代入される。
まず、I101においてはClass[u]を構成する全てのカットパターン(m,P1)…(m,Pn)のうち、possible(Pk,CLL)を満たすk(1≦k≦n)が存在するか否かが判断される。すなわち、「所定のクラスに属するカットパターンの中に余分な部材を出さないカットパターンが存在するか否か」が判断される。具体的には、「クラス番号uに分類されている[原資材長さ,切り方]を適用したときに長部材リストCLLの必要本数を超えて部材を切り出さないそのような[原資材長さ,切り方]が存在するか否か」、換言すれば、「カットパターン中の各切り方の各本数が長部材リストCLLの当該長さの各必要本数以下であるか否か」、更に換言すれば、「カットパターンに従って(原資材から)部材を切り出したときに、長部材リストCLLの必要本数を超えて不要な部材や余分な部材を切り出さないか否か」が判断される。
従って、Class[u][1](クラスuの第1行目)のカットパターンを用いて切り出すと余分な部材(不要な部材)が出る場合には、不要な部材が出ず、かつ、1≦k≦nの中で最小の第k行目のカットパターンが選ばれる。
そして、I107においては、探索リストSに(u,v)=(Class[u]のクラス番号u,Class[u]の第k行目の行番号v)=[当該クラス番号,カットパターン特定番号]が追加される。
表7のClassについては、H114が実行されると、例えば、(u,v)=(1,1),(1,1),(1,1),(1,1),(1,1),(1,1),(2,1),(2,1),(4,1),(6,1),(6,1),(8,1),(8,1),(10,1),(12,1),(12,0)…等が探索リストSに追加される。
H110においては、
(1)長部材リストCLLの全ての部材の必要本数が0であり(0である場合は、長部材リストCLLの全ての部材のカットパターンが探索ノードによって特定されている状態である)、かつ、
(2)その時点の最適解探索プログラムH100における累計コストを意味するパラメータcostが最低コストを示すパラメータmincost(直近のF114又はH111で求めたmincost)よりも安いと判断されると(H110:YES)、H111に進む。
一方、H105に規定する条件が一つでも満たされない場合には、H106のバックトラックに進み、バックトラックプログラムJ100が呼び出される。ちなみに、H105に規定する条件が一つでも満たされない場合として、
(1-1)フラグstateがbackである場合のうち、直近で呼び出された前方探索の探索プログラム(H102、H114、H109のいずれか)において、対象とするClass[u]には適当なvがなかった場合(Class[u]に属するどのカットパターンを用いても長部材リストCLLでは不要な部材、余分な部材を切り出すことになる場合)(J102:=);
(2)長部材リストCLLの全ての部材についての切り方が探索ノードによって特定されて、必要本数が全て0(r=0)になった場合;
(3)最適解探索プログラムH100における累計コストcostが最低コストmincost以上になった場合、が挙げられる。
さて、H106→J101においては、(u,v)、すなわち、[当該クラス番号,カットパターン特定番号]に探索リストSの末尾(直近、最新)の探索ノードが代入される。その上で、pop(S)により探索リストSが一つ前の状態に戻されるとともに、フラグstateにbackが代入される(以降stateにforwardが代入されるまでバックトラックにより後方から、探索可能な優先度の低い他のクラスの存在の有無が探索される)。
J102においては、J101で末尾にあった探索ノード(u,v)のvが0か否かが判断される。0の場合には(J102:=)、前回の探索(H102、H114、H109のいずれか)ではそのクラス番号uの中に適用しうるカットパターンが無かったことを意味するため(I101:NO)、何もせず(J101のpop(S)で一つ前の状態に戻っているため)、バックトラックプログラムJ100を抜ける。
従って、そのデクリメントされたカットパターンについて、J103の累計コストを元に戻す処理及びJ104〜J106の必要本数を元に戻すループ処理が行われる。これにより、クラス番号uで示されるクラス以降のクラスに属するカットパターンから、長部材リストCLL(元に戻された必要本数を含む)に残っている部材に適用しうるカットパターンを探索可能な状態となる。
(1)(m,P)には累計コスト及び長部材リストCLLを一つ前の状態に戻すために用いるカットパターンを示すClass[u][v]の[原資材m,切り方P]が代入されるとともに、
(2)累計コストcostには、そのコスト(=price(m))を減じたコストが代入されて累計コストが一つ前の状態に戻され、
J104〜J106のループ処理においては、具体的には、J103で規定したカットパターン(m,P)の切り方Pを構成する各長さの本数が1本ずつ長部材リストCLLの該当部材の必要本数に1インクリメントされる(要するに1本ずつ元に戻す)処理がなされ必要本数が一つ前の状態に戻される。
その後、H107に進む。
H107においては、longest(CLL)を実行することにより、H106で部材を元に戻した場合及び戻さない場合を含め、長部材リストCLLに残っている切り方を決めるべき部材(すなわち、必要本数が0超の部材)のうち、最長部材が求められる。そして、次に、range(longest(CLL), Class)が実行されることにより、その最長部材長さが代表長さl1であるClassが第何クラスh〜第何クラスtに存在するかが求められる。これにより、h(head)にはその最長部材長さが代表長さl1である先頭のクラス番号が代入され、t(tail)にはその最長部材長さが代表長さl1である末尾のクラス番号が代入される。
次いで、uとtとが比較される。u<tの場合(Class[u]とClass[t]とを比べたときに、代表長さが異なる場合、原資材が異なる場合等)には(H107:<)、これまで探索されなかった優先度の低いClassが後続クラスに存在する。そこで、その優先度の低いClassから長部材リストCLLに適用すべきカットパターンを探索すべく、探索すべきクラスを優先度の低いクラスに変更すべくu=u+1の処理がなされる。ここで、「優先度の低いクラス」について補足する。例えば、H113のクラス特定手法(uを決める手法)では、最長部材が属するクラスの先頭クラスを優先度の高い探索対象としたため、先頭クラス以外のクラスは、探索対象とはならない。そのため、u=u+1が優先度の低いクラスを探索対象とすることを意味する。
そして、H110に進むと、長部材リストCLLの部材の切り方が全て決まり、しかも、累積コストが最小である場合には、H111に進むが、そうではない場合(H110:NO)には、H103〜H112のループ処理の先頭に戻り、探索リストSが空になるまで、H103〜H112の処理が行われる。
一方、u≧tである場合(Class[u]とClass[t]とが同じ場合等)には(H107:≧)、当該最長部材における探索対象となるクラスは優先度が高いクラスから優先度の低いクラスまで探索され尽くしたことを意味する。そこで、探索はなされず、H103〜H112のループ処理の先頭に戻る。
その後、H103〜H112のループ処理を脱出すると、長部材リストCLLの部材のカットパターンがバックトラック(H106)により全部埋まった状態である。しかし、長部材リストCLLの部材の切り方は既に求まり(H111)、Resultに格納されている。そこで、H115においては、長部材リストCLLの部材の必要本数が全て0とされる。
A107においては、A106の部分最適解計算部で得られた長部材リストCLLについてのResultに対して、短部材リストCLSの各短部材が最適性を極力失わない方法によって挿入される。すなわち、この挿入は、短部材リストCLSの中から短部材が1本ずつ最適解Resultに挿入される(例えば、Resultの切り方に短部材が1本追加される)ことによりなされ、その挿入(追加)は、所定の条件(K106,K108,K111)が満たされる場合に実行される。
K101においては、短部材リストCLSの第何行目の部材が処理対象であるかを示すパラメータiに初期値として1が代入される(まずは第1行目の短部材が処理対象とされる)。
K102〜K114のループ処理は、短部材リストCLSの部材の挿入に関する処理が各行についてなされる度にループする処理であり、短部材リストCLSの全ての部材(K102では脱出条件として全ての部材と規定される)について実行される。更に、K103においては、コスト増加分を示すパラメータminincに初期値として原資材の最高コスト(原資材リストMLでは6096円)が代入されるとともに、短部材が挿入されるResultの挿入行番号をマーキングしておくパラメータupに0が代入される(ちなみに、挿入可否の判断時(K111)にはパラメータupが0である場合には挿入されない)。更に、処理対象とする短部材リストCLSの第i行目の部材長さ及び必要本数が、それぞれ、パラメータl,rに代入される。
K105においては、挿入位置の候補となるResult[u]の[原資材長さ,切り方]が(m,(l1,…,ln))に代入されるとともに、Resultの第u行目のカットパターンの長さの合計(=l1+…+ln)と短部材リストCLSの第i行目の長さ(=l)とが加算され、これが、第i番行目の短部材を挿入した場合の全長さを示すパラメータtotalに代入される。
K106においては、total値が原資材の最大長以内であるか否かが判断される。最大長を超えない場合には(K106:YES)、K107に進み、total値以上の最小の原資材長さ(=suite(total))がパラメータm'に代入される。更に、原資材m'のコストと原資材mのコスト差がパラメータincに代入される。そして、K108に進む。
<K108の条件>
(K108の条件1)短部材リストCLSの第i行目の部材の必要本数がそもそも0である場合には、挿入するまでもないため、そのような短部材については処理を行わないようにするため、r>0であること。
(K108の条件2)K105で短部材リストCLSの第i番目の短部材を加算した場合におけるその破材長さ(=m'-total)が、その短部材を挿入する前の破材長さ(=m-(l1+...+ln))以下であること、すなわち、短部材リストCLSの第i番目の短部材を挿入しても破材長さが長くならないこと。破材長さを抑えることでコスト抑制に寄与するためである。
(K108の条件3)K105で短部材リストCLSの第i行目の部材を加算し、それに伴いK107で求め直した原資材m'を用いることによるコスト増加分(=inc)がそれまでの処理におけるコスト増加分の最小値(=mininc)以下であること。コスト増加を抑えることでコスト抑制に寄与するためである。
一方、K108の条件を満たさないと判断された場合には(K108:NO)、挿入位置が無いと判断されるため、K109の処理がなされず、K104〜K110のループ処理の先頭に戻る。
上記のようにパラメータupが0の場合には、短部材リストCLSの第i行目の挿入余地が無いため、K113へ進み、挿入可否の判断対象が次の短部材(i=i+1)に設定され(K113)、iがsize(CLS)を超えるまで、K102〜K114のループ処理の先頭に戻る。尚、処理対象となっている短部材リストCLSの第i番目の必要本数が0になっている場合においては、K106の条件が満たされたとしても、K108のr>0が満たされないことになる。これらの処理を経ることにより、Resultの全行について挿入可否が判断された後、結果、K113に進んで、iが1インクリメントされる。
K112においては、短部材リストCLSの第i行目の短部材が次のようにして挿入される。すなわち、Resultの第u行目(短部材を挿入する位置)であるResult[up]の原資材長さを示すパラメータmに原資材長さmp(K107で最適長さm'が求められ、K109でマーキングされたパラメータmp)が代入される。また、Resultの第up行目(短部材を挿入する位置)であるResult[up]の切り方Pの末尾にパラメータlの値が挿入される(これにより、それまでは、P=(l1,…,ln)だったものが、P=(l1,…,ln,l)となる)。このようにして挿入が終わると、短部材リストCLSの第i行目の短部材の切り方が決まったものとして必要本数が1デクリメントされる(r=r-1)。パラメータiがsize(CLS)を超えない限り、K102〜K114のループ処理の先頭に戻る。
表12は、表11で挿入した短部材の必要本数を表5の短部材リストCLSから減らした例を示す。
A108においては、解の確定1プログラムL100が呼び出され、リストResultの中から、最長の原資材を使用し、かつ、破材長さがその原資材長さの1%以下であるものだけが抜き出され、確定解としてSolutionに保存される。また、確定解Solutionに含まれている部材について、部材リストCLLの必要本数が更新される。
L101においては、その時点における長部材リストCLLと短部材リストCLSとを結合させる(具体的には表10と表12とが結合される)。
L102〜L106のループ処理は、Result(H111,K112参照)中の全行についてなされ、Resultの全行のうち「最長原資材を使用し、かつ、破材長さがその原資材長さの1%以下であるもの」が確定解として抜き出す対象とされ(L103:YES)、Solutionに追加される(L105)。尚、L103において「sum(P)/m≧0.99」は、切り方の合計長さ(sum(P))が原資材mの長さの0.99以上の長さを占める(換言すれば、破材長さが1%未満である)ことを意味する。
表13は、表11のResultのうち、Solutionに追加される(L105)確定解と、L101で再結合された部材リストCLにResultから長部材及び/又は短部材が復元された結果(L104)としても部材リストCLを示す。
表13によれば「Solutionに追加された部材以外の部材」が部材リストCLに復元されていることがわかる。尚、同表に「最長原資材を用いて2本カット」とあるのは、1デクリメントする際の根拠となるSolutionのあるカットパターンの切り方に同じ長さが2度含まれている場合と、Solutionの別のカットパターンにその長さがそれぞれ含まれている場合とがある(同表の場合は、後者の方)。
A108の解の確定1の処理が終了すると、A109の部材リスト分割部の処理に進む。
A109の処理は上記したA103と同様の処理であるが、A109がA103と異なるのは、L104でResultから部材を戻すことにより得られた部材リストCL(表13参照)を対象として実行されることである。かかる処理を行うのは、確定解Solutionとして追加した分(L105)だけ部材リストCLの必要本数が減少しているため分割ポイントに変化が生じている可能性があるためである。従って、上記のA108の解の確定1を実行してもなお、分割ポイントに変更が生じないような分割ポイントが見つかるまでL101で部材リストCLを再結合しながらA104〜A110のループ処理がなされる。すなわち、A109の部材リスト分割部を実行することによって長部材の範囲が従来より増加した場合には、A106の部分最適解計算部の処理に戻り、範囲が変化しなかった場合はループを抜ける。
A111においては、解の確定2プログラムM100が呼び出され、A107の短部材挿入部1で得られたResultのうち(M101)、A108の解の確定1の処理でSolutionに追加されなかったもの(m≠最長原資材)、又は、Resultを構成するカットパターンの切り方Pの合計長さが原資材長さの99%未満であるもの(すなわち、sum(P)/m<0.99、換言すれば、破材長さが原資材長さの1%超であるもの)が確定解として抜き出す対象とされ(M102:YES)、Solutionに追加される(M103)。また、Solutionに追加された長部材及び/又は短部材は、長部材リストCLL及び/又は短部材リストCLSから除外(r=r-1、すなわち、それらの必要本数が1デクリメント)される(M103)。
A112の短部材挿入部2の処理においては短部材挿入2プログラムN100が呼び出され、短部材リストCLSに残っている短部材が複数本まとめて(場合によっては単数本)挿入される。ここで、複数本まとめての挿入が可能なのはN101の挿入パターン作成処理において挿入カットパターン作成プログラムO100が呼び出されその実行により残っている短部材が挿入カットパターン化されるためである。
(1)挿入パターン作成処理として、原資材リストMLと短部材リストCLS(未だ切り方が決まっていない短部材が残っている)に基づいて可能な切り方が列挙された挿入パターンPが作成され(O102)、ソートされた挿入パターンリストPL(但し、上記のように[原資材m,切り方P]を要素とするものではなく、挿入パターン=[切り方P]のみが要素となる、上記と同様(m,P)でもよいがその必要がないため)が作成される処理がなされ(O103);その後、
(2)挿入パターン分類処理として、O103でソートされた挿入パターンリストPLが分類分け、すなわち、挿入パターンリストPLの各行で代表長さが同じ挿入パターンが類似する挿入パターンとして同一クラスに分類される一方(O106→O107)、代表長さが異なる挿入パターンが異なるクラスに分類される処理がなされる(O106→O109)。尚、分類後のものを「分類後の挿入パターンリストClass」という。
これらの処理について更に詳細に説明する。
O101においては、挿入パターンを格納するためのリストとして、挿入パターンリストPLが生成される。挿入パターンリストPLは、[切り方]=P=(l1,…,ln)のフィールドを備えたリストである。
O102においては、「O102の条件」を満たすように挿入パターンPが生成され、挿入パターンリストPLに格納される。尚、挿入パターンPは、A111の解の確定2の処理を行った後、未だ切り方が定まらずに短部材リストCLSに残っている短部材を用いて作成される。また、挿入パターンPは、短部材リストCLSに含まれる少なくとも1の短部材を1本用いたあらゆる組み合わせ、すなわち、短部材リストCLSの第1行目〜最終行目までのいずれかを使用して生成された少なくとも1本の切り方を含むものであればよい。「O102の条件」は、挿入パターンPの生成毎又はその生成後のタイミングで判断される。「O102の条件」は次の通りである。
(O102の条件1)「size(P)≦60/size(CLS)+1」とは、1つの挿入パターンPに含まれる切り方の数が最大でも61以下であることを要することを意味する。size(P)を無制限にすると組み合わせの数が大きくなりすぎ演算過程でオーバーフローするため、これを回避するためである。「60」は特に限定されるものではなく、任意の数値が適用可能である。
O105〜O108のループ処理においては、まず、O106において、挿入パターンリストPLを構成する全各行の挿入パターンP(l1,…,ln)について、第1行目から順番にClass[i][1][1]=P[1]であるものがクラス番号1〜cnのClassのいずれかに存在するか否かが判断される。ここで、Class[i][1][1]=P[1]は、挿入パターンリストPLの分類対象となる行の挿入パターンPに含まれる代表長さP[1]が、分類後の挿入パターンリストClass[i](1≦i≦cn)の第1行目(Class[i][1])の代表長さClass[i][1][1]と等しいことを意味する。
一方、O106において分類対象とされる挿入パターンの代表長さP[1]が既生成のクラスの代表長さClass[i][1][1](1≦i≦cn)のいずれとも等しくないと判断された場合には(O106:NO)、O109に進み、新たなClassが生成され(cn=cn+1、create(Class[cn]))、その新たなClassに挿入パターンPが追加される(O109)。Class[i][1][1]=P[1]の条件を導入したのは、演算効率を高めるためである。
以上の処理により、N101の挿入パターン作成処理においては、A111の解の確定2の処理後に未だ切り方が定まらなかった短部材について、挿入パターン及びその分類分けがなされた「分類後の挿入パターンリストClass」が得られる。上記から明かであるが分類後の挿入パターンリストClassは、各行が代表長さによって降順にソートされたものとなり、各挿入パターンを構成する切り方も降順にソートされたものとなる。尚、各挿入パターンPは、単数本又は複数本のいずれもあり得る。
以上のようにして、N101の処理が終了する。
N102及びN103〜N115のループ処理においては、A111の解の確定2の処理を行うことによって得られている確定解Solutionに対して、N101で作成された挿入パターンリストClassの各挿入パターン(切り方)が最適性を極力失わない方法によって挿入される。すなわち、この挿入は、挿入パターンリストClassの第1クラス〜最終クラス(ここで、size(Class)はクラス数を意味する)のうちClass[i]を構成する各挿入パターンが1つずつ確定解Solutionに挿入される(例えば、Solution中のカットパターンの切り方の末尾に挿入パターンが追加される)ことによりなされ(N113)、その挿入(追加)は、所定の条件(N107,N109)が満たされる場合に実行される。
N102においては、挿入パターンリストClassの第何クラスが処理対象であるかを示すパラメータiに初期値として1が代入される。これにより、第1(=i)クラスの挿入パターンが処理対象とされる。
N103〜N115のループ処理は、挿入パターンリストClassの部材の挿入に関する処理が各クラスについてなされる毎にループする処理であり、挿入パターンリストClassの全てのパターンについて実行される(N103,N105参照)。更に、N104においては、コスト増加分を示すパラメータminincに初期値として原資材の最高コスト(原資材リストMLでは6096円)が代入されるとともに、挿入パターンが挿入されるSolutionの挿入行番号をマーキングしておくパラメータupに0が代入される(ちなみに、挿入可否の判断時(N112)にはパラメータupが0である場合には挿入されない)。
N106においては、挿入位置の候補となるSolution[u]のカットパターン[原資材長さ,切り方]が、(m, P)に代入されるとともに、Solutionの第u行目のカットパターンの長さの合計sum(P)と挿入パターンリストClassの第iクラスに属するいずれかの挿入パターンの長さの合計sum(P')とが加算され、これが、当該挿入パターンP'を挿入した場合の全長さを示すパラメータtotalに代入される。
<N109の条件>
(N109の条件1)「possible(P',CLS)」とは、挿入パターンリストClassの第iクラスの処理対象たる挿入パターンP'の切り方を構成する各長さの各本数が「短部材リストCLSの当該部材長さの各必要本数以下」であることを要することを意味する。これは、不要な部材(余分な部材)を切り出さないようにするためである。換言すれば、挿入パターンリストClassの第iクラスのカットパターンを切り方が決まらず残っている短部材に適用したときに、短部材リストCLSの必要本数がそもそも0である短部材についてまで切り出してしまうことがないようにするためである。
(N109の条件3)N106で挿入パターンリストClassの第iクラスの部材長さを加算し、それに伴いN108で求め直した原資材m'を用いることによるコスト増加分(=inc)がそれまでの処理におけるコスト増加分の最小値(=mininc)以下であることを要することを意味する。コスト増加を抑えることでコスト抑制に寄与するためである。
一方、N109の条件を満たさないと判断された場合には(N109:NO)、挿入できないと判断されるため、N110の処理がなされず、N105〜N111のループ処理の先頭に戻る。
上記のようにパラメータupが0の場合には、挿入パターンリストClassの第iクラスを挿入する余地が無いため、N114へ進み、挿入可否の判断対象が次の挿入パターンリストClassの第(i=i+1)クラスに設定され(N114)、iがsize(Class)を超えるまで、N103〜N115のループ処理の先頭に戻る。また、処理対象となっている挿入パターンClassの第iクラスの必要本数が0になっている場合においては、N107の条件が満たされたとしても、N109のpossible(P',CLS)が偽となる。結果、N114に進んで、iが1インクリメントされる。
N113においては、挿入パターンリストClassの第iクラスの挿入パターンP'が次のようにして挿入される。すなわち、Solutionの第up行目(挿入パターンを挿入する位置)の原資材を示すパラメータmに原資材長さmp(N108で原資材長さm'が求められ、N110でマーキングされたパラメータmp)が代入される。また、Solutionの第up行目(挿入パターンを挿入する位置)であるSolution[up]のカットパターンの切り方Pの末尾にパラメータPpを構成する全ての長さl(切り方l)の値が追加(挿入)される。これにより、それまでは、P=(l1,…,ln)だったものが、P=(l1,…,ln,l…)となる。このようにして挿入が終わると、挿入パターンリストClassの第iクラスを構成する該当する挿入パターンP'を構成する長さと同一長さの短部材(短部材リストCLSに残っている短部材)の必要本数が1デクリメントされる(r=r-1)。N113で切り方が確定したためである。そして、全てのクラスについての挿入又は挿入可否の判断を実行し終えるまで、パラメータiがsize(Class)を超えない限り、N103〜N115のループ処理の先頭に戻る。
A113においては、最終挿入プログラムP100が呼び出され、P101〜P115のループ処理がなされ、これにより、A112の短部材挿入部2を実行しても未だ切り方が決まらずに短部材リストCLSに残っている短部材の挿入パターン(mp,Pp)がグリーディ法によって1本単位で求められ、その求めたカットパターン(mp,Pp)がコストを最も抑えることができるように確定解Solutionに挿入(P113:切り方だけ挿入)又は追加(P116:カットパターン自体を追加)する処理がなされる。
(1)グリーディ法で求めた挿入パターン(mp,Pp)の原資材mpのコストprice(mp)がパラメータminincに代入されるとともに、
(2)「挿入パターン(mp,Pp)の切り方Ppを確定解Solutionに挿入するかその末尾に追加するかを示すとともに、挿入するとすればその挿入位置を示す」パラメータupにsize(Solution)+1が代入される。すなわち、パラメータupの値が、P112においてもsize(Solution)+1のままであったら、挿入パターン(mp,Pp)が確定解Solutionの末尾に追加される。
P105においては、P105〜P111のループ処理の脱出条件が規定される。パラメータuがSolutionの第何行目について挿入可否及び/又は挿入位置を判断しているかを示すパラメータであり、最終行目について挿入可否及び/又は挿入位置を判断し終わるとループを脱出することがわかる。
P106においては、挿入位置の候補となるSolution[u]のカットパターン[原資材長さ,切り方]が(m, P)に代入されるとともに、Solutionの第u行目の切り方の合計sum(P)と挿入パターンの切り方Ppの合計sum(Pp)とが加算され、これが、当該切り方Ppを挿入した場合の全長さを示すパラメータtotalに代入される。
P112において、パラメータupが「size(Solution)+1」の場合には(P112:>)、P116へ進み、push(Solution,(mp,Pp))が実行され、Solutionの末尾に挿入パターン(mp,Pp)が追加される。そして、P114に進む。P114においては、P116で挿入した切り方Ppを構成する長さと同一長さの短部材(短部材リストCLSに残っている短部材)の必要本数が1デクリメントされる(r=r-1)。P116において切り方が確定したためである。そして、短部材リストCLSに切り方が決まらずに残っている短部材が無くなるまで(∃(l,r) in CLS. r>0が成立しなくなるまで)、P101〜P115のループ処理の先頭に戻る。
P113においては、挿入パターン(mp,Pp)が次のようにして挿入される。すなわち、Solutionの第up行目(切り方Ppを挿入する位置)の原資材を示すパラメータmに原資材長さmp(P108で最適長さm'が求められ、N110でマーキングされたパラメータmp)が代入される。また、Solutionの第up行目(挿入パターンを挿入する位置)であるSolution[up]の切り方Pの末尾に切り方Ppを構成する全ての長さl(切り方l)の値が挿入される(これにより、それまでは、P=(l1,…,ln)だったものが、P=(l1,…,ln,l…)となる)。P114においては、P113で挿入した切り方Ppを構成する長さと同一長さの短部材(短部材リストCLSに残っている短部材)の必要本数が1デクリメントされる(r=r-1)。P113において切り方が確定したためである。そして、短部材リストCLSに切り方が決まらずに残っている短部材が無くなるまで(∃(l,r) in CLS. r>0が成立しなくなるまで)、P101〜P115のループ処理の先頭に戻る。
第二の実施形態は、メインプログラムQ100に示す通りであるが、
(B1)上記A1同じ(Q103)→
(B2)上記A2-1〜A2-3と同じ(Q103,Q104,Q105)→
(B3)短部材を何本かまとめて、既定の条件を満たす場合に限り(B2)の解に挿入する(Q108)→
(B4)最後に残った短部材を、(B3)の解にうまく挿入する(Q109)という手順による。従って、第一の実施形態を簡略化したものであり、部材リストの規模が小さい場合に特に有効である。尚、メインプログラムQ100で呼び出される各サブルーチンは、上記のサブルーチンと同一のものを用いることができるため、詳細な説明を省略する。
Q101においては、初期設定として、部材リストCLの入力がなされるほか、A101と同様の入力がなされる。Q102においては、解を格納するSolutionが生成される。
Q109においては、最終挿入プログラムP100が呼び出され実行される。表22にその結果を示す。
いずれの実施形態においても、結果出力に要する時間は、一般的なパーソナルコンピュータで10秒程度であり、演算時間の短縮が図られている。
そして、表17(第一の実施形態)及び表22(第二の実施形態)に示した出力結果は次の通りである。
第一の実施形態によれば、原資材の総額が195,049円、破材長さの合計が5,743mmとなる。尚、最適解は194,441円であり、その破材長さの合計は5,135mmとなることが証明できることから、この出力結果は最適解に非常に近い値であり、誤差は0.313%以内であることが保証される。
第二の実施形態によれば、最適解を出力することができる。
第一の実施形態と第二の実施形態とを比較すると、前者は部材リストの規模が比較的大きい場合に適用するとよく、後者は部材リストの規模が比較的小さい場合に適用するとよい。従って、クラス概念の導入を前提とした探索を行ったり、長部材と短部材の分割等と組み合わせる等、各サブルーチンの組み合わせ方や組み合わせ回数等を適宜変更することにより、必要な部材リストに応じた部材取り手法を演算により求めることが可能となる。
2 コンピュータ
3 原資材DB
4 部材DB
5 建築CADシステム
6 資材切断システム
PG 部材取りプログラム
ML 原資材リスト
CL 部材リスト
KZ 建築図面
Claims (20)
- 原資材から[部材,必要本数]のフィールドを備えた部材リスト(長部材リスト、短部材リストを含む)に記憶された当該各[部材,必要本数]の部材(長部材、短部材を含む)を切り出すのに用いられるカットパターンを演算する部材取りシステムであって、
[原資材,切り方]のフィールドを備えたカットパターンからなるカットパターンリストを作成するカットパターンリスト作成手段と、
前記各カットパターンをクラスに分類するカットパターン分類手段と、
所定のクラスに属するカットパターンの中から余分な部材を出さないカットパターンを探索し、当該カットパターンを[当該クラス番号,カットパターン特定番号]のフィールドを備えた探索ノードによって特定するか、又は、当該カットパターン不存在を[当該クラス番号,カットパターン不存在表示]のフィールドを備えた探索ノードによって特定し、当該探索ノードを探索リストに追加して探索リストを作成する前方探索手段とを備えたことを特徴とする部材取りシステム。 - 前記前方探索手段は、前記部材リストの必要本数が0超の最長部材が属するクラスを前記所定クラスとして探索し、前記探索ノードによって特定される前記部材リストの必要本数を調整(減じる又は何もしない)するものであることを特徴とする請求項1に記載の部材取りシステム。
- 前記前方探索手段は、前記部材リストの必要本数が0超の最長部材が属するクラスのうち先頭クラスから優先的に探索するものであることを特徴とする請求項2に記載の部材取りシステム。
- 前記探索ノードが[当該クラス番号,カットパターン不存在表示]である場合、又は、前記部材リストの必要本数が0となった場合には、当該探索ノードによって特定される前記部材リストの必要本数を調整(戻す又は何もしない)しながら、当該探索ノードによって特定されるクラスより優先度が低いクラスに前記部材リストの必要本数が0超の最長部材が属することが見つかるまで当該探索リストから当該探索ノードを削減する後方探索手段を備えたことを特徴とする請求項1から3のいずれかに記載の部材取りシステム。
- 前記部材リストの第1行目〜第p行目(処理対象行、以下同じ)までの各長さが代表長さとなる各クラス数から重複を許して当該各長さの部材を各必要本数切り出すときの各カットパターンの総数を乗算して得た値が所定の閾値を超えた場合に、前記第p行目を分割ポイントとして、当該部材リストの第1行目〜第(p-1)行目を長部材リスト、当該部材リストの第p行目〜最終行目を短部材リストに分割する分割手段を備えることを特徴とする請求項1から4のいずれかに記載の部材取りシステム。
- 前記カットパターンリスト作成手段、前記カットパターン分類手段による処理を行った後、前記分割手段による処理を行って分割ポイントを求め、得られた長部材リストに対して、前記前方探索手段、前記後方探索手段による処理を行い、前記長部材リストの必要本数が全て0になったところで得られた探索リストを構成する全探索ノードによって特定される[原資材,切り方]を最適解とする最適解計算手段を備えたことを特徴とする請求項5に記載の部材取りシステム。
- 前記最適解計算手段は、前記長部材リストに対して近似解法によって求めた初期解で要するコスト未満の場合に前記全探索ノードによって特定される[原資材,切り方]を最適解とし、そのコスト以上の場合に前記初期解を当該最適解とすることを特徴とする請求項6に記載の部材取りシステム。
- 前記最適解に短部材を1本ずつ挿入する第一短部材挿入手段と、
得られた最適解のうち、最長部材を用い、かつ、破材長さが基準値以下である解を確定解とする第一確定手段と、
前記第一確定解を削減した長部材リスト及び短部材リストを結合することにより、部材リストを作成し、再度、当該部材リストについて前記分割手段による分割処理を行い、前回の分割ポイントと、新たな分割ポイントとが合致する場合に真の分割ポイントとする分割ポイント確定手段とを備えたことを特徴とする請求項7に記載の部材取りシステム。 - 前記分割ポイント確定手段による処理によって、真の分割ポイントが確定した場合には、得られた最適解のうち最長部材以外の部材を用いているもの、又は、破材長さが基準値超のものを前記確定解に追加する第二確定手段と、
切り方が決まっていない短部材を挿入パターン化して当該確定解に挿入する第二短部材挿入手段と、
切り方が決まっていない短部材を近似解法に基づいて挿入パターン化し、当該確定解に挿入又は追加して最終確定解を得る最終短部材挿入手段とを備えたことを特徴とする請求項8に記載の部材取りシステム。 - 前記最終確定解を切断機に送信する確定解送信手段と、
前記最終確定解に基づいて原資材から所定長さの部材を切断する切断手段と、
を備えたことを特徴とする請求項9に記載の部材取りシステム。 - 原資材から[部材,必要本数]のフィールドを備えた部材リスト(長部材リスト、短部材リストを含む)に記憶された当該各[部材,必要本数]の部材(長部材、短部材を含む)を切り出すのに用いられるカットパターンを演算する手段としてコンピュータを機能させる部材取りプログラムは、
[原資材,切り方]のフィールドを備えたカットパターンからなるカットパターンリストを作成するカットパターンリスト作成手順、
前記各カットパターンをクラスに分類するカットパターン分類手順、
所定のクラスに属するカットパターンから余分な部材を出さないカットパターンを探索し、当該カットパターンを[当該クラス番号,カットパターン特定番号]のフィールドを備えた探索ノードによって特定するか、又は、当該カットパターン不存在を[当該クラス番号,カットパターン不存在表示]のフィールドを備えた探索ノードによって特定し、当該探索ノードを探索リストに追加して探索リストを作成する前方探索手順を前記コンピュータに実行させることを特徴とする部材取りプログラム。 - 前記前方探索手順は、前記部材リストの必要本数が0超の最長部材が属するクラスを前記所定クラスとして探索し、前記探索ノードによって特定される前記部材リストの必要本数を調整(減じる又は何もしない)するものであることを特徴とする請求項11に記載の部材取りプログラム。
- 前記前方探索手順は、前記部材リストの必要本数が0超の最長部材が属するクラスのうち先頭クラスから優先的に探索するものであることを特徴とする請求項12に記載の部材取りプログラム。
- 前記探索ノードが[当該クラス番号,カットパターン不存在表示]である場合、又は、前記部材リストの必要本数が0となった場合には、当該探索ノードによって特定される前記部材リストの必要本数を調整(戻す又は何もしない)しながら、当該探索ノードによって特定されるクラスより優先度が低いクラスに前記部材リストの必要本数が0超の最長部材が属することが見つかるまで当該探索リストから当該探索ノードを削減する後方探索手順を備えたことを特徴とする請求項11から13のいずれかに記載の部材取りプログラム。
- 前記部材リストの第1行目〜第p行目(処理対象行、以下同じ)までの各長さが代表長さとなる各クラス数から重複を許して当該各長さの部材を各必要本数切り出すときの各カットパターンの総数を乗算して得た値が所定の閾値を超えた場合に、前記第p行目を分割ポイントとして、当該部材リストの第1行目〜第(p-1)行目を長部材リスト、当該部材リストの第p行目〜最終行目を短部材リストに分割する分割手順を備えることを特徴とする請求項11から14のいずれかに記載の部材取りプログラム。
- 前記カットパターンリスト作成手順、前記カットパターン分類手順による処理を行わせた後、前記分割手順による処理を行わせて分割ポイントを求め、得られた長部材リストに対して、前記前方探索手順、前記後方探索手順による処理を行わせ、前記長部材リストの必要本数が全て0になったところで得られた探索リストを構成する全探索ノードによって特定される[原資材,切り方]を最適解とする最適解計算手順を備えたことを特徴とする請求項15に記載の部材取りプログラム。
- 前記最適解計算手順は、前記長部材リストに対してグリーディ法によって求めた初期解で要するコスト以下の場合に前記全探索ノードによって特定される[原資材,切り方]を最適解とし、そのコスト超の場合に前記初期解を当該最適解とすることを特徴とする請求項16に記載の部材取りプログラム。
- 前記最適解に短部材を1本ずつ挿入する第一短部材挿入手順と、
得られた最適解のうち、最長部材を用い、かつ、破材長さが基準値以下である解を確定解とする第一確定手順と、
前記第一確定解を削減した長部材リスト及び短部材リストを結合することにより、部材リストを作成し、再度、当該部材リストについて前記分割手順による分割処理を行わせ、前回の分割ポイントと、新たな分割ポイントとが合致する場合に真の分割ポイントとする分割ポイント確定手順とを備えたことを特徴とする請求項17に記載の部材取りプログラム。 - 前記分割ポイント確定手順による処理によって、真の分割ポイントが確定した場合には、得られた最適解のうち最長部材以外の部材を用いているもの、又は、破材長さが基準値超のものを前記確定解に追加する第二確定手順と、
切り方が決まっていない短部材を挿入パターン化して当該確定解に挿入する第二短部材挿入手順と、
切り方が決まっていない短部材を近似解法に基づいて挿入パターン化し、当該確定解に挿入又は追加して最終確定解を得る最終短部材挿入手順とを備えたことを特徴とする請求項18に記載の部材取りプログラム。 - 前記最終確定解を切断機に送信する確定解送信手順と、
前記最終確定解に基づいて原資材から所定長さの部材を切断させる切断手順とを備えたことを特徴とする請求項19に記載の部材取りプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009116456A JP5329298B2 (ja) | 2009-05-13 | 2009-05-13 | 部材取りシステム及び部材取りプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009116456A JP5329298B2 (ja) | 2009-05-13 | 2009-05-13 | 部材取りシステム及び部材取りプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010266991A true JP2010266991A (ja) | 2010-11-25 |
JP5329298B2 JP5329298B2 (ja) | 2013-10-30 |
Family
ID=43363932
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009116456A Active JP5329298B2 (ja) | 2009-05-13 | 2009-05-13 | 部材取りシステム及び部材取りプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5329298B2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170002161A (ko) * | 2015-06-29 | 2017-01-06 | 윤태엽 | 원자재 절단 플랜 시스템 |
WO2020049834A1 (ja) * | 2018-09-06 | 2020-03-12 | 株式会社アマダホールディングス | 配置データ作成装置及び配置データ作成方法 |
JP2020166678A (ja) * | 2019-03-29 | 2020-10-08 | 株式会社オービック | 切断シミュレーション装置、切断シミュレーション方法、及び切断シミュレーションプログラム |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08106477A (ja) * | 1994-10-06 | 1996-04-23 | Fujitsu Ltd | トリミング装置 |
JP2000117688A (ja) * | 1998-10-16 | 2000-04-25 | Sekisui Chem Co Ltd | 棒状製品の割付方法及びその割付方法のプログラムを記録したコンピュータ読み取り可能な記録媒体 |
JP2000293551A (ja) * | 1999-02-03 | 2000-10-20 | Kobe Steel Ltd | 2次元配置決定方法及びその装置 |
-
2009
- 2009-05-13 JP JP2009116456A patent/JP5329298B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08106477A (ja) * | 1994-10-06 | 1996-04-23 | Fujitsu Ltd | トリミング装置 |
JP2000117688A (ja) * | 1998-10-16 | 2000-04-25 | Sekisui Chem Co Ltd | 棒状製品の割付方法及びその割付方法のプログラムを記録したコンピュータ読み取り可能な記録媒体 |
JP2000293551A (ja) * | 1999-02-03 | 2000-10-20 | Kobe Steel Ltd | 2次元配置決定方法及びその装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170002161A (ko) * | 2015-06-29 | 2017-01-06 | 윤태엽 | 원자재 절단 플랜 시스템 |
KR101720265B1 (ko) * | 2015-06-29 | 2017-03-27 | 윤태엽 | 원자재 절단 플랜 시스템 |
WO2020049834A1 (ja) * | 2018-09-06 | 2020-03-12 | 株式会社アマダホールディングス | 配置データ作成装置及び配置データ作成方法 |
JP2020038591A (ja) * | 2018-09-06 | 2020-03-12 | 株式会社アマダホールディングス | 配置データ作成装置及び配置データ作成方法 |
JP2020166678A (ja) * | 2019-03-29 | 2020-10-08 | 株式会社オービック | 切断シミュレーション装置、切断シミュレーション方法、及び切断シミュレーションプログラム |
JP7397580B2 (ja) | 2019-03-29 | 2023-12-13 | 株式会社オービック | 切断シミュレーション装置、切断シミュレーション方法、及び切断シミュレーションプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP5329298B2 (ja) | 2013-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5329298B2 (ja) | 部材取りシステム及び部材取りプログラム | |
Ajtai et al. | The longest path in a random graph | |
Kleinert | Strong-coupling behavior of φ 4 theories and critical exponents | |
Jadach et al. | Multiphoton Monte Carlo event generator for Bhabha scattering at small angles | |
Jasch et al. | Fast-convergent resummation algorithm and critical exponents of φ 4-theory in three dimensions | |
EP0249639A1 (en) | Method of preparing nc data | |
Mazzanti et al. | Effects of QCD multi-jet contributions in electron-positron annihilation | |
EP1186976A2 (en) | NC machining simulation apparatus | |
Bangun et al. | Implementation of branch and cut method on n-sheet model in solving two dimensional cutting stock problem | |
JP4210316B2 (ja) | デジタル画像の連接型レンダリング方法 | |
Ben-Daya et al. | A simulated annealing approach for the one-machine mean tardiness scheduling problem | |
Gomes et al. | The promise of LP to boost CSP techniques for combinatorial problems | |
US4870597A (en) | Complex curved surface creation method | |
CN110442685A (zh) | 建筑专业词库的数据扩充方法、装置、设备及存储介质 | |
JP2752787B2 (ja) | 数値制御情報作成装置 | |
Puka et al. | Input sequence of jobs on neh algorithm for permutation flowshop scheduling problem | |
WO1987000651A1 (en) | Method of generating complex curved surfaces | |
AU5360499A (en) | Efficient hashing method | |
JPH09223008A (ja) | 影響範囲抽出システム | |
US7339597B1 (en) | Creating and manipulating related vector objects in an image | |
WO1988000367A1 (fr) | Procede d'etablissement du chemin de coupe d'un plan courbe composite | |
CN114491092B (zh) | 一种根据文档内容和配色推荐素材的方法和系统 | |
JPH0643923A (ja) | 数値制御プログラム編集装置 | |
JP2003271382A (ja) | ソフトウエア開発ツールを用いたアプリケーション開発システム | |
US20160232030A1 (en) | Electronic official document processing method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111104 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121105 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121113 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130115 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130430 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130613 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130702 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130724 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5329298 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |