以下、実施の形態を、図面を参照して説明する。本願に係る仕分け装置は、食品システムの構成要素の1つである。食品システムは、コンビニエンスストア(以下、コンビニと記す)、スーパーマーケット、百貨店等で販売される調理済み食品の製造及び配送を管理する情報システムである。ここで、調理済み食品(以下、商品と記す)には、弁当、おにぎり、サンドイッチなどや、シュークリーム、エクレアなどの菓子類も含むものとする。また、番重は、矩形状の底板と当該底板の周縁から略垂直に延びる側板(周壁)を含む、一面が開口された直方体状の箱体とする。
実施の形態1
図1は、食品システム1の構成例を示すブロック図である。食品システム1は、店舗POS(point of sale system)装置2、受注管理システム3、食品製造システム4、仕分けシステム5及び配送便システム6を含む。店舗POS装置2と受注管理システム3とは、例えば専用回線で接続されている。また、受注管理システム3と食品製造システム4とも、例えば専用回線で接続されている。食品製造システム4、仕分けシステム5及び配送便システム6は、例えばLAN(Local Area Network)、WAN(Wide Area Network)、インターネット、電話回線、衛星回線等により接続されている。
店舗POS装置2は、コンビニのPOSに係るコンピュータである。図1では、店舗POS装置2は、例えば3台である。しかし、店舗POS装置2は、少なくともコンビニ店舗の数だけ存在する。店舗POS装置2は、客に販売するための商品の発注情報を受注管理システム3に送信する。
受注管理システム3は、店舗POS装置2からの発注情報、すなわち受注情報を管理するシステムである。受注管理システム3は、店舗POS装置2から受信した受注情報を食品製造システム4に送信する。
食品製造システム4は、コンビニに配送する商品を製造する製造作業及び製造装置を管理するシステムである。食品製造システム4は、受注管理システム3から商品の受注情報を受信する。
仕分けシステム5は、食品製造システム4が製造した商品を配送先の店舗毎に仕分ける仕分作業又は仕分け装置10及び搬送装置20を管理するシステムである。
配送便システム6は、店舗毎に仕分けられた商品を配送するトラック便を管理するシステムである。店舗毎に仕分けられた商品は、配送便システム6の指示に従い、トラック便により店舗に配送される。
食品製造システム4、仕分けシステム5及び配送便システム6は、互いに情報の送受信を行い、連携して店舗に配送する商品を管理している。
仕分けシステム5は、仕分け装置10、搬送装置20を含む。仕分け装置10、搬送装置20は、有線又は無線により互いに接続されている。
仕分け装置10は、メインフレーム、ワークステーション等のコンピュータである。仕分け装置10は、商品を店舗毎に仕分け、番重への積込み方を搬送装置20に指示する。
搬送装置20は、アームを有する自走走行ロボット、ピッキングロボット等である。搬送装置20は、仕分け装置10の指示に従い商品を店舗別の番重に積込む。
図2は、仕分け装置10のハードウェア構成例を示すブロック図である。仕分け装置10は、CPU(Central Processing Unit)(決定部、順位付け部、変更部、第1取得部、第2取得部)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13及びハードディスク14を含む。また、仕分け装置10は、ディスクドライブ15、通信部16、表示部17及び操作部18を含む。仕分け装置10の各構成部は、バス10bを介して接続されている。
CPU11は、仕分け装置10の各構成部を制御する。CPU11は、ハードディスク14に記憶されたプログラム(コンピュータプログラム)10PをRAM13に読み出し、当該プログラム10Pを実行する。
ROM12は、不揮発性の半導体メモリ又は半導体メモリ以外の読み出し専用記憶媒体である。ROM12は、仕分け装置10の起動時にCPU11が実行するBIOS(Basic Input/Output System)、ファームウェア等を記憶している。
RAM13は、主記憶装置である。RAM13は、CPU11による処理の過程で必要な作業変数、データ等を一時的に記憶する。なお、RAM13は、フラッシュメモリ、メモリカード等により代替されてもよい。
ハードディスク14は、補助記憶装置である。ハードディスク14は、CPU11が実行するプログラム10Pを記憶している。ハードディスク14は、仕分け装置10の内部に取り付けられるものであっても、仕分け装置10の外部に置かれるものであってもよい。なお、ハードディスク14は、大容量の情報の記憶が可能なフラッシュメモリ、CD(Compact Disc)、DVD(Digital Versatile Disk)、BD(Blu−ray Disc、登録商標)等の光ディスク10dで代替されてもよい。
ディスクドライブ15は、外部の記憶媒体である光ディスク10dから情報を読み出し、読み出した情報を光ディスク10dに記録する記録装置である。
通信部16は、モデム又はLAN(Local Area Network)カード等である。通信部16は、受注管理システム3、食品製造システム4内の各構成部、仕分けシステム5及び配送便システム6と情報の送受信をする。仕分け装置10は、通信部16を介してインターネットにも接続されている。
表示部17は、例えば液晶ディスプレイ、有機EL(Electro-Luminescence)ディスプレイ等の画面を有し、CPU11からの指示に従って、プログラム10Pに係る様々な画面を表示する。
操作部18は、ユーザが各種の入力を行うキーボード、マウス、表示部17の画面に設けられたタッチパネル等の入力デバイスである。操作部18は、ユーザによる操作に基づいて入力信号を生成する。生成された入力信号は、バス10bを介してCPU11に出力される。
なお、CPU11は、ディスクドライブ15を介して、プログラム10Pを光ディスク10dから読み込んでもよい。CPU11は、通信部16を介して、プログラム10Pを外部の情報処理装置又は記憶装置から読み込んでもよい。さらに、プログラム10Pを記憶したフラッシュメモリ等の半導体メモリ10mが、仕分け装置10内に実装されていてもよい。
次に仕分け装置10が用いるデータベースについて説明する。図3は商品データベース141のレコードレイアウトの例を示す説明図である。商品データベース141は、例えばハードディスク14に記憶されている。商品データベース141は、商品コード列、商品名列、カテゴリー列、縦列、横列、高さ列、隙間列、重量列、形状列、積み重ね可否列、段数列の各列を含む。商品コード列は商品を一意に特定するコード(識別情報)を記憶する。商品名列は商品名を記憶する。カテゴリー列は商品のカテゴリーを示す記号、数字などを記憶する。例えば、弁当などの容器に入っていてつぶれにくい商品のカテゴリーをAとする。おにぎりなどの容器に入っていないが変形しにくい商品のカテゴリーをBとする。シュークリームなど容器に入っておらずつぶれやすい商品のカテゴリーをCとする。縦列は商品の縦の寸法値を記憶する。横列は商品の横の寸法値を記憶する。高さ列は商品の高さの寸法値を記憶する。隙間列は商品を番重に積込んだ際に、当該商品と隣の商品または番重の壁との間に設けるべき隙間の寸法値を記憶する。重量列は商品の重量を記憶する。形状列は商品の形状を示す記号、数字などを記憶する。例えば、商品が丸容器に入っていれば1、商品が長方形容器に入っていれば2、商品が丸おにぎりであれば3、商品が三角おにぎりであれば4、丸いお菓子であれば5、細長いお菓子であれば6とする。積み重ね可否列は商品を番重に積込む際に積み重ねても良いか否かを示す積み重ね可否フラグの値を記憶する。値1は積み重ねが可能であることを示す。値0は積み重ねができないことを示す。段数列は積み重ねが可能である場合に、積重ね可能な段数(許容段数)を記憶する。
図4は受注情報データベース142のレコードレイアウトの例を示す説明図である。受注情報データベース142は、例えばハードディスク14に記憶されている。受注情報データベース142は店舗コード列、商品コード列、受注数量列を含む。店舗コード列は受注情報に対応付けられた店舗、すなわち発注をした店舗のコードを記憶する。商品コード列は受注した商品のコードを記憶する。受注数量列は受注した数量を記憶する。
なお、商品データベース141、受注情報データベース142は、ハードディスク14に記憶されているとしたが、それに限らない。仕分け装置10以外の受注管理システム3や食品製造システム4に記憶されていても良いし、その他の仕分け装置10からアクセス可能なデータベース装置に記憶されていても良い。
次に仕分け装置10が行う情報処理について説明する。図5及び図6は仕分け処理の手順の一例を示すフローチャートである。仕分け装置10のCPU11は受注情報データベース142から受注情報を読込む(ステップS1)。CPU11は読込んだ受注情報を店舗コード毎に分け、処理対象とする店舗を選択する(ステップS2)。CPU11は商品を積込む番重の寸法を変数に設定する。CPU11は、変数Gに番重の縦寸法の値を、変数Hに番重の横寸法の値を、変数Iに番重の高さ寸法の値を設定する(ステップS3)。寸法はいずれも商品の収納スペースを規定する番重の内寸法である。CPU11は、食品製造システム4により製造され、店舗毎の仕分けを待っている商品の1つを選択する(ステップS4)。CPU11は、選択した商品の情報を読込む(ステップS5)。CPU11は選択した商品が処理対象店舗から受注した商品であるか否かを判定する(ステップS6)。CPU11は、選択した商品が受注した商品ではないと判定した場合(ステップS6でNO)、処理をステップS4に戻す。CPU11は、選択した商品が受注した商品であると判定した場合(ステップS6でYES)、商品の寸法を変数に設定する。CPU11は、変数Cに商品の縦寸法の値を、変数Dに商品の横寸法の値を、変数Eに商品の高さ寸法の値を、変数Fに商品の隙間寸法の値を、それぞれ設定する(ステップS7)。
CPU11は選択した商品を積込む個数(積込み数)を算出する(ステップS8)。この積込み数算出処理については、後述する。CPU11は残数があるか否か判定する(ステップS9)。すなわち、受注数分の商品が積込み可能であるか否か判定する。CPU11は残数があると判定した場合(ステップS9でYES)、番重を新たなものとし、番重の寸法を各変数に設定する(ステップS10)。この処理は上述のステップS3と同様な処理である。CPU11は処理をステップS8に戻す。
CPU11は残数がないと判定した場合(ステップS9でNO)、未処理の他の商品があるか否かを判定する(ステップS11)。CPU11は他の商品があると判定した場合(ステップS11でYES)、番重に余裕があるか否かを判定する(ステップS12)。CPU11は番重に余裕があると判定した場合(ステップS12でYES)、処理をステップS4に戻す。CPU11は番重に余裕がないと判定した場合(ステップS12でNO)、番重を新たなものとし、番重の寸法を各変数に設定する(ステップS13)。この処理は上述のステップS3及びステップS10と同様な処理である。CPU11は処理をステップS4に戻す。
CPU11は他の商品がないと判定した場合(ステップS11でNO)、積込み方法を搬送装置20に指示する(ステップS14)。CPU11は未処理の店舗又は処理が完了していない店舗があるか否かを判定する(ステップS15)。CPU11は未処理の店舗又は処理が完了していない店舗があると判定した場合(ステップS15でYES)、処理をステップS2に戻す。CPU11は未処理の店舗及び処理が完了していない店舗がないと判定した場合(ステップS15でNO)、仕分け処理を終了する。
なお、CPU11がステップS4を実行したときに、処理対象店舗に対応付けられたいずれの商品も製造が完了していない場合、CPU11は処理をステップS2に戻し、他の店舗についての処理を行っても良い。
また、処理対象店舗に対応付けられた一部の商品について、仕分け処理をしたものの、残りの商品については製造が完了しておらず、積込みができない場合は、当該店舗についての処理を中断し、仕分け処理の完了していない他の店舗の処理を行っても良い。
次に積込み数算出処理について説明する。図7及び図8は積込み数算出処理の手順の一例を示すフローチャートである。CPU11は積込み判定処理を行う(ステップS21)。図9から図15は積込み判定処理の手順の一例を示すフローチャートである。CPU11は、番重の横方向に商品の横方向を合わせた場合に、横方向に何個積込み可能であるかを算出する。番重の横寸法はH、商品の横寸法はDであり、隣接する商品間には寸法Fの隙間を設けるので、CPU11は式(1)により、Nc1を求める(ステップS41)。
Nc1=H div (D+F)・・・(1)
ここで演算子divは、除算した商の整数部を求める演算子である。A div B=Cは、AをBで除算した場合の商の値がCであることを示している。
CPU11はNc1が0より大きいかを判定する(ステップS42)。CPU11はNc1が0より大きいと判定した場合(ステップS42でYES)、式(2)が成り立つか否かを判定する(ステップS43)。
H mod (D+F)≧F・・・(2)
ここで演算子modは、除算の剰余を求める演算子である。A mod B=Dは、AをBで除算した余りがDであることを示している。
式(1)では複数商品の並列方向一端の商品と番重の側板との隙間は考慮されているが、他端の商品と番重の側壁との隙間は考慮されていないので、式(2)により他方の隙間を設けられるか否かを判定している。
CPU11は、式(2)が成り立つ場合(ステップS43でYES)、すなわち隙間を確保できる場合、処理をステップS45に進める。CPU11は、式(2)が成り立たない場合(ステップS43でNO)、すなわち隙間を確保できない場合は、横方向に積込む個数Nc1を減らす(ステップS44)。
CPU11は同様に、番重の横方向に商品の横方向を合わせた場合に、縦方向に何個積込み可能であるかを算出する。番重の縦寸法はG、商品の縦寸法はCであり、隣接する商品間には寸法Fの隙間を設けるので、CPU11は式(3)により、Nr1を求める(ステップS45)。
Nr1=G div (C+F)・・・(3)
CPU11はNr1が0より大きいかを判定する(ステップS46)。CPU11はNr1が0より大きいと判定した場合(ステップS46でYES)、式(4)が成り立つか否かを判定する(ステップS47)。
G mod (C+F)≧F・・・(4)
式(3)では複数商品の並列方向一端の商品と番重の側板との隙間は考慮されているが、他端の商品と番重の側壁との隙間は考慮されていないので、式(4)により他方の隙間を設けられるか否かを判定している。
CPU11は、式(4)が成り立つ場合(ステップS47でYES)、すなわち隙間を確保できる場合、処理をステップS49に進める。CPU11は、式(4)が成り立たな場合(ステップS47でNO)、すなわち隙間を確保できない場合は、縦方向に積込む個数Nr1を減らす(ステップS48)。
CPU11は横方向に積込める個数Nc1と、縦方向に積込める個数Nr1とを乗算し、商品の積込める個数N1を算出する(ステップS49)。CPU11はNc1が0以下と判定した場合(ステップS42でNO)、またはNr1が0以下と判定した場合(ステップS46でNO)、積込める個数N1を0に設定し(ステップS50)、処理をステップS70に移す。図16は積込み判定処理の途中結果の一例を示す説明図である。図16は商品を積込んだ番重の平面図を示している。図16に示す例では、左下から右方向及び左方向に商品を積込んだ場合を示している。図16の紙面上側部分、右側部分に余裕スペースがある。次に、CPU11は余裕スペースに商品の向きを替えて積込むことを試みる。
CPU11は余裕スペースの縦方向の寸法G’、横方向の寸法H’を算出する(ステップS51)。図17は番重の余裕スペースの一例を示す説明図である。図17は図16と同様な平面図である。図17の右上部分は2つの余裕スペースが重なる部分である。そのため、余裕スペースに商品の積込みを考える場合、重なる部分を図17Aに示すように縦長の余裕スペースに含めるときと、重なる部分を図17Bに示すように横長の余裕スペースに含めるときとを検討する必要がある。前者の処理から説明する。
CPU11は縦寸法がG’、横寸法がH−H’の余裕スペースにおいて、横方向に積込める商品の個数Nc11、縦方向に積込める商品の個数Nr11を算出する(ステップS52)。CPU11はNc11=0またはNr11=0であるか否かを判定する(ステップS53)。CPU11はNc11=0またはNr11=0であると判定した場合(ステップS53でYES)、処理をステップS56に移す。CPU11はNc11及びNr11が0でないと判定した場合(ステップS53でNO)、横方向の端に隙間が確保できるか否かを判定する(ステップS54)。CPU11は隙間が確保できると判定した場合(ステップS54でYES)、処理をステップS56に移す。CPU11は隙間が確保できないと判定した場合(ステップS54でNO)、個数Nc11を減らす(ステップS55)。
CPU11は縦寸法がG、横寸法がH’の余裕スペースにおいて、横方向に積込める商品の個数Nc12、縦方向に積込める商品の個数Nr12を算出する(ステップS56)。CPU11はNc12=0またはNr12=0であるか否かを判定する(ステップS57)。CPU11はNc12=0またはNr12=0であると判定した場合(ステップS57でYES)、処理をステップS60に移す。CPU11はNc12及びNr12が0でないと判定した場合(ステップS57でNO)、縦方向の端に隙間が確保できるか否かを判定する(ステップS58)。CPU11は隙間が確保できると判定した場合(ステップS58でYES)、処理をステップS60に移す。CPU11は隙間が確保できないと判定した場合(ステップS58でNO)、個数Nr12を減らす(ステップS59)。CPU11は2つの余裕スペースに積込める商品の個数N1’を算出する(ステップS60)。
つぎに、CPU11は、重なる部分を図17Bに示すように横長の余裕スペースに含めるときの処理を行う。CPU11は縦寸法がG’、横寸法がHの余裕スペースにおいて、横方向に積込める商品の個数Nc13、縦方向に積込める商品の個数Nr13を算出する(ステップS61)。CPU11はNc13=0またはNr13=0であるか否かを判定する(ステップS62)。CPU11はNc13=0またはNr13=0であると判定した場合(ステップS62でYES)、処理をステップS65に移す。CPU11はNc13及びNr13が0でないと判定した場合(ステップS62でNO)、横方向の端に隙間が確保できるか否かを判定する(ステップS63)。CPU11は隙間が確保できると判定した場合(ステップS63でYES)、処理をステップS65に移す。CPU11は隙間が確保できないと判定した場合(ステップS63でNO)、個数Nc13を減らす(ステップS64)。
CPU11は縦寸法がG−G’、横寸法がH’の余裕スペースにおいて、横方向に積込める商品の個数Nc14、縦方向に積込める商品の個数Nr14を算出する(ステップS65)。CPU11はNc14=0またはNr14=0であるか否かを判定する(ステップS66)。CPU11はNc14=0またはNr14=0であると判定した場合(ステップS66でYES)、処理をステップS69に移す。CPU11はNc14及びNr14が0でないと判定した場合(ステップS66でNO)、縦方向の端に隙間が確保できるか否かを判定する(ステップS67)。CPU11は隙間が確保できると判定した場合(ステップS67でYES)、処理をステップS69に移す。CPU11は隙間が確保できないと判定した場合(ステップS67でNO)、個数Nr14を減らす(ステップS68)。CPU11は2つの余裕スペースに積込める商品の個数N1’’を算出する(ステップS69)。
続いて、CPU11は、番重の横方向に商品の縦方向を合わせた場合に、横方向に何個積込み可能であるかを算出する。番重の横寸法はH、商品の縦寸法はCであり、隣接する商品間には寸法Fの隙間を設けるので、CPU11は式(5)により、Nc2を求める(ステップS70)。
Nc2=H div (C+F)・・・(5)
CPU11はNc2が0より大きいかを判定する(ステップS71)。CPU11はNc2が0より大きいと判定した場合(ステップS71でYES)、式(6)が成り立つか否かを判定する(ステップS72)。
H mod (C+F)≧F・・・(6)
式(5)では複数商品の並列方向一端の商品と番重の側板との隙間は考慮されているが、他端の商品と番重の側壁との隙間は考慮されていないので、式(6)により他方の隙間を設けられるか否かを判定している。
CPU11は、式(6)が成り立つ場合(ステップS72でYES)、すなわち隙間を確保できる場合、処理をステップS74に進める。CPU11は、式(6)が成り立たな場合(ステップS72でNO)、すなわち隙間を確保できない場合は、横方向に積込む個数Nc2を減らす(ステップS73)。
CPU11は同様に、番重の横方向に商品の縦方向を合わせた場合に、縦方向に何個積込み可能であるかを算出する。番重の縦寸法はG、商品の横寸法はDであり、隣接する商品間には寸法Fの隙間を設けるので、CPU11は式(7)により、Nr2を求める(ステップS74)。
Nr2=G div (D+F)・・・(7)
CPU11はNr2が0より大きいかを判定する(ステップS75)。CPU11はNr2が0より大きいと判定した場合(ステップS75でYES)、式(8)が成り立つか否かを判定する(ステップS76)。
H mod (D+F)≧F・・・(8)
式(7)では複数商品の並列方向一端の商品と番重の側板との隙間は考慮されているが、他端の商品と番重の側壁との隙間は考慮されていないので、式(8)により他方の隙間を設けられるか否かを判定している。
CPU11は、式(8)が成り立つ場合(ステップS76でYES)、すなわち隙間を確保できる場合、処理をステップS78に進める。CPU11は、式(8)が成り立たな場合(ステップS76でNO)、すなわち隙間を確保できない場合は、縦方向に積込む個数Nr2を減らす(ステップS77)。
CPU11は横方向に積込める個数Nc2と、縦方向に積込める個数Nr2とを乗算し、商品の積込める個数N2を算出する(ステップS78)。CPU11はNc2が0以下と判定した場合(ステップS71でNO)、またはNr2が0以下と判定した場合(ステップS75でNO)、積込める個数N2を0に設定し(ステップS80)、処理をステップS99に移す。
次に、図16と同様に、左下から右方向及び左方向に商品を積込みと、図16と同様に上側部分、右側部分に余裕スペースが残る。CPU11は余裕スペースに商品の向きを替えて積込みことを試みる。
CPU11は余裕スペースの縦方向の寸法G’’、横方向の寸法H’’を算出する(ステップS79)。上述と同様に、余裕スペースに商品の積込みを考える場合において、重なる部分を図17Aに示すように縦長の余裕スペースに含めるときと、重なる部分を図17Bに示すように横長の余裕スペースに含めるときとに分けて検討する。前者の処理から説明する。
CPU11は縦寸法がG’’、横寸法がH−H’’の余裕スペースにおいて、横方向に積込める商品の個数Nc21、縦方向に積込める商品の個数Nr21を算出する(ステップS81)。CPU11はNc21=0またはNr21=0であるか否かを判定する(ステップS82)。CPU11はNc21=0またはNr21=0であると判定した場合(ステップS82でYES)、処理をステップS85に移す。CPU11はNc21及びNr21が0でないと判定した場合(ステップS82でNO)、横方向の端に隙間が確保できるか否かを判定する(ステップS83)。CPU11は隙間が確保できると判定した場合(ステップS83でYES)、処理をステップS85に移す。CPU11は隙間が確保できないと判定した場合(ステップS83でNO)、個数Nc21を減らす(ステップS84)。
CPU11は縦寸法がG、横寸法がH’’の余裕スペースにおいて、横方向に積込める商品の個数Nc22、縦方向に積込める商品の個数Nr22を算出する(ステップS85)。CPU11はNc22=0またはNr22=0であるか否かを判定する(ステップS86)。CPU11はNc22=0またはNr22=0であると判定した場合(ステップS86でYES)、処理をステップS89に移す。CPU11はNc22及びNr22が0でないと判定した場合(ステップS86でNO)、縦方向の端に隙間が確保できるか否かを判定する(ステップS87)。CPU11は隙間が確保できると判定した場合(ステップS87でYES)、処理をステップS89に移す。CPU11は隙間が確保できないと判定した場合(ステップS87でNO)、個数Nr22を減らす(ステップS88)。CPU11は2つの余裕スペースに積込める商品の個数N2’を算出する(ステップS89)。
つぎに、CPU11は、重なる部分を図17Bと同様に横長の余裕スペースに含めるときの処理を行う。CPU11は縦寸法がG’’、横寸法がHの余裕スペースにおいて、横方向に積込める商品の個数Nc23、縦方向に積込める商品の個数Nr23を算出する(ステップS90)。CPU11はNc23=0またはNr23=0であるか否かを判定する(ステップS91)。CPU11はNc23=0またはNr23=0であると判定した場合(ステップS91でYES)、処理をステップS94に移す。CPU11はNc23及びNr23が0でないと判定した場合(ステップS91でNO)、横方向の端に隙間が確保できるか否かを判定する(ステップS92)。CPU11は隙間が確保できると判定した場合(ステップS92でYES)、処理をステップS94に移す。CPU11は隙間が確保できないと判定した場合(ステップS92でNO)、個数Nc23を減らす(ステップS93)。
CPU11は縦寸法がG−G’’、横寸法がH’’の余裕スペースにおいて、横方向に積込める商品の個数Nc24、縦方向に積込める商品の個数Nr24を算出する(ステップS94)。CPU11はNc24=0またはNr24=0であるか否かを判定する(ステップS95)。CPU11はNc24=0またはNr24=0であると判定した場合(ステップS95でYES)、処理をステップS98に移す。CPU11はNc24及びNr24が0でないと判定した場合(ステップS95でNO)、縦方向の端に隙間が確保できるか否かを判定する(ステップS96)。CPU11は隙間が確保できると判定した場合(ステップS96でYES)、処理をステップS98に移す。CPU11は隙間が確保できないと判定した場合(ステップS96でNO)、個数Nr24を減らす(ステップS97)。CPU11は2つの余裕スペースに積込める商品の個数N2’’を算出する(ステップS98)。
CPU11は、番重の横方向に商品の横方向を合わせた場合の商品を積込める個数N1が0であるか否かを判定する(ステップS99)。CPU11は個数N1が0であると判定した場合(ステップS99でYES)、処理をステップS103に移す。CPU11は個数N1が0でないと判定した場合(ステップS99でNO)、2つのパターンで検討した余裕スペースに積込める商品の個数について、いずれのパターンでの個数が多くなるか判定する(ステップS100)。CPU11は、一番目に検討したパターンでの個数N1’が、二番目に検討したパターンでの個数N1’’より大きいと判定した場合(ステップS100でYES)、商品を積込める個数N1にN1’を加算するともに、flag1を1に設定する(ステップS101)。CPU11は、二番目に検討したパターンでの個数N1’’が、一番目に検討したパターンでの個数N1’以上であると判定した場合(ステップS100でNO)、商品を積込める個数N1にN1’’を加算するとともに、flag1を2に設定する(ステップS102)。
CPU11は、番重の横方向に商品の縦方向を合わせた場合の商品を積込める個数N2が0であるか否かを判定する(ステップS103)。CPU11は個数N2が0であると判定した場合(ステップS103でYES)、処理をステップS107に移す。CPU11は個数N2が0でないと判定した場合(ステップS103でNO)、2つのパターンで検討した余裕スペースに積込める商品の個数について、いずれのパターンでの個数が多くなるか判定する(ステップS104)。CPU11は、一番目に検討したパターンでの個数N2’が、二番目に検討したパターンでの個数N2’’より大きいと判定した場合(ステップS104でYES)、商品を積込める個数N2にN2’を加算するとともに、flag2を1に設定する(ステップS105)。CPU11は、二番目に検討したパターンでの個数N2’’が、一番目に検討したパターンでの個数N2’以上であると判定した場合(ステップS104でNO)、商品を積込める個数N2にN2’’を加算するとともに、flag2を2に設定する(ステップS106)。
CPU11は、商品を積込める個数N1及びN2が0であるか否かを判定する(ステップS107)。CPU11は個数N1またはN2が0でないと判定した場合(ステップS107でNO)、N1はN2より大きいか否かを判定する(ステップS108)。CPU11はN1がN2より大きいと判定した場合(ステップS108でYES)、商品を積み決める個数の最大値Nとして、N1を設定するとともに、flagを1に設定する(ステップS109)。CPU11はN1がN2以下であると判定した場合(ステップS108でNO)、商品を積込める個数の最大値Nとして、N2を設定するとともに、flagを2に設定する(ステップS110)。
CPU11は、flagの値並びにflag1及びflag2の値を元に、番重に商品がどのように積込めるかを示すレイアウト情報をRAM13やハードディスク14に設けた一時領域に記憶する。それとともに、番重の縦寸法を示す変数G、横寸法を示す変数Hのそれぞれに、商品が積込まれない余裕スペースの縦寸法の値、横寸法の値に更新する(ステップS111)。CPU11は積込み判定処理を終了し、呼び出し元に処理を戻す。これにより、CPU11は、余裕スペースを擬似的な番重として扱い、以降の処理において、他の商品が積込み可能か否かを判定する。
図18は商品を積込み途上の番重の例を示す説明図である。図18は番重の平面図である。縦寸法G−G’、横寸法H−H’の矩形領域に商品P1が、縦寸法G、横寸法H’の矩形領域に商品P2が積込まれている。縦寸法G’、横寸法H−H’の矩形領域は、商品が未だ積込みされていない余裕スペースとなっている。
CPU11は個数N1及びN2が0であると判定した場合(ステップS107でYES)、商品を積込める個数Nを0に設定し(ステップS112)、呼び出し元に処理を戻す。
処理は図7のステップS22に移る。CPU11は積込み判定処理の結果、商品が積込み可能か否か判定する(ステップS22)。CPU11は商品を積込める個数Nが0であるか否かにより判定する。CPU11は積込み不可能、すなわち個数Nが0であると判定した場合(ステップS22でNO)、積込み数算出処理を終了し、処理を呼び出し元に戻す。
CPU11は積込み可能、すなわち個数Nが1以上であると判定した場合(ステップS22でYES)、選択した商品は積重ね可能か否か判定する(ステップS23)。この判定は、商品情報に含まれる積み重ね可否フラグにより行う。CPU11は積重ねが可能である、すなわち積み重ね可否フラグが1であると判定した場合(ステップS23でYES)、段数を2に設定する(ステップS24)。また、CPU11は、番重の高さ寸法を示す変数Iから商品の高さ寸法Eを減ずる。さらに、CPU11は、商品の残数から積込み可能数を減ずる。CPU11は、段数が積重ねの許容段数以下であるか否かを判定する(ステップS25)。この判定は、商品情報に含まれる段数の値を用いる。CPU11は、段数が許容段数以下であると判定した場合(ステップS25でYES)、商品を更に一段積む余裕が番重にあるか否かを判定する。すなわち、CPU11は、I−Eの値が0以上であるか否かを判定する(ステップS26)。CPU11は、商品を更に一段積む余裕が番重にある、I−Eの値が0以上であると判定した場合(ステップS26でYES)、残数が積込み可能数より大きいか否かを判定する(ステップS27)。CPU11は、残数が積込み可能数より大きい場合(ステップS27でYES)、残数より積込み可能数を減ずる(ステップS28)。CPU11は、Iの値からEを減じ、段数を1増やす(ステップS29)。CPU11は、処理をステップS25に戻す。
CPU11は、段数が許容段数を越えている判定した場合(ステップS25でNO)、または、商品を更に一段積む余裕が、番重にはないと判定した場合(ステップS26でNO)、段数を1減らし(ステップS32)、処理を呼び出し元に戻す。
CPU11は、残数が積込み可能数以下の場合(ステップS27でNO)、残数を0に設定する(ステップS30)。CPU11は、IからEを減ずる(ステップS31)。CPU11は段数を1減らし(ステップS32)、処理を呼び出し元に戻す。
CPU11は積重ねが可能ではない、すなわち積み重ね可否フラグが0であると判定した場合(ステップS23でNO)、残数が積込み可能数より大きいか否かを判定する(ステップS33)。CPU11は、残数が積込み可能数より大きい場合(ステップS33でYES)、残数より積込み可能数を減じ(ステップS34)、処理を呼び出し元に戻す。CPU11は、残数が積込み可能数以下である場合(ステップS33でNO)、残数を0に設定し(ステップS35)、処理を呼び出し元に戻す。
次に、積込み方法指示処理について説明する。図19は積込み数算出処理により求められた積込みレイアウトの一例を示す説明図である。図19は番重の平面図である。紙面左下の番重の角を原点に上下方向がY軸、それに交差する横方向がX軸とする。図19に示す例では、シュークリーム、ハンバーグ弁当、おにぎり・梅、幕の内弁当、おにぎり・鮭が積込むレイアウトが示されている。各商品が積込まれる領域は矩形であり、左下の点の座標値及び右上の点の座標値により規定する。また、番重は紙面左側がトラックの前側に向けられて、積載されるものとする。
図20は積込み領域データベース143のレコードレイアウトの一例を示す説明図である。積込み領域データベース143は、店舗コード列、便名列、番重No列、商品コード列、商品名列、個数列、座標1列、座標2列の各列を含む。店舗コード列は積込み領域に対応する店舗のコードを記憶する。便名列には積込み領域に対応する配送便の便名を記憶する。番重No列は、店舗毎、便名毎に付与された番重の続き番号を記憶する。商品コード列は、商品に対応したコードを記憶する。商品名列は積込む商品の名称を記憶する。個数列には、積込み領域に積込む商品の個数を記憶する。座標1列は、積込み領域を規定する左下座標の座標値を記憶する。座標2列は、積込み領域を規定する右上座標の座標値を記憶する。
図21は積込み方法指示処理の手順を示すフローチャートである。仕分け装置10のCPU11は処理対象としている店舗、便に対応する番重のうち、1つの番重を選択する(ステップS121)。CPU11は選択した番重に対応する積込み領域データを、積込み領域データベース143より読込む(ステップS122)。CPU11は読込んだ各積込み領域を規定する点のY座標を参照して、グループ分けを行う(ステップS123)。Y座標で分けるのは、トラックの減速により、番重に積込まれている商品は-X軸方向(前方向)に動き、前後方向に隣接する商品を圧迫するが、Y軸方向に隣接する商品にほとんど影響を与えないからである。
CPU11は1つのグループを選択する(ステップS124)。CPU11は選択したグループ内の積込み領域をX座標でソートする(ステップS125)。CPU11はソート結果と各積込み領域のX座標とを元に、サブグループ分けを行う(ステップS126)。
CPU11は、グループ内の各積込み領域と対応付けられた商品のカテゴリーにより、ソートを行う(ステップS127)。当該ソートでは、つぶれにくいものから、つぶれやすいものの順になるように、ソートをする。実施の形態1では、カテゴリーA、B、Cの順となるようにソートする。
サブグループでは、サブグループに含まれる商品のうち、比較する商品よりもつぶれやすい商品があれば、サブグループを前、比較する商品を後ろにする。また、サブグループに含まれる商品のうち、比較する商品よりもつぶれにくい商品があれば、比較する商品を前、サブグループを後ろにする。
CPU11はソートの結果に基づいて、積込み領域データベース143に記憶されている座標の更新を行う(ステップS128)。CPU11は未処理のグループがあるか否かを判定する(ステップS129)。CPU11は未処理のグループがあると判定した場合(ステップS129でYES)、処理をステップS124へ戻す。CPU11は未処理のグループがないと判定した場合(ステップS129でNO)、未処理の番重があるか否かを判定する(ステップS130)。CPU11は未処理の番重があると判定した場合(ステップS130でYES)、処理をステップS121へ戻す。CPU11は未処理の番重がないと判定した場合(ステップS130でNO)、積込み方法を出力し(ステップS131)、処理を呼び出し元に戻す。積込み方法の出力は、例えば、積込み領域データベース143の内容を搬送装置20に送信することである。商品の番重の積込みを搬送装置20ではなく、人が行う場合には、積込み領域データベース143に基づき、番重内での配置を画面表示等すれば良い。
次に、積込み方法指示処理の内容を図19に示したレイアウトを例に説明する。図22は積込み方法指示処理後の積込みレイアウトの一例を示す説明図である。図23は積込み方法指示処理後の積込み領域データベース143の一例を示す説明図である。
CPU11は番重No1の番重を選択する(ステップS121)。CPU11は積込み領域データベース143より、選択した番重の積込み領域データを読込む(ステップS122)。読込まれるのは図20に示した5レコードである。CPU11はY座標で、グループ分けをする(ステップS123)。図19に示したレイアウトの場合、2つのグループに分けられる。一方のグループ(グループ1と記す)は、シュークリームの積込み領域A11(領域A11と記す)、ハンバーグ弁当の積込み領域A12(領域12と記す)からなる。他方のグループ(グループ2と記す)は、おにぎり・梅の積込み領域A21(領域A21と記す)、おにぎり・鮭の積込み領域A22(領域A22と記す)、幕の内弁当の積込み領域A23(領域A23と記す)からなる。
CPU11はグループ1を選択する(ステップS124)。CPU11はグループ1の積込み領域をX座標でソートする(ステップS125)。領域A11、領域A12の順となる。CPU11はサブグループ分けを行う(ステップS126)が、サブグループとグループ1と同一となる。CPU11は領域A11、A12をカテゴリーでソートする(ステップS127)。領域A11はシュークリームが対応するから、カテゴリーはCである。領域A12はハンバーグ弁当が対応するから、カテゴリーAである。よって、ソートにより、領域A12、A11の順となる。CPU11は座標を更新する(ステップS128)。
グループ2が未処理であるので、CPU11はステップS129でYESと判定し、ステップS124でグループ2を選択する。CPU11はグループ2の領域をX座標でソートする(ステップS125)。その結果、おにぎり・梅の積込み領域A21(領域A21と記す)、幕の内弁当の積込み領域A23(領域A23と記す)、おにぎり・鮭の積込み領域A22(領域A22と記す)の順となる。CPU11は領域A21を1つのサブグループ、領域A22と領域A23をもう一つのサブグループに分ける(ステップS126)。
CPU11はカテゴリーによるソートをする(ステップS127)。領域A21はおにぎり・梅が対応するからカテゴリーはB、領域A22はおにぎり・鮭が対応するからカテゴリーはB、領域A23は幕の内弁当が対応するからカテゴリーはAである。領域A21と領域A22は共にカテゴリーがBであるから、入れ替えは不要であるが、領域A23はカテゴリーAであるから、A21との入れ替えが必要である。そして、領域A22は領域A23と同じサブグループに属するから、領域A22も入れ替え対象となる。ソートの結果、領域A22、領域A23、領域A21の順となる。CPU11はソートの結果にしたがって、積込み領域データベース143を更新する(ステップS128)。未処理のグループがないので、CPU11はステップS129をNOと判定し、ステップS130以降の処理を行う。
積込み方法指示処理により、図19に示したレイアウトは図22に示したレイアウトとなる。シュークリームの積込み領域A11とハンバーグ弁当の積込み領域A12とは、位置が入れ替わっている。また、おにぎり・梅の積込み領域A21と、おにぎり・鮭の積込み領域A22及び幕の内弁当の積込み領域A23とは、位置が入れ替わっている。そして、図20に示した積込み領域データベース143も更新され、図23に示す座標に更新される。
実施の形態1の仕分け装置10は、以下の効果を奏する。番重内において、つぶれにくい商品をトラックの前側となる位置に積込み、つぶれやすい商品をトラックの後側となる位置に積込むよう、搬送装置20に指示する。それにより、トラックでの配送時に、トラックが危険回避の急ブレーキに起因する減速により、番重内で商品が移動したとしても、商品がつぶれてしまうという不具合の発生を抑制することが可能となる。
実施の形態2
実施の形態2では、店舗毎の番重に商品を積込む際、積込みすべき商品の全ての製造が完了していると想定する。実施の形態2における食品システム1の構成、仕分け装置10のハードウェア構成は、実施の形態1と同様であるから、説明を省略する。また、仕分け装置10で行われる処理は、一部を除いて、実施の形態1と同様であるから、以下の説明においては、主に異なる点を説明する。
図24及び図25は、仕分け処理の手順の一例を示すフローチャートである。図24及び図25において、図4及び図5に示した処理と同様な処理については、同一の符号を振っている。仕分け装置10のCPU11は、処理店舗の選択(ステップS2)後、選択した店舗に配送される商品をカテゴリー毎に分ける(ステップS141)。CPU11は新規番重を設定(ステップS3)後、処理する商品のカテゴリーを選択する(ステップS142)。ここで、カテゴリーの選択はA、B、Cの順で行う。すなわち、つぶれにくい商品から積込みようにする。CPU11は選択したカテゴリーの商品についての商品情報を商品データベース141より読込む(ステップS143)。CPU11は選択したカテゴリーに含まれる商品の1つを選択し(ステップS144)、ステップS7以降の処理を行う。
CPU11は選択した商品の処理が完了したら、選択したカテゴリーに含まれている商品で未処理の他の商品があるか否かを判定する(ステップS145)。CPU11は未処理の他の商品があると判定した場合(ステップS145でYES)、ステップS12以降の処理を行う。CPU11は未処理の他の商品がないと判定した場合(ステップS145でNO)、未処理のカテゴリーがあるか否かを判定する(ステップS146)。CPU11は未処理のカテゴリーがあると判定した場合(ステップS146でYES)、処理をステップS142に戻す。
CPU11は未処理のカテゴリーがないと判定した場合(ステップS146でNO)、商品の重量に基づき、番重毎に積込み領域の再配置を行う(ステップS147)。この再配置の処理は、図21に示した積込み方法指示処理と同様である。図21のステップS127ではカテゴリーでソートしたが、再配置処理では、重量の降順にソートする。CPU11は積込み方法を出力する(図21のステップS131と同様)。CPU11は未処理店舗があるか否かを判定する(ステップS15)。CPU11は未処理店舗があると判定した場合(ステップS15でYES)、処理をステップS2に戻す。CPU11は未処理店舗がないと判定した場合(ステップS15でNO)、処理を終了する。
実施の形態2の仕分け装置10は、以下の効果を奏する。番重に積込むべき商品が全て揃った後に、カテゴリー毎に分けて積込み位置を定める。それにより、番重内において、つぶれにくい商品をトラックの前側となる位置に確実に積込み、配送時に商品がつぶれてしまうという不具合の発生を抑制することが可能となる。また、同一カテゴリー内でも重量によりソートを行うので、配送時に商品がつぶれてしまうという不具合の発生を、より確実に抑制することが可能となる。
上述の実施の形態1及び2においては、商品のカテゴリー数を3つにしたが、それに限られない。カテゴリー数は、2以上の任意の数で良い。また、商品のカテゴリーは、つぶれやすさの程度を観点に分けているが、それに限らない。商品の重量によりカテゴリー分けを行い、重い商品を前寄りに、軽い商品を後ろ寄りに配置するようにしても良い。このように、商品のカテゴリーは、番重内での商品の配置を決める場合に用いるものであれば、他の観点を採用することが可能である。
さらに、上述においては、商品は調理済み食品としたが、それに限らない。番重などの運搬容器に複数種類の商品を混載し、配送を行う場合において、運搬容器内での商品の配置に考慮が必要となる場合にも適用可能である。
また、上述においては、番重を直方体状の箱体であるとしたが、それに限らない。底板が楕円状や多角形状である番重でも良い。加えて、上述した、番重に積込み可能な商品数を求めるアルゴリズムは一例である。番重に積込み可能な商品数を求めることが可能な他のアルゴリズムも採用可能である。さらに、番重の形状に併せて適宜変更しても良い。
各実施例で記載されている技術的特徴(構成要件)はお互いに組合せ可能であり、組み合わせすることにより、新しい技術的特徴を形成することができる。
今回開示された実施の形態はすべての点で例示であって、制限的なものでは無いと考えられるべきである。本発明の範囲は、上記した意味では無く、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。