以下、箱入れ支援システムの一実施形態について、図1〜図18に基づいて詳細に説明する。
図1には、一実施形態に係る箱入れ支援システム100の構成が概略的に示されている。図1に示すように、箱入れ支援システム100は、箱入れ支援装置としてのサーバ10、小売店端末70、配送拠点システム60等を備える。なお、サーバ10と、小売店端末70とは、インターネットなどのネットワーク80に接続されており、サーバ10と配送拠点システム60とは、専用回線等により接続されている。なお、配送拠点システム60についても、ネットワーク80に接続されていてもよい。
なお、本実施形態においては、箱入れ支援システム100では、小売店端末70からサーバ10に対してタバコや葉巻などの商品の注文情報が入力された場合に、サーバ10は配送拠点に設置された配送拠点システム60に対して、どの箱にどの商品を入れるべきかを示す情報(箱入れ指示データ)を送信する。そして、配送拠点システム60は、受信した情報を表示等することで、配送拠点の作業者に対し、商品の箱入れ作業を支援する情報を提供する。
小売店端末70は、タバコや葉巻を販売する小売店の従業員が利用可能な端末であり、従業員から入力されるタバコや葉巻の注文情報(仕入情報)をサーバ10に対して送信する。小売店端末70は、PC(Personal Computer)や携帯電話、スマートフォンなどであり、図2(a)に示すようなハードウェア構成を有する。図2(a)に示すように、小売店端末70は、CPU(Central Processing Unit)190、ROM(Read Only Memory)192、RAM(Random Access Memory)194、記憶部(ここではHDD(Hard Disk Drive))196、ネットワークインタフェース197、表示部193、入力部195、及び可搬型記憶媒体191に格納された情報を読み取り可能な可搬型記憶媒体用ドライブ199等を備えている。これら小売店端末70の構成各部は、バス198に接続されている。
配送拠点システム60は、PCなどを含み、図2(a)に示すような小売店端末70と同様のハードウェア構成を有する。図2(a)に示すように、配送拠点システム60は、CPU190、ROM192、RAM194、記憶部(ここではHDD)196、ネットワークインタフェース197、表示部193、入力部195、及び可搬型記憶媒体191に格納された情報を読み取り可能な可搬型記憶媒体用ドライブ199等を備えている。これら配送拠点システム60の構成各部は、バス198に接続されている。
ここで、配送拠点システム60は、全国各地に点在する配送拠点に設けられるシステムである。配送拠点では、タバコや葉巻の在庫をカートン単位で管理しており、小売店からの注文に基づいて、作業者が形状や大きさの異なるカートンを箱入れし、小売店に向けて発送する。各配送拠点には、図3に示すような設備が設けられている。具体的には、各配送拠点には、箱を搬送するベルトコンベア62と、タバコや葉巻を銘柄別に収納する棚64とが設けられている。また、棚64の各銘柄が収納される位置の近傍それぞれには、表示部193が設けられており、表示部193には、入力部195(タッチパネル)が設けられている。配送拠点システム60は、サーバ10から送信されてくる箱入れ指示データに基づいて、箱に商品を何個(何カートン)入れるべきかを示す情報を表示部193に表示する。配送拠点の作業者は、表示部193に表示された情報に従って作業を行い、作業完了後に入力部195を操作することで作業完了情報を入力する。
サーバ10は、小売店端末70において入力されたタバコや葉巻などの商品の注文情報を受信し、該注文情報に基づいて、配送拠点を特定し、配送拠点に送信すべき箱入れ指示データを作成する。また、サーバ10は、特定した配送拠点の配送拠点システム60に対して、作成した箱入れ指示データを送信する。図2(b)には、サーバ10のハードウェア構成が示されている。図2(b)に示すように、サーバ10は、CPU90、ROM92、RAM94、記憶部(HDD)96、ネットワークインタフェース97、及び可搬型記憶媒体用ドライブ99等を備えている。これらサーバ10の構成各部は、バス98に接続されている。CPU90は、ROM92あるいはHDD96に格納されているプログラム(箱入れ支援プログラムを含む)、或いは可搬型記憶媒体用ドライブ99が可搬型記憶媒体91から読み取ったプログラム(箱入れ支援プログラムを含む)を実行することにより、サーバ10を、図4の注文受付部12、指示作成部14、及び出力部16として機能させる。なお、図4には、HDD96等に格納されている各種DB(database)、及びテーブルも図示されている。
注文受付部12は、小売店端末70において入力されたタバコや葉巻などの商品の注文情報を受信し、拠点DB20や銘柄DB24を参照して注文情報を整理し、注文管理テーブル22に格納する。
指示作成部14は、注文管理テーブル22に基づいて、配送拠点システム60に送信すべき箱入れ指示データを作成する。なお、指示作成部14は、箱入れ指示データを作成する際に、棚DB30や箱DB32を参照したり、注文管理テーブル22や残空間管理テーブル26、配置位置管理テーブル28を利用したりする。
出力部16は、指示作成部14が作成した箱入れ指示データを配送拠点システム60に対して送信する。
なお、図4の各種DBやテーブルの詳細については後述する。
(サーバ10の処理について)
次に、サーバ10の処理について、詳細に説明する。
図5には、サーバ10の全体処理がフローチャートにて示されている。図5においては、ステップS12の注文受付、整理処理と、ステップS14の箱入れ指示作成処理と、が実行される。以下、各処理について説明する。
(注文受け付け、整理処理(S12))
注文受付、整理処理(S12)においては、図6のフローチャートに沿った処理が実行される。図6の処理では、まず、ステップS20において、注文受付部12が、小売店端末70から注文情報を受け付けるまで待機する。なお、小売店の従業員は、小売店端末70において、仕入れるべき銘柄の個数(カートン数)を入力するものとする。小売店端末70から注文する銘柄とカートン数とを含む注文情報が送信されてくると、注文受付部12は、ステップS22に移行する。ステップS22では、注文受付部12は、小売店IDと注文情報を取得する。
次いで、ステップS24では、注文受付部12は、小売店IDに基づいて、小売店の住所を特定する。この場合、予め、小売店IDと小売店の住所とが関連付けられた小売店DBを用意しておくことで、注文受付部12は、小売店DBの情報と小売店IDとから小売店の住所を特定することができる。
次いで、ステップS26では、注文受付部12は、小売店の住所に基づいて、拠点コードを特定する。この場合、注文受付部12は、拠点DB20を参照する。ここで、拠点DB20は、図7(a)に示すように、「住所群」及び「拠点コード」の各フィールドを有する。「住所群」のフィールドには、拠点が共通する範囲に含まれる都道府県名が格納され、「拠点コード」のフィールドには、拠点の識別情報が格納される。なお、「住所群」のフィールドには、市町村名や地域名等が格納されてもよい。図7(a)の拠点DB20によれば、例えば、小売店の住所が「B県」であったとすると、拠点コードとして「S01」が特定されることになる。
次いで、ステップS28においては、注文受付部12が、注文管理テーブル22を更新する。ここで、注文管理テーブル22は、図7(b)に示すようなデータ構造を有している。具体的には、注文管理テーブル22は、「小売店ID」、「拠点コード」、「注文銘柄」、「全長(L)」、「全幅(W)」、「全高(H)」、「未割り当て体積」、「割り当て済体積」の各フィールドを有する。
「小売店ID」のフィールドには、ステップS22で取得した小売店IDが格納され、「拠点コード」のフィールドには、ステップS26で特定された拠点コードが格納される。「注文銘柄」のフィールドには、ステップS22で取得された注文情報に含まれる銘柄の情報が格納される。なお、注文情報に複数の銘柄が含まれている場合には、図7(b)に示すように、縦方向(列方向)に複数の銘柄(a,b…)が格納される。
「全長(L)」、「全幅(W)」、「全高(H)」のフィールドには、各銘柄を一纏めにした場合のサイズが格納される。ここで、注文受付部12は、サイズを格納する際に、図7(c)の銘柄DB24を参照する。銘柄DB24には、各銘柄1カートンの「長さ(L)」、「幅(W)」、「高さ(H)」が格納されている。したがって、注文受付部12は、銘柄DB24の各サイズと、各銘柄が何カートン注文されたかの情報と、に基づいて、注文管理テーブル22の「全長(L)」、「全幅(W)」、「全高(H)」の各フィールドに値を格納する。なお、1カートンが図8(a)に示すような形状を有する銘柄が、複数カートン注文される場合がある。この場合、注文受付部12は、図8(b)に示すように最も面積が大きい面を接触させて複数カートンを纏め、そのときのサイズの情報を「全長(L)」、「全幅(W)」、「全高(H)」の各フィールドに格納するものとする。このようにすることで、図8(c)に示すように面積の小さい面を接触させるような場合と比べ、「全長(L)」、「全幅(W)」、「全高(H)」のいずれかのサイズが極端に大きくなるのを抑制することができる。
図7(b)に戻り、「未割り当て体積」のフィールドには、「全長(L)」、「全幅(W)」、「全高(H)」の値を積算した値が格納される。「割り当て済体積」のフィールドには、ステップS28の時点では、0が格納される。
上記のようにして、図6のステップS28の処理が終了すると、図6の全処理を終了し、図5のステップS14に移行する。
(箱入れ指示作成処理(S14))
次に、指示作成部14による、箱入れ指示作成処理(S14)について説明する。箱入れ指示作成処理においては、図9のフローチャートに沿った処理が実行される。
ステップS30では、指示作成部14が、注文管理テーブル22の最新のレコードを対象レコードとして読み込む。一例として、指示作成部14は、図7(b)の小売店ID=K01のレコードを対象レコードとして読み込んだものとする。
次いで、ステップS32では、指示作成部14が、小売店別箱入れ指示作成処理を実行する。ステップS32の処理の結果、小売店別の箱入れ指示データが作成されると、次のステップS34では、出力部16が、対応する配送拠点システム60に対して箱入れ指示データを送信する。その後、図9の処理及び図5の全処理が終了する。
(小売店別箱入れ指示作成処理(S32))
以下、図10、図13〜図15のフローチャートに沿って、小売店別箱入れ指示作成処理(S32)について詳細に説明する。
図10の処理では、まず、ステップS40において、指示作成部14が、使用するテーブルを初期化する。具体的には、図11(a)に示す残空間管理テーブル26及び図11(b)に示す配置位置管理テーブル28を初期化する(全フィールドを空白にする)。なお、図11(a)の上下2つのテーブルは、残空間管理テーブル26の推移例を示しており、図11(b)の上下2つのテーブルは、配置位置管理テーブル28の推移例を示している。
ここで、残空間管理テーブル26は、箱の中に商品を配置するシミュレーションを行う場合の、箱の中に存在する空間を管理するテーブルである。具体的には、残空間管理テーブル26は、図11(a)に示すように、「小売店ID」、「箱ID」、「箱コード」、「残容積」、「残空間番号」、「残空間座標」、「残空間容積」の各フィールドを有する。「小売店ID」のフィールドには、小売店の識別情報が格納され、「箱ID」のフィールドには、箱に割り振られる識別番号が格納され、「箱コード」のフィールドには、箱の種類を示すコードが格納される。なお、箱IDは、同一の小売店に対して同一の種類の箱を割り当てる場合にも、各箱を識別できるようにするために設けられている。「残容積」のフィールドには、シミュレーションが行われている間の、箱内に存在する全ての空間(残空間)の容積の合計が格納される。また、「残空間番号」には、シミュレーションが行われている間の箱内の空間(残空間)に付された識別番号が格納される。なお、残空間は、箱内の空間を直方体状に区切った範囲それぞれを意味する。また、「残空間座標」のフィールドには、各残空間の座標(例えば、残空間(直方体状の空間)の中心を挟んで対向する2点の座標)が格納される。「残空間容積」のフィールドには、各残空間の容積が格納される。
また、配置位置管理テーブル28は、箱の中に商品を配置するシミュレーションを行った場合の、商品の配置位置を管理するテーブルである。配置位置管理テーブル28は、図11(b)に示すように、「小売店ID」、「箱ID」、「箱コード」、「配置空間番号」、「配置空間座標」、「銘柄名/数」の各フィールドを有する。「小売店ID」、「箱ID」及び「箱コード」のフィールドは、図11(a)と同様である。「配置空間番号」のフィールドには、シミュレーションにおいて銘柄を配置した空間(直方体状の範囲)に付された識別番号が格納される。また、「配置空間座標」のフィールドには、各配置空間の座標(例えば、配置空間(直方体状の空間)の中心を挟んで対向する2点の座標)が格納される。「銘柄名/数」のフィールドには、配置空間に配置した銘柄の名称と数(カートン数)が格納される。
次いで、ステップS42では、指示作成部14は、対象レコードを参照して、注文された銘柄(注文銘柄)の数(種類数)をNmaxとする。例えば、図7(b)の注文管理テーブル22において、3つの銘柄が注文されたという内容が格納されていた場合には、Nmax=3とする。
次いで、ステップS44では、指示作成部14は、未割り当て体積の合計を算出する。この場合、図7(b)の注文管理テーブル22のうち、対象レコードの未割り当て体積Ma,Mb…を合計する。
次いで、ステップS46では、指示作成部14は、配送拠点の銘柄並び順を取得する。この場合、指示作成部14は、図12(a)の棚DB30を参照して、対象レコードの拠点コードに対応する銘柄並び順を取得する。なお、棚DB30においては、拠点コードと銘柄並び順が対応付けられている。銘柄並び順は、例えば「a,b/c,d/e,f/g,h/i,j」のように表現される。この例の場合、箱の搬送方向手前側から、5人の作業員が並んでおり、1人目の作業員が銘柄aと銘柄b、2人目の作業員が銘柄cと銘柄d、…5人目の作業員が銘柄iと銘柄jを箱入れするという情報が格納されている。なお、銘柄aとbのように「,」で区切られた銘柄は、棚の上下に並んで配置されている銘柄を意味している。なお、銘柄の並び順は、箱の搬送方向手前側に位置するほど箱に入れる順番が早いことを意味している。
次いで、ステップS46では、指示作成部14は、取得した銘柄並び順に合わせて、注文管理テーブル22の対象レコードに含まれる注文銘柄を並べ替える。例えば、図7(b)の対象レコードの拠点コード=S02については、図12(a)の棚DB30では、銘柄bの方が銘柄aよりも前に並んでいるので、対象レコードの注文銘柄aと注文銘柄bの順番を入れ替える。
次いで、ステップS48では、指示作成部14は、棚の上下に並んだ銘柄の注文有無をチェックする。次いで、ステップS50では、指示作成部14が、ステップS48のチェックの結果、上下に並んだ銘柄の注文があったか否かを判断する。このステップS50の判断が否定された場合には、注文銘柄の並び順を変更することなくステップS54に移行するが、肯定された場合には、ステップS52に移行する。
ステップS52では、指示作成部14は、上下に並ぶ注文銘柄を、未割り当て体積の大きい方を先、小さい方を後に並べる。その後は、ステップS54に移行する。なお、本実施形態では、ステップS46やステップS52を経た結果、図7(b)の並び順から銘柄bとaの順番のみが入れ替わったものとして説明する。
ステップS54に移行すると、指示作成部14は、処理対象の注文銘柄を示すパラメータNを1に設定する。次いで、ステップS56では、指示作成部14は、箱割り当て処理を実行する。この箱割り当て処理においては、処理対象(N番目)の注文銘柄を箱のどの位置にどのような姿勢で割り当てる(配置する)べきかを決定する処理である。このステップS56の具体的な処理については、後述する。
ステップS56において処理対象(N番目)の注文銘柄の配置が決まった後は、ステップS58に移行し、指示作成部14は、Nを1インクリメントする(N=N+1)。次いで、ステップS60では、指示作成部14は、未割り当て体積の合計が0になったか、又は全ての処理対象の注文銘柄の箱内への割り当てが終了したか否か(N>Nmax?)を判断する。このステップS60の判断が否定された場合には、ステップS56に戻るが、肯定された場合には、図10の処理を終了し、図9のステップS34に移行する。
(箱割り当て処理(S56))
ここで、箱割り当て処理(S56)について、図13のフローチャートに沿って詳細に説明する。
図13の処理では、まず、ステップS70において、指示作成部14は、図7(b)の注文管理テーブル22からN番目の注文銘柄の未割り当て体積を取得する。図7(b)の例では、並べ替えの結果、注文銘柄bが1番目になっているので、1番目の未割り当て体積として、Mbを取得する。次いで、ステップS72では、指示作成部14は、箱の残容積を取得する。なお、ステップS72を最初に実行する場合には、箱が未だ決まっていないため、残容積としては0を取得する。
次いで、ステップS73では、指示作成部14は、箱IDごとに、N番目の注文銘柄を割り当てた場合に箱の許容値を超えるか否かを判断する。具体的には、指示作成部14は、箱IDごとに、配置位置管理テーブル28の銘柄名/数に基づいて注文管理テーブル22の割り当て済体積を算出する。そして、指示作成部14は、算出した割り当て済み体積にN番目の注文銘柄の未割り当て体積を加算した値が、箱DB32で定義されている箱コードに対応する許容値を超えているか否かを判断する。いずれかの箱において許容値を超えていないと判断されれば、ステップS73の判断は否定され、ステップS74に移行する。一方、全ての箱において許容値を超えていると判断されれば、ステップS73の判断は肯定され、ステップS78に移行する。なお、ステップS72において残容積=0が取得された場合には、ステップS73の判断が否定され、ステップS78に移行する。
ステップS74に移行すると、指示作成部14が、ステップS72で取得した残容積と、ステップS70で取得した未割り当て体積とを比較する。次いで、ステップS76では、残容積が未割り当て体積よりも大きいか否かを判断する。このステップS76の判断が肯定された場合には、ステップS80に移行するが、否定された場合には、ステップS78に移行する。
ステップS78に移行すると、指示作成部14は、新箱準備処理を実行する。
(新箱準備処理(S78))
新箱準備処理においては、図14のフローチャートに沿った処理が実行される。図14の処理では、まず、ステップS120において、指示作成部14は、対象レコードの未割り当て体積の総合計を算出する。この場合、指示作成部14は、図7(b)の対象レコードの未割り当て体積を取得し、合計する。
次いで、ステップS122では、指示作成部14は、配送拠点で用意されている箱の許容積を取得する。この場合、図12(b)に示す箱DB32を参照し、各箱の許容積(AC)を取得する。ここで、図12(b)の箱DB32には、各箱の「箱コード」、「長さ(L)」、「幅(W)」、「高さ(H)」、「容積(C)」が格納されている。また、容積(C)に所定の梱包率(例えば、60%)が積算された値が、「許容積(AC)」として格納されている。なお、指示作成部14は、各箱の許容積(AC)として、HAC01,HAC02,HAC03を取得したものとする。ここで、取得した許容積の間には、HAC01>HAC02>HAC03の関係があるものとする。
次いで、ステップS124では、指示作成部14が、未割り当て体積の総合計がHAC02よりも大きいか否かを判断する。ここでの判断が肯定された場合には、ステップS126に移行し、指示作成部14は、残空間管理テーブル26に、箱コードH01の新レコードを設定する。具体的には、図11(a)の上側のテーブルのように、残空間管理テーブル26に小売店ID、箱ID、箱コードを格納する。また、残容積として、箱H01の容積=HC01を格納し、残空間番号1の残空間座標として、箱全体を示す座標範囲を格納し、残空間番号1の残空間容積として残容積と同一の値を格納する。次いで、ステップS128では、指示作成部14は、配置位置管理テーブル28を更新する。具体的には、図11(b)の上側のテーブルのように、配置位置管理テーブル28に小売店ID、箱ID、箱コードを格納する。なお、図11(b)の配置位置管理テーブル28のその他のフィールドは空のままとする。ステップS128の後は、図13のステップS72に戻る。
一方、ステップS124の判断が否定された場合には、ステップS130に移行し、未割り当て体積の総合計がHAC03よりも大きいか否かを判断する。ここでの判断が肯定された場合には、ステップS132に移行し、指示作成部14は、残空間管理テーブル26に、箱コードH02の新レコードを設定する。また、ステップS128では、指示作成部14は、配置位置管理テーブル28を箱コードH02で更新する。その後は、図13のステップS72に戻る。これに対し、ステップS130の判断が否定された場合には、ステップS134に移行し、指示作成部14は、残空間管理テーブル26に、箱コードH03の新レコードを設定する。また、ステップS128では、指示作成部14は、配置位置管理テーブル28を箱コードH03で更新する。その後は、図13のステップS72に戻る。
なお、図14の処理では、箱を決定する際に、箱の許容積(例えば、容積の60%)よりも商品の体積が小さくなるように箱を決定する。すなわち、本実施形態では、注文銘柄の体積の合計と1より大きい所定値との積よりも大きい容積を有する箱を箱入れに使用する箱として決定しているといえる。
図13に戻り、ステップS72に移行すると、指示作成部14は、残容積を図11(a)の残空間管理テーブル26から取得する。次いで、指示作成部14は、ステップS74において、残容積と、未割り当て体積とを比較し、残容積の方が大きい場合(ステップS76:肯定)には、ステップS80に移行する。
ステップS80に移行すると、指示作成部14は、残空間容積を取得する。なお、図11(a)の残空間管理テーブル26に残空間容積が複数存在する場合には、指示作成部14は残空間管理テーブル26に存在する全ての残空間容積を取得する。
次いで、ステップS82では、指示作成部14が、未割り当て体積よりも大きい残空間容積があるか否かを判断する。このステップS82の判断が否定された場合には、ステップS78(新箱準備処理)に移行するが、肯定された場合には、ステップS84に移行する。
ステップS84に移行すると、指示作成部14は、残空間容積が大きい順に、配置可能チェック対象候補の残空間とし、その数をFmaxとする。なお、図11(a)の上側の例では、Fmaxは1となる。
次いで、ステップS86では、指示作成部14は、配置可能チェック対象候補の順番を示すパラメータFを1に設定し、ステップS88の配置可能チェック処理に移行する。
(配置可能チェック処理(S88))
配置可能チェック処理(S88)においては、図15のフローチャートに沿った処理が実行される。
図15の処理では、まず、ステップS150において、指示作成部14が、N番目の注文銘柄のサイズを図7(b)の注文管理テーブル22から読み込む。次いで、ステップS152では、指示作成部14が、F番目の配置可能チェック対象の残空間座標を読み込む。この場合、F=1であれば、指示作成部14は、図11(a)の残空間管理テーブル26の残空間番号1の残空間座標を読み込む。
次いで、ステップS154では、指示作成部14は、読み込んだN番目の注文銘柄のサイズが、読み込んだ残空間座標にそのまま入るか否かを判断する。このステップS154の判断が肯定された場合には、ステップS156に移行し、配置可能チェック結果がOKであったと判定する。
一方、ステップS154の判断が否定された場合、すなわち、そのままの向きでは注文銘柄が残空間座標に入らない場合には、ステップS158に移行し、指示作成部14は、長さ(L)と幅(W)を入れ換える。そして、指示作成部14は、ステップS160において、残空間座標に注文銘柄のサイズが入るか否かを判断する。このステップS160の判断が肯定された場合には、ステップS156に移行するが、否定された場合には、ステップS162に移行する。
ステップS162に移行すると、指示作成部14は、長さ(L)と高さ(H)を入れ換える。そして、指示作成部14は、ステップS164において、残空間座標に注文銘柄のサイズが入るか否かを判断する。このステップS164の判断が肯定された場合には、ステップS156に移行するが、否定された場合には、ステップS166に移行する。ステップS166に移行した場合、N番目の注文銘柄は、向きをどのように変更しても残空間座標に入れることができないため、配置可能チェック結果がNGであったと判定する。その後は、図15の全処理を終了して、図13のステップS90に移行する。
一方、ステップS156において、配置可能チェック結果がOKであると判定された場合には、次のステップS168において、指示作成部14は、箱の内壁側に近い箇所にN番目の注文銘柄を配置した場合の配置空間座標を求める。そして、次のステップS170では、指示作成部14は、ステップS168で求めた配置空間座標を用いて配置位置管理テーブル28を更新する。この場合、指示作成部14は、図11(b)の上側の配置位置管理テーブル28のように、「配置空間座標」のフィールドに配置空間座標を格納するとともに、「銘柄名/数」のフィールドにN番目の注文銘柄の銘柄名と数とを格納する。上記のように、ステップS170までの処理が終了すると、図15の処理を終了し、図13のステップS90に移行する。
図13に戻り、ステップS90に移行すると、指示作成部14は、ステップS88の配置可能チェック処理のチェック結果がOKであったか否かを判断する。このステップS90の判断が肯定された場合(OKの場合)には、ステップS100に移行するが、否定された場合(NGの場合)には、ステップS92に移行する。
ステップS92に移行すると、指示作成部14は、配置可能チェック対象候補の残空間の順番を示すパラメータFを1インクリメントする(F=F+1)。次いで、ステップS94では、FがFmaxよりも大きいか否かを判断する。ここでの判断が否定された場合には、ステップS88に戻り、次の配置可能チェック対象候補の残空間にN番目の注文銘柄が入るか否かを上記と同様にチェックする。そして、全ての配置可能チェック対象候補の残空間についてのチェックを行ったにもかかわらず、全てのチェック結果がNGとなった場合には、ステップS94の判断が肯定されて、ステップS96に移行する。なお、ステップS96の処理については後述する。
ここで、ステップS90の判断が肯定された場合について説明する。配置可能チェック処理のチェック結果がOKとなり、ステップS90の判断が肯定されると、指示作成部14は、ステップS100に移行する。ステップS100では、指示作成部14は、図7(b)の注文管理テーブル22のN番目の注文銘柄の未割り当て体積の値を割り当て済体積の値とし、未割り当て体積の値を0とする。
次いで、ステップS102に移行すると、指示作成部14は、配置後残空間管理処理を実行する。図16(a)には、注文銘柄(3カートン)が箱内に配置された状態が示されている。指示作成部14は、箱内を上から見た状態で、図16(b)のように2つの直方体状の残空間1,2に分けるか、あるいは図16(c)のように2つの直方体状の残空間1’,2’に分けるか、のいずれかを実行するものとする。なお、図16(d)のように長さ(L)方向と、幅(W)方向の両方に残空間を分けるのは、残空間が小さくなり、以降の注文銘柄の配置が難しくなるので、採用しないものとする。
指示作成部14は、図16(b)のように区切った場合の残空間1,2と、図16(c)のように区切った場合の残空間1’,2’を比較し、一番大きな残空間が形成される方を採用する。本実施形態では、残空間2が一番大きな残空間であり、図16(b)の残空間1、2が採用されたとする。この場合、指示作成部14は、採用した残空間1,2の情報で図11(a)の残空間管理テーブル26を更新する。
一方、例えば、図16(a)の状態から図17(a)に示すように、残空間2に新たに注文銘柄が配置された場合には、指示作成部14は、図17(b)に示すように残空間2、3とするか、あるいは図17(c)に示すように残空間2’3’とするかを判断する。この場合、残空間2,3、2’、3’の中で残空間3が最も大きいとすると、指示作成部14は、図17(b)の残空間2,3を採用し、図11(a)の残空間管理テーブル26を更新する。
上記のようにして、残空間管理テーブル26の更新が行われた後は、図13のステップS104に移行し、指示作成部14は、対象レコードの未割り当て体積の合計を算出する。この場合、指示作成部14は、注文管理テーブル22(図7(b))の未割り当て体積の合計を算出し、図10のステップS58に移行する。
ところで、N番目の注文銘柄について、方向を変更しつつ配置可能チェック処理を行ったが、配置可能チェック対象候補の残空間のいずれにも注文銘柄が入らなかった場合(S94:肯定の場合)には、ステップS96に移行する。
ステップS96に移行すると、指示作成部14は、残空間を変更可能か否かを判断する。なお、残空間を変更可能な場合とは、ステップS102において、図16(b)を選択したが、図16(c)については未だ配置可能チェック処理を行っていない場合等を意味する。
ステップS96の判断が肯定された場合には、ステップS98に移行し、指示作成部14は、残空間を例えば図16(c)の空間1’、2’に変更し、図11(a)の残空間管理テーブル26を更新する。その後は、更新後の残空間管理テーブル26を用いてステップS84〜S94の処理判断を実行し、ステップS90の判断が肯定されれば、ステップS100に移行し、ステップS94の判断が肯定されれば、ステップS96に移行する。そして、ステップS96の判断が否定された場合(残空間を変更できないと判断された場合)には、ステップS78に移行する。ステップS78に移行した場合、現在の箱には残りの注文銘柄が入らないため、新箱準備処理(S78)において残りの注文銘柄の大きさに適した箱を選定し、ステップS72に戻る。この場合、図11(a)の下側、及び図11(b)の下側のように、各テーブル26,28が更新される。
以上のように、図13において配置可能チェック処理(S88)が実行されることで、N番目の注文銘柄を箱内の適切な位置に配置することが可能となる。
なお、図13の処理が終了し、図10の処理(S32)が終了すると、配置位置管理テーブル28には、小売店からの注文銘柄をどの箱のどの位置に入れるべきかを示す情報(箱入れ指示データ)が格納されることになる。したがって、図9のステップS34では、出力部16は、配置位置管理テーブル28に格納された情報を、対応する配送拠点システム60に送信する。
(配送拠点システム60の処理について)
次に、配送拠点システム60の処理について説明する。配送拠点システム60では、CPU190がプログラムを実行することにより、制御部としての機能が実現されている。制御部は、図18のフローチャートに沿った処理を実行する。
図18の処理では、まず、ステップS200において、制御部が、小売店IDと箱入れ指示データを受信するまで待機する。すなわち、サーバ10において、図9のステップS34の処理が実行されると、制御部は、ステップS202に移行する。
ステップS202に移行すると、制御部は、小売店IDに基づいて送付先住所、店舗名を取得する。この場合、制御部は、図6のステップS24において用いた小売店DBと同様のDBを参照して、送付先住所と小売店の店舗名を取得する。
次いで、ステップS204では、制御部は、受信した箱入れ指示データに基づいて、箱入れ処理を実行する。この箱入れ処理においては、制御部は、配置位置管理テーブル28の箱コードに基づいて、図3に示すように配送拠点に設置されたベルトコンベア62に箱を流す。そして、制御部は、適切なタイミングで、配送拠点に設置された表示部193に対して、箱入れすべき各銘柄の個数(カートン数)を表示する。これにより、作業者は、表示部193を参照することで、適切な個数(カートン数)だけ商品を箱入れすることができる。この場合、箱入れ指示データに従った表示を行うことで、商品が箱に入らないという事態が発生するのを抑制することができる。
上記説明から分かるように、本実施形態においては、指示作成部14により、各銘柄を箱に入れる順番を特定する特定部、順番に従って、各銘柄を配置する位置及び姿勢を決定するとともに、各銘柄を配置した後の残空間を特定する処理を繰り返す処理部、商品を入れる箱を決定する決定部、としての機能が実現されている。
以上、詳細に説明したように、本実施形態によると、サーバ10において、指示作成部14は、複数の商品を箱に入れる順番を特定し(S46)、順番に従って商品を空間内に配置する位置と姿勢を決定する処理(S88:図15)と、箱の内部に存在する空間を算出する処理(S102)と、を全ての商品の位置と姿勢が決定されるまで又は箱の内部に商品を配置できなくなるまで繰り返す(S56〜S60)。また、出力部16は、推定する処理の推定結果に基づく情報(28)を出力する(S34)。このように、箱に入れる順番を考慮して箱に入れることが可能な商品を推定した結果を出力することで、箱入れ作業を行う作業者の作業を適切に支援することができる。例えば、配送拠点の作業者が推定した結果に基づく作業を実行することで、商品が箱に入らなくなるなどの事態が発生するのを抑制することができる。
また、本実施形態では、同一銘柄を纏めて配置する配置位置及び配置姿勢を決定する。これにより、配送拠点の作業者は、同一銘柄の商品を同一の箱に纏めて入れることができるので、作業者による作業効率を向上することができる。
また、本実施形態では、指示作成部14は、複数の注文銘柄の体積に基づいて、箱を決定する(S78)。これにより、複数の注文銘柄を効率的に配送できるように、箱を決定することができる。この場合、箱の許容積(例えば容積の60%)に複数の注文銘柄の全体積が入るように、箱を決定するので、詰め込みすぎによる商品や箱の破損等を抑制することができる。
また、本実施形態では、配送拠点に設置された表示部193に箱入れすべき注文銘柄の個数を表示するので、作業者は、表示部193の表示に応じて作業をすることで、簡易に箱入れ作業を実行することができる。
なお、上記実施形態では、表示部193に箱入れすべき銘柄の個数(カートン数)のみを表示する場合について説明したが、これに限られるものではない。例えば、制御部は、配置位置管理テーブル28の配置空間座標に基づいて、箱のどの位置に各銘柄を入れるべきかを表示部193に表示するようにしてもよい。この場合、制御部は、配置空間座標に基づいて、配置位置を図で表示するようにしてもよい。このようにすることで、作業者の技量にかかわらず、適切な位置に各銘柄を配置(箱入れ)することが可能となる。
なお、上記実施形態では、箱入れ対象の商品がタバコや葉巻である場合について説明したが、これに限らず、箱入れ対象の商品はその他の商品であってもよい。例えば、多数種類の商品を扱う倉庫において、異なる種類の商品を箱入れする場合に、上記実施形態の箱入れ支援システムを採用してもよい。
なお、上記実施形態では、注文があるごと(S20:YES)に、箱入れ指示データの生成処理が実行される場合について説明したが、これに限られるものではない。例えば、所定時間ごとに、新たに受け付けた注文に基づいて、箱入れ指示データの生成処理を実行するようにしてもよい。この場合、同一の小売店端末70から複数の注文があった場合には、同一の小売店からの複数の注文を纏めて、箱入れ指示データの生成処理を実行することとしてもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体(ただし、搬送波は除く)に記録しておくことができる。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD(Digital Versatile Disc)、CD−ROM(Compact Disc Read Only Memory)などの可搬型記録媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
なお、以上の実施形態の説明に関して、更に以下の付記を開示する。
(付記1) 複数種類の物品を箱に入れる順番を特定し、
前記順番に従って、物品を前記箱の内部に配置する位置と姿勢を決定する処理と、物品を配置した後の前記箱の内部に存在する空間を特定する処理と、を全ての物品の位置と姿勢が決定されるまで又は前記箱の内部に物品を配置できなくなるまで繰り返し、
前記繰り返す処理の結果に基づく情報を出力する、
処理をコンピュータに実行させることを特徴とする箱入れ支援プログラム。
(付記2) 前記繰り返す処理では、同一種類の物品を複数個配置する場合には、該同一種類の複数個の物品を一纏めにして位置と姿勢を決定する、ことを特徴とする付記1に記載の箱入れ支援プログラム。
(付記3) 前記複数種類の物品の体積に基づいて、前記箱を決定する、処理を前記コンピュータに更に実行させることを特徴とする付記1又は2に記載の箱入れ支援プログラム。
(付記4) 前記決定する処理は、前記複数種類の物品の体積の合計と1より大きい所定値との積よりも大きい容積を有する箱を決定する、ことを特徴とする付記3に記載の箱入れ支援プログラム。
(付記5) 前記出力する処理は、前記複数種類の物品それぞれに関し、前記箱に入れることが可能な個数の情報を出力する、ことを特徴とする付記1〜4のいずれかに記載の箱入れ支援プログラム。
(付記6) 前記出力する処理は、前記繰り返す処理において決定された位置と姿勢の情報を出力する、ことを特徴とする付記1〜5のいずれかに記載の箱入れ支援プログラム。
(付記7) 複数種類の物品を箱に入れる順番を特定し、
前記順番に従って、物品を前記箱の内部に配置する位置と姿勢を決定する処理と、物品を配置した後の前記箱の内部に存在する空間を特定する処理と、を全ての物品の位置と姿勢が決定されるまで又は前記箱の内部に物品を配置できなくなるまで繰り返し、
前記繰り返す処理の結果に基づく情報を出力する、
処理をコンピュータが実行することを特徴とする箱入れ支援方法。
(付記8) 前記繰り返す処理では、同一種類の物品を複数個配置する場合には、該同一種類の複数個の物品を一纏めにして位置と姿勢を決定する、ことを特徴とする付記7に記載の箱入れ支援方法。
(付記9) 前記複数種類の物品の体積に基づいて、前記箱を決定する、処理を前記コンピュータが更に実行することを特徴とする付記7又は8に記載の箱入れ支援方法。
(付記10) 前記決定する処理は、前記複数種類の物品の体積の合計と1より大きい所定値との積よりも大きい容積を有する箱を決定する、ことを特徴とする付記9に記載の箱入れ支援方法。
(付記11) 前記出力する処理は、前記複数種類の物品それぞれに関し、前記箱に入れることが可能な個数の情報を出力する、ことを特徴とする付記7〜10のいずれかに記載の箱入れ支援方法。
(付記12) 前記出力する処理は、前記繰り返す処理において決定された位置と姿勢の情報を出力する、ことを特徴とする付記7〜11のいずれかに記載の箱入れ支援方法。
(付記13) 複数種類の物品を箱に入れる順番を特定する特定部と、
前記順番に従って、物品を前記箱の内部に配置する位置と姿勢を決定する処理と、物品を配置した後の前記箱の内部に存在する空間を特定する処理と、を全ての物品の位置と姿勢が決定されるまで又は前記箱の内部に物品を配置できなくなるまで繰り返す処理部と、
前記処理部の処理結果に基づく情報を出力する出力部と、
を備える箱入れ支援装置。
(付記14) 前記処理部は、同一種類の物品を複数個配置する場合には、該同一種類の複数個の物品を一纏めにして位置と姿勢を決定する、ことを特徴とする付記13に記載の箱入れ支援装置。
(付記15) 前記複数種類の物品の体積に基づいて、前記箱を決定する決定部(14)を更に備える付記13又は14に記載の箱入れ支援装置。
(付記16) 前記決定部は、前記複数種類の物品の体積の合計と1より大きい所定値との積よりも大きい容積を有する箱を決定する、ことを特徴とする付記15に記載の箱入れ支援装置。
(付記17) 前記出力部は、前記複数種類の物品それぞれに関し、前記箱に入れることが可能な個数の情報を出力する、ことを特徴とする付記13〜16のいずれかに記載の箱入れ支援装置。
(付記18) 前記出力部は、前記処理部が決定した前記位置と前記姿勢の情報を出力する、ことを特徴とする付記13〜17のいずれかに記載の箱入れ支援装置。