(57)【要約】【課題】格納領域のマトリクスのサイズや入出庫口の位置、および出庫対象のパレット位置や空スペースの位置に関わらず一律に適用して出庫することができる平面パズル式格納庫制御方法を提供する。【解決手段】ｙ軸基準ラインによって区分された２つのエリアに対して、対象パレットと空スペースが別のエリアに属する場合は空スペースをｙ軸基準ライン上までシフトさせるエリア共通化シフト処理Ｓ１００を実行し、さらに、空スペースを、対象パレットの位置および対象パレットに対する空スペースの相対位置に応じて、対象パレットに対して入出庫口ブロックに近い側で隣接するブロックのうちのいずれかにシフトさせる空スペースシフト処理（Ｓ２００）と、対象パレットを隣接する空スペースの位置にシフトさせる対象パレットシフト処理（Ｓ３００）とを、対象パレットが入出庫口ブロックの位置にシフトされるまで繰り返し実行する。【選択図】図１
2011001760.tif 000002
【特許請求の範囲】
【請求項１】
格納庫の格納領域内をマトリクス状に区画したブロックと、
前記各ブロック上に配置され、前記ブロックの区画に沿って前後左右にスライドしてシフトさせることが可能なパレットと、
前記パレットが配置されていない前記ブロックである空スペースと、
前記格納庫の入出庫口に位置する前記ブロックである入出庫口ブロックと、
前記パレットのシフトを制御して対象物の入出庫を実行する制御部とを有し、
前記制御部により、前記空スペースに隣接する前記パレットを前記空スペースの位置にスライドさせる動作を繰り返して、前記パレットおよび前記空スペースを順次シフトさせることによって、出庫対象の前記対象物が置かれた前記パレットである対象パレットを前記入出庫口ブロックの位置までシフトさせて前記入出庫口から前記対象物を出庫させる平面パズル式格納庫制御方法であって、
前記制御部は、前記入出庫口ブロックを含み前記入出庫口の面に対して垂直方向に配置された前記ブロックの列をｙ軸基準ラインとし、前記入出庫口ブロックを含み前記ｙ軸基準ラインと直交する前記ブロックの列をｘ軸基準ラインとし、前記ｙ軸基準ラインによって区分され、それぞれ前記ｙ軸基準ラインを含んでなる２つのエリアに対して、前記対象パレットと前記空スペースが同一の前記エリアに属するか否かを判定し、別の前記エリアに属する場合は、前記空スペースを前記ｙ軸基準ライン上までシフトさせて前記対象パレットと同一の前記エリアに属させるエリア共通化シフト処理を実行し、さらに、
前記空スペースを、前記対象パレットの位置、および前記対象パレットに対する前記空スペースの相対位置に応じて、前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する１つまたは２つの前記ブロックのうちのいずれかにシフトさせる空スペースシフト処理と、
前記対象パレットを、隣接する前記空スペースの位置にシフトさせる対象パレットシフト処理とを、
前記対象パレットが前記入出庫口ブロックの位置にシフトされるまで繰り返し実行することを特徴とする平面パズル式格納庫制御方法。
【請求項２】
請求項１に記載の平面パズル式格納庫制御方法において、
前記空スペースシフト処理では、前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する前記ブロックが２つある場合に、
これらの前記ブロックのうち、前記空スペースの位置から近い側に位置する前記ブロックに前記空スペースをシフトさせ、
前記空スペースとこれらの前記ブロックとの距離がいずれも同じ場合には、これらの前記ブロックのうち、前記対象パレットに対して、前記対象パレットの位置と前記ｘ軸基準ラインおよび前記ｙ軸基準ラインとの間の距離のいずれか大きい方の側で隣接する前記ブロックに前記空スペースをシフトさせることを特徴とする平面パズル式格納庫制御方法。
【請求項３】
格納庫の格納領域内をマトリクス状に区画したブロックと、
前記各ブロック上に配置され、前記ブロックの区画に沿って前後左右にスライドしてシフトさせることが可能なパレットと、
前記パレットが配置されていない前記ブロックである空スペースと、
前記格納庫の入出庫口に位置する前記ブロックである入出庫口ブロックと、
前記パレットのシフトを制御して対象物の入出庫を実行する制御部とを有する平面パズル式格納庫の前記制御部によって実行され、
前記空スペースに隣接する前記パレットを前記空スペースの位置にスライドさせる動作を繰り返して、前記パレットおよび前記空スペースを順次シフトさせることによって、出庫対象の前記対象物が置かれた前記パレットである対象パレットを前記入出庫口ブロックの位置までシフトさせる平面パズル式格納庫制御プログラムであって、
前記入出庫口ブロックを含み前記入出庫口の面に対して垂直方向に配置された前記ブロックの列をｙ軸基準ラインとし、前記入出庫口ブロックを含み前記ｙ軸基準ラインと直交する前記ブロックの列をｘ軸基準ラインとし、前記ｙ軸基準ラインによって区分され、それぞれ前記ｙ軸基準ラインを含んでなる２つのエリアに対して、前記対象パレットと前記空スペースが同一の前記エリアに属するか否かを判定し、別の前記エリアに属する場合は、前記空スペースを前記ｙ軸基準ライン上までシフトさせて前記対象パレットと同一の前記エリアに属させるエリア共通化シフト処理を実行し、さらに、
前記空スペースを、前記対象パレットの位置、および前記対象パレットに対する前記空スペースの相対位置に応じて、前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する１つまたは２つの前記ブロックのうちのいずれかにシフトさせる空スペースシフト処理と、
前記対象パレットを、隣接する前記空スペースの位置にシフトさせる対象パレットシフト処理とを、
前記対象パレットが前記入出庫口ブロックの位置にシフトされるまで繰り返し実行することを特徴とする平面パズル式格納庫制御プログラム。
【請求項４】
請求項３に記載の平面パズル式格納庫制御プログラムにおいて、
前記空スペースシフト処理では、前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する前記ブロックが２つある場合に、
これらの前記ブロックのうち、前記空スペースの位置から近い側に位置する前記ブロックに前記空スペースをシフトさせ、
前記空スペースとこれらの前記ブロックとの距離がいずれも同じ場合には、これらの前記ブロックのうち、前記対象パレットに対して、前記対象パレットの位置と前記ｘ軸基準ラインおよび前記ｙ軸基準ラインとの間の距離のいずれか大きい方の側で隣接する前記ブロックに前記空スペースをシフトさせることを特徴とする平面パズル式格納庫制御プログラム。
【請求項５】
格納庫の格納領域内をマトリクス状に区画したブロックと、
前記各ブロック上に配置され、前記ブロックの区画に沿って前後左右にスライドしてシフトさせることが可能なパレットと、
前記パレットが配置されていない前記ブロックである空スペースと、
前記格納庫の入出庫口に位置する前記ブロックである入出庫口ブロックと、
前記パレットのシフトを制御して対象物の入出庫を実行する制御部とを有し、
前記制御部により、前記空スペースに隣接する前記パレットを前記空スペースの位置にスライドさせる動作を繰り返して、前記パレットおよび前記空スペースを順次シフトさせることによって、出庫対象の前記対象物が置かれた前記パレットである対象パレットを前記入出庫口ブロックの位置までシフトさせて前記入出庫口から前記対象物を出庫させる平面パズル式格納庫であって、
前記制御部は、前記入出庫口ブロックを含み前記入出庫口の面に対して垂直方向に配置された前記ブロックの列をｙ軸基準ラインとし、前記入出庫口ブロックを含み前記ｙ軸基準ラインと直交する前記ブロックの列をｘ軸基準ラインとし、前記ｙ軸基準ラインによって区分され、それぞれ前記ｙ軸基準ラインを含んでなる２つのエリアに対して、前記対象パレットと前記空スペースが同一の前記エリアに属するか否かを判定し、別の前記エリアに属する場合は、前記空スペースを前記ｙ軸基準ライン上までシフトさせて前記対象パレットと同一の前記エリアに属させるエリア共通化シフト処理を実行し、さらに、
前記空スペースを、前記対象パレットの位置、および前記対象パレットに対する前記空スペースの相対位置に応じて、前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する１つまたは２つの前記ブロックのうちのいずれかにシフトさせる空スペースシフト処理と、
前記対象パレットを、隣接する前記空スペースの位置にシフトさせる対象パレットシフト処理とを、
前記対象パレットが前記入出庫口ブロックの位置にシフトされるまで繰り返し実行することを特徴とする平面パズル式格納庫。
【請求項６】
請求項５に記載の平面パズル式格納庫において、
前記制御部は、前記空スペースシフト処理において前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する前記ブロックが２つある場合に、
これらの前記ブロックのうち、前記空スペースの位置から近い側に位置する前記ブロックに前記空スペースをシフトさせ、
前記空スペースとこれらの前記ブロックとの距離がいずれも同じ場合には、これらの前記ブロックのうち、前記対象パレットに対して、前記対象パレットの位置と前記ｘ軸基準ラインおよび前記ｙ軸基準ラインとの間の距離のいずれか大きい方の側で隣接する前記ブロックに前記空スペースをシフトさせることを特徴とする平面パズル式格納庫。
【請求項７】
請求項５または６に記載の平面パズル式格納庫において、
前記制御部は、前記エリア共通化シフト処理によって前記対象パレットと前記空スペースとを同一の前記エリアに属させる際に要する前記パレットの第１のシフト数と、
最初の前記空スペースシフト処理によって、前記エリア共通化シフト処理を実行した直後の状態の前記空スペースを前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する１つまたは２つの前記ブロックのうちのいずれかにシフトさせる際に要する前記パレットの第２のシフト数と、
前記対象パレットシフト処理と前記空スペースシフト処理とを繰り返し実行することによって、前記対象パレットの初期位置から前記対象パレットを前記入出庫口ブロックの位置にシフトさせる際に要する前記パレットの第３のシフト数とを算出し、
前記第１、第２、第３のシフト数を合計することにより、出庫要求を受けてから前記対象パレット上の前記対象物を出庫するまでの前記パレットの総シフト数を算出して出力することを特徴とする平面パズル式格納庫。
【請求項８】
請求項７に記載の平面パズル式格納庫において、
前記制御部は、出庫要求を受けてから前記対象パレット上の前記対象物を出庫する際の現時点までの前記パレットの第４のシフト数をカウントし、
前記総シフト数と前記第４のシフト数の差分と、前記パレットを１回シフトさせる際に要する時間とに基づいて、前記対象パレット上の前記対象物を出庫するまでの所要時間を算出して出力することを特徴とする平面パズル式格納庫。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械式駐車場などの機械式の格納庫の制御技術に関し、特に、平面パズル式格納庫の制御方法および制御プログラムならびに平面パズル式格納庫に適用して有効な技術に関するものである。
【背景技術】
【０００２】
機械式駐車場には種々のものが存在するが、その中に、いわゆるパズル式の駐車システムがある。パズル式駐車システムの一つとして、車両の格納領域内をマトリクス状のブロックに区画し、ブロック上に配置されたパレットを空スペースの位置に順次スライドして移動させることによって、パレット上に置かれた車両を格納位置もしくは入出庫口に移送して入出庫を行う駐車システムがある（以降ではこのような方式を「平面パズル式」と記載する場合がある）。
【０００３】
この平面パズル式の駐車システムについては、例えば、特開平２−１１５４６７号公報（特許文献１）に記載されている。また、この平面パズル式の駐車システムを利用したものとして、例えば、特開平６−８８４５１号公報（特許文献２）には、平面パズル式の駐車システムと高速台車を組み合わせることで、格納密度の向上と入出庫時間の短縮を可能とする機械式駐車場が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平２−１１５４６７号公報
【特許文献２】特開平６−８８４５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の平面パズル式駐車システムでは、例えば、入出庫が完了する度に空スペースを必ず初期位置に戻し、また、マトリクス内のブロック毎に、当該ブロック上の対象物を出庫させる際に、どのような順序でパレットを移動させることで当該ブロック上のパレットを入出庫口に移動させるかというパターンを予め定義しておくことで、出庫時の動作を制御している。しかし、この場合はブロック数が少ない場合には比較的効率よく制御することができるが、ブロック数が多くなると定義を設定する負荷が大きくなり、また、空スペースを初期状態に戻すことにより効率が大きく低下する場合がある。
【０００６】
また、例えば特許文献１には、あるアドレスのパレットに出庫要求が入力された場合に、他のパレットを移動させつつ、対象のパレットを順次入出庫口の方向に移動させることで、最短コースを通って入出庫口に移動させるということが記載されている。ここでは、最短コースをどのように取得するかについては特に開示されていないが、一般的にはマトリクスのサイズや形状、入出庫口の位置等によって個別に移動パターンや制御ロジックを定義、もしくは修正・変更している場合が多い。
【０００７】
そこで本発明の目的は、格納領域のマトリクスのサイズや入出庫口の位置、および出庫対象のパレット位置や空スペースの位置に関わらず一律に適用して出庫することができる平面パズル式格納庫制御方法および平面パズル式格納庫制御プログラムならびに平面パズル式格納庫を提供することにある。本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下のとおりである。本発明の代表的な実施の形態は、平面パズル式格納庫制御方法および平面パズル式格納庫制御プログラムならびに平面パズル式格納庫などに適用され、以下の特徴を有するものである。
【０００９】
すなわち、本発明の代表的な実施の形態である平面パズル式格納庫制御方法は、格納庫の格納領域内をマトリクス状に区画したブロックと、前記各ブロック上に配置され、前記ブロックの区画に沿って前後左右にスライドしてシフトさせることが可能なパレットと、前記パレットが配置されていない前記ブロックである空スペースと、前記格納庫の入出庫口に位置する前記ブロックである入出庫口ブロックと、前記パレットのシフトを制御して対象物の入出庫を実行する制御部とを有し、前記制御部により、前記空スペースに隣接する前記パレットを前記空スペースの位置にスライドさせる動作を繰り返して、前記パレットおよび前記空スペースを順次シフトさせることによって、出庫対象の前記対象物が置かれた前記パレットである対象パレットを前記入出庫口ブロックの位置までシフトさせて前記入出庫口から前記対象物を出庫させる平面パズル式格納庫制御方法であって、以下の特徴を有するものである。
【００１０】
すなわち、前記制御部は、前記入出庫口ブロックを含み前記入出庫口の面に対して垂直方向に配置された前記ブロックの列をｙ軸基準ラインとし、前記入出庫口ブロックを含み前記ｙ軸基準ラインと直交する前記ブロックの列をｘ軸基準ラインとし、前記ｙ軸基準ラインによって区分され、それぞれ前記ｙ軸基準ラインを含んでなる２つのエリアに対して、前記対象パレットと前記空スペースが同一の前記エリアに属するか否かを判定し、別の前記エリアに属する場合は、前記空スペースを前記ｙ軸基準ライン上までシフトさせて前記対象パレットと同一の前記エリアに属させるエリア共通化シフト処理を実行する。
【００１１】
さらに、前記空スペースを、前記対象パレットの位置、および前記対象パレットに対する前記空スペースの相対位置に応じて、前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する１つまたは２つの前記ブロックのうちのいずれかにシフトさせる空スペースシフト処理と、前記対象パレットを、隣接する前記空スペースの位置にシフトさせる対象パレットシフト処理とを、前記対象パレットが前記入出庫口ブロックの位置にシフトされるまで繰り返し実行することを特徴とするものである。
【発明の効果】
【００１２】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１３】
本発明の代表的な実施の形態によれば、格納領域のマトリクスのサイズや入出庫口の位置、および出庫対象のパレット位置や空スペースの位置に関わらず一律の制御手順によって出庫することができる平面パズル式格納庫を実現することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施の形態におけるパレットシフト制御全体の処理の例について概要を示したフローチャートである。
【図２】本発明の一実施の形態である平面パズル式格納庫の構成例の概要について示した図である。
【図３】本発明の一実施の形態における格納領域のブロックのマトリクスにおけるエリアとブロック位置数の例を示した図である。
【図４】（ａ）〜（ｃ）は、本発明の一実施の形態におけるＴＰに隣接するブロックにＢＰをシフトさせた場合の例を示す図である。
【図５】（ａ）、（ｂ）は、本発明の一実施の形態におけるＢＰとＴＰのエリアを共通化する場合の例を示した図である。
【図６】（ａ）〜（ｃ）は、本発明の一実施の形態におけるＢＰをＴＰに対するＢ１もしくはＢ２の位置にシフトさせる場合の例を示した図である。
【図７】（ａ）〜（ｃ）は、本発明の一実施の形態におけるＢＰをＴＰに隣接させた後、ＴＰをＧＰまでシフトさせる場合の例を示した図である。
【図８】本発明の一実施の形態におけるパレットのシフト方向の例を示した図である。
【図９】本発明の一実施の形態におけるエリア共通化シフト処理の例を示したフローチャートである。
【図１０】本発明の一実施の形態におけるＢＰシフト処理の例を示したフローチャートである。
【図１１】本発明の一実施の形態における同一ライン上シフト処理の例を示したフローチャートである。
【図１２】本発明の一実施の形態におけるＴＰシフト処理の例を示したフローチャートである。
【図１３】本発明の一実施の形態におけるパレットシフト制御に従ってＴＰを出庫する際のパレットの総シフト数算出処理の例について概要を示したフローチャートである。
【図１４】本発明の一実施の形態におけるエリア共通化シフト数算出処理の例を示したフローチャートである。
【図１５】本発明の一実施の形態におけるＢＰシフト数算出処理の例を示したフローチャートである。
【図１６】本発明の一実施の形態におけるＴＰシフト数算出処理の例を示したフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１６】
［構成］
図２は、本発明の一実施の形態である平面パズル式格納庫の構成例の概要について示した図である。平面パズル式格納庫１は、例えば車両を格納する機械式駐車場などであり、格納庫の格納領域内をマトリクス状に区画したブロック１１と、ブロック１１上に配置されたパレット１２、および入出庫口１５を有する。また、パレット１２が配置されていないブロック１１として空スペース１３（以下では単に「ＢＰ」と記載する場合がある）を有する。ＢＰ１３は１つに限らず、複数有していてもよい。
【００１７】
なお、パレット１２のうち、入出庫口１５から出庫する対象物が置かれたパレット１２を対象パレット１４（以下では単に「ＴＰ」と記載する場合がある）と呼ぶ。また、入出庫口１５に位置するブロック１１を入出庫口ブロック１６（以下では単に「ＧＰ」と記載する場合がある）と呼ぶ。
【００１８】
パレット１２はブロック１１の区画に沿って前後左右方向にスライドして移動（シフト）させることができるが、そのためにはパレット１２のシフト先にスペースが必要である。すなわち、パレット１２は、前後左右にＢＰ１３が隣接する場合にその方向に１ブロックシフトさせることができる。その結果、パレット１２が存在していたブロック１１上には新たにＢＰ１３ができる。すなわち、パレット１２を隣接するＢＰ１３の方向に１ブロックシフトさせることは、ＢＰ１３を対象のパレット１２の方向に１ブロックシフトさせることと等価である。
【００１９】
さらに、平面パズル式格納庫１は、制御部２１と記憶部２２、および入出力部２３を有する。制御部２１は、後述する処理によりパレット１２のシフトを指示・制御して、対象物の入出庫を実行する処理を行う装置である。すなわち、ＢＰ１３に隣接するパレット１２をＢＰ１３の位置にスライドさせる動作を繰り返して、パレット１２およびＢＰ１３を順次シフトさせることによって、ＴＰ１４をＧＰ１６の位置までシフトさせて入出庫口１５から対象物を出庫させる。
【００２０】
記憶部２２は、平面パズル式格納庫１のマトリクスのサイズやＧＰ１６の位置、ＢＰ１３の現在位置などの情報を保持する装置である。また、各パレット１２の現在位置と当該パレット１２に置かれている対象物との対応の情報も保持する。この情報により、制御部２１は、出庫要求によって指示された対象物がどのパレット１２上に存在するかを特定し、当該パレット１２をＴＰ１４とすることができる。入出力部２３は、入出庫の要求や各種設定情報などの入力、出庫時の所要時間や状況の表示などのユーザインタフェースを外部のユーザに提供する装置である。
【００２１】
［パレットのシフト制御の概要］
以下では、本実施の形態の平面パズル式格納庫１における出庫時のパレットシフトの制御手法について概要を説明する。図３は、格納領域のブロック１１のマトリクスにおけるエリアとブロック位置数の例を示す図である。図３の例では、平面パズル式格納庫１のマトリクスは５×７の３５個のブロック１１を有している。
【００２２】
ここで、図中の右から左の方向をｘ方向、上から下の方向をｙ方向とし、ＧＰ１６を含むブロック１１の行および列をそれぞれｘ軸基準ライン１７（以下では単に「ｘ軸」と記載する場合がある）、ｙ軸基準ライン１８（以下では単に「ｙ軸」と記載する場合がある）とする。すなわち、ＧＰ１６を含み入出庫口１５の面に対して垂直方向に配置されたブロック１１の列をｙ軸１８とし、ＧＰ１６を含みｙ軸１８と直交するブロック１１の列をｘ軸１７とする。これにより、各ブロック１１の位置はｘ座標とｙ座標（ＧＰ１６の位置を基準とした相対位置）により特定することができる。なお、図３の例では、ｘ軸方向の中央に入出庫口１５（ＧＰ１６）を有する構成となっているが、入出庫口１５の位置はｘ軸１７上のいずれにあってもよい。
【００２３】
さらに、本実施の形態では、図３に示すように、ｙ軸１８を境として各ブロックのｘ座標が０以上である領域をエリアＡ、ｘ座標が０以下である領域をエリアＢとして２つのエリアに分ける。ｙ軸１８はエリアＡ、エリアＢ両方に含まれるものとする。なお、入出庫口１５がマトリクスの端部にある場合は、エリアＡもしくはＢの一方のみ有することになる。
【００２４】
図３において、ＧＰ１６の値を「０」として各ブロック１１にそれぞれ設定されている値は、各ブロック１１上にあるパレット１２が、他のブロック１１上にパレット１２がなく全てＢＰ１４であった場合に、前後左右に１ブロックずつシフトしてＧＰ１６に至るまでの最少シフト数（以下ではこの値を「ブロック位置数」と記載する場合がある）を表している。
【００２５】
すなわち、対象のブロック１１上のパレット１２に出庫の対象物があった場合に、当該パレット１２自体を最少で何回シフトさせれば入出庫口１５から出庫させることができるかを表している。従ってＧＰ１６ではブロック位置数は「０」となり、ＧＰ１６に隣接するブロック１１では「１」、これにさらに隣接するブロックでは「２」…というような値となる。
【００２６】
このマトリクスにおいて、いずれかのブロック１１上にあるＴＰ１４に置かれた対象物を入出庫口１５から出庫するには、ＴＰ１４をＧＰ１６の位置までシフトさせる必要がある。ここで、上述したように、ＴＰ１４をシフトさせるためにはＴＰ１４にＢＰ１３が隣接している必要がある。そこで、まず、マトリクス内の他のいずれかのブロック１１に存在するＢＰ１３をＴＰ１４に隣接するブロック１１までシフトさせる必要がある。
【００２７】
図４は、ＴＰ１４に隣接するブロック１１にＢＰ１３をシフトさせた場合の例を示す図である。図４（ａ）は、ＴＰ１４のｘ座標が２（以下では「ＴＰｘ＝２」のように記載する場合がある）、ｙ座標が２（以下では「ＴＰｙ＝２」のように記載する場合がある）である場合、すなわち、ＴＰ１４がｘ軸１７上にもｙ軸１８上にもない場合の例である。図中のマトリクスにおける太線は、エリア（エリアＡ）の境界を示している。このとき、ＴＰ１４のブロック位置数を｜ＴＰ｜と表記するものとした場合、
｜ＴＰ｜＝｜ＴＰｘ｜＋｜ＴＰｙ｜＝２＋２＝４
となる。
【００２８】
ここで、ＴＰ１４を最少シフト数（最短コース）でＧＰ１６にシフトさせるためには、ＴＰ１４をＧＰ１６に近い側に順次シフトさせる必要がある。すなわち、ＢＰ１３をＴＰ１４に対してＧＰ１６に近い側で隣接するブロック１１（図中に示すＢ１の位置とＢ２のいずれかの位置のブロック１１）にシフトさせる必要がある。
【００２９】
ここで、Ｂ１、Ｂ２の位置は、いずれもＴＰ１４の位置に対する相対位置を示すものであり、Ｂ１の位置にＢＰ１３をシフトさせた場合は、ＢＰｘ＝ＴＰｘ、ＢＰｙ＝ＴＰｙ−１となる。また、Ｂ２の位置にＢＰ１３をシフトさせた場合は、ＢＰｘ＝ＴＰｘ−１、ＢＰｙ＝ＴＰｙとなる。すなわち、Ｂ１、Ｂ２ともにブロック位置数は｜ＴＰ｜−１＝３である。なお、図４（ａ）では、ＴＰ１４がエリアＡにある場合を例としているが、エリアＢにある場合は左右が逆となる（Ｂ２の位置が変わる）だけで同様であるため省略する。
【００３０】
同様に、図４（ｂ）は、ＴＰｘ＝３、ＴＰｙ＝０である場合、すなわち、ＴＰ１４がｘ軸１７上にある場合である。この場合は、ＢＰ１３をシフトさせる位置は図中のＢ２の位置１ヶ所のみとなる。また、図４（ｃ）は、ＴＰｘ＝０、ＴＰｙ＝３である場合、すなわち、ＴＰ１４がｙ軸１８上にある場合の例である。この場合は、ＢＰ１３をシフトさせる位置は図中のＢ１の位置１ヶ所のみとなる。
【００３１】
図４（ａ）〜（ｃ）のいずれの場合も、ＢＰ１３をＴＰ１４に対してＢ１もしくはＢ２の位置にシフトさせた後、ＴＰ１４をＢＰ１３の位置にシフトさせる。これにより、シフト後のＴＰ１４の｜ＴＰ｜は１減少する、すなわち、ＴＰ１４はＧＰ１６に１ブロック近づいたことになる。一方、このシフトにより、ＴＰ１４に対するＢＰ１３の位置はＢ１もしくはＢ２の位置ではなくなってしまう。従って、再度ＢＰ１３をＴＰ１４に対してＢ１もしくはＢ２の位置にシフトさせる。この動作を繰り返すことで、ＴＰ１４をＧＰ１６の位置までシフトさせることができる。
【００３２】
以下では、ＢＰ１３をＴＰ１４に対してＢ１もしくはＢ２の位置にシフトさせる手順について説明する。まず、ＢＰ１３とＴＰ１４が異なるエリアに属する場合に、同一のエリアに属するようにＢＰ１３をシフトさせる。図５は、ＢＰ１３とＴＰ１４のエリアを共通化する場合の例を示した図である。
【００３３】
図５（ａ）は、ＢＰ１３とＴＰ１４がともにエリアＡに属する場合の例を示している。この場合はここでの処理は不要である。ＢＰ１３とＴＰ１４がともにエリアＢに属する場合も同様である。
【００３４】
図５（ｂ）は、ＢＰ１３とＴＰ１４が異なるエリアに属する場合の例を示している。ここでは、ＴＰ１４がエリアＡに属するのに対し、ＢＰ１３がエリアＢに属する場合の例である。ここで、ＢＰ１３をエリアＡにシフトさせて共通化するが、本実施の形態では、単純にｘ軸方向での平行移動によりエリアＡまでシフトさせる。このとき、シフト後のＢＰ１３の位置は、ｙ軸１８上（ＢＰｘ＝０）となる。なお、ＴＰ１４がエリアＢに属し、ＢＰ１３がエリアＡに属する場合も同様に、ＢＰ１３を平行移動によりｙ軸１８上までシフトさせてＢＰ１３をＴＰ１４と同一エリアに属させる。
【００３５】
次に、同一エリア内で、ＢＰ１３をＴＰ１４に対するＢ１もしくはＢ２の位置にシフトさせる。図６は、ＢＰ１３をＴＰ１４に対するＢ１もしくはＢ２の位置にシフトさせる場合の例を示した図である。なお、図６（ａ）〜（ｃ）においては、ＢＰ１３とＴＰ１４がともにエリアＡに属する場合を例としているが、ともにエリアＢに属する場合は左右が逆となるだけで概念は同様であるため説明は省略する。
【００３６】
ＢＰ１３をシフトさせるパターンは、ＴＰ１４の位置、およびＴＰ１４に対するＢＰ１３の相対位置に応じて異なる。なお、本実施の形態では、基本的な方針として可能な場合はｘ軸方向に先に所望の位置までシフトさせ、その後ｙ軸方向にシフトさせるものとするが、逆の順序であってもよい。
【００３７】
図６（ａ）は、ＴＰ１４がｘ軸１７上にもｙ軸１８上にもない場合の例である。ここでは、ＴＰ１４の位置に対して、ＢＰ１３の相対位置を図中のＡ〜Ｈの８つの領域に分けて、シフトさせるパターンを定義する。
【００３８】
（Ａ）ＢＰ１３が領域Ａに属する場合
この場合は、ＢＰ１３をＢ１を目標としてシフトさせることになる（Ｂ２よりもＢ１のほうが近い）。従って、ＢＰ１３を右方向（−ｘ方向）にシフトさせ、領域Ｂにシフトさせる。
【００３９】
（Ｂ）ＢＰ１３が領域Ｂに属する場合
この場合も同様に、ＢＰ１３をＢ１を目標としてシフトさせることになる（Ｂ２よりもＢ１のほうが近い）。従って、ＢＰ１３を後方向（＋ｙ方向）にシフトさせる。
【００４０】
（Ｃ）ＢＰ１３が領域Ｃに属する場合
この場合は、ＢＰ１３からＢ１およびＢ２までの距離（シフト数）は同じである。そこで、ＴＰ１４の位置によって目標を決定する。後述するように、ＴＰ１４の位置によって、ＴＰ１４に対してＢＰ１３がＢ１にある場合とＢ２にある場合とで、その後にＴＰ１４をＧＰ１６までシフトさせる場合に要するシフト数が変わってくるからである。具体的には、ＴＰｘ＜ＴＰｙの場合、すなわち、ＴＰ１４とｘ軸１７との間の距離のほうが大きい場合は、Ｂ１を目標としてＢＰ１３を左方向（＋ｘ方向）にシフトさせ、領域Ｂにシフトさせる。ＴＰｘ≧ＴＰｙの場合、すなわち、ＴＰ１４とｙ軸１８との間の距離のほうが大きい場合は、Ｂ２を目標としてＢＰ１３を後方向（＋ｙ方向）にシフトさせる。
【００４１】
（Ｄ）ＢＰ１３が領域Ｄに属する場合
この場合は、ＢＰ１３をシフトさせる目標をＢ１とするかＢ２とするかに関わらず、ＢＰ１３を左方向（＋ｘ方向）にシフトさせ、領域Ｃもしくは領域Ｄにシフトさせる。（領域Ｄ内の点線で示された領域Ｄ’についても同様）。
【００４２】
（Ｅ）ＢＰ１３が領域Ｅに属する場合
この場合は、ＢＰ１３をＢ２を目標としてシフトさせることになる（Ｂ１よりもＢ２のほうが近い）。従って、ＢＰ１３を前方向（−ｙ方向）にシフトさせる。
【００４３】
（Ｆ）ＢＰ１３が領域Ｆに属する場合
この場合も同様に、ＢＰ１３をＢ２を目標としてシフトさせることになる（Ｂ１よりもＢ２のほうが近い）。従って、ＢＰ１３を右方向（−ｘ方向）にシフトさせ、領域Ｅにシフトさせる。
【００４４】
（Ｇ）ＢＰ１３が領域Ｇに属する場合
この場合は、ＢＰ１３からＢ１およびＢ２までのシフト数は同じである。そこで、領域Ｃに属する場合と同様に、ＴＰ１４の位置によって目標を決定する。具体的には、ＴＰｘ＜ＴＰｙの場合、すなわち、ＴＰ１４とｘ軸１７との間の距離のほうが大きい場合は、Ｂ１を目標としてＢＰ１３を前方向（−ｙ方向）にシフトさせ、領域Ｈにシフトさせる。ここでは、ＴＰ１４を迂回してＢＰ１３をＢ１までシフトさせるため、先にｙ方向にシフトさせる。ＴＰｘ≧ＴＰｙの場合、すなわち、ＴＰ１４とｙ軸１８との間の距離のほうが大きい場合は、Ｂ２を目標としてＢＰ１３を右方向（−ｘ方向）にシフトさせ、領域Ｆにシフトさせる。
【００４５】
（Ｈ）ＢＰ１３が領域Ｈに属する場合
この場合は、ＢＰ１３をＢ１を目標としてシフトさせることになる（Ｂ２よりもＢ１のほうが近い）。従って、ＢＰ１３を前方向（−ｙ方向）にシフトさせ、領域Ａにシフトさせる。ここでは、ＴＰ１４を迂回してＢＰ１３をＢ１までシフトさせるため、先にｙ方向にシフトさせる。
【００４６】
図６（ｂ）は、ＴＰ１４がｘ軸１７上にある場合の例である。ここで、ＢＰ１３が領域Ｈに属する場合は、図４（ｂ）で示したとおり、目標はＢ２となる。また、ｘ軸１７上では−ｙ方向にはブロック１１は存在しない。従って、ＢＰ１３が領域Ｈに属する場合は、ＢＰ１３を上記のパターン（Ｈ）とは逆に後方向（＋ｙ方向）にシフトさせ、領域Ｇにシフトさせる。領域Ｇでは、上記のパターン（Ｇ）と同様に処理を行えば、自動的にＢ２を目標として右方向（−ｘ方向）にシフトさせることになる（ＴＰ１４はｘ軸１７に近い位置にあるため）。
【００４７】
同様に、図６（ｃ）は、ＴＰ１４がｙ軸１８上にある場合の例である。ここで、ＢＰ１３が領域Ｆに属する場合は、図４（ｃ）で示したとおり、目標はＢ１となる。また、ｙ軸１８上では−ｘ方向にはエリアＡに属するブロック１１は存在しない。従って、ＢＰ１３が領域Ｆに属する場合は、ＢＰ１３を上記のパターン（Ｆ）とは逆に左方向（＋ｘ方向）にシフトさせ、領域Ｇにシフトさせる。領域Ｇでは、上記のパターン（Ｇ）と同様に処理を行えば、自動的にＢ１を目標として前方向（−ｙ方向）にシフトさせることになる（ＴＰ１４はｙ軸１８に近い位置にあるため）。
【００４８】
上記のような処理によって、同一エリア内で、ＢＰ１３をＴＰ１４に対するＢ１もしくはＢ２の位置に適切にシフトさせることができる。その後は、ＴＰ１４をＢＰ１３の位置にシフトさせる。これにより、ＴＰ１４はＧＰ１６に１ブロック近づくことになる。しかし、ＴＰ１４に対するＢＰ１３の位置はＢ１もしくはＢ２の位置ではなくなってしまう。従って、上記のパターンを再度実行することで、ＢＰ１３をＴＰ１４に対してＢ１もしくはＢ２の位置にシフトさせる。この動作を繰り返すことで、ＴＰ１４をＧＰ１６の位置までシフトさせることができる。
【００４９】
図７は、ＢＰ１３をＴＰ１４に隣接させた後、ＴＰ１４をＧＰ１６までシフトさせる場合の例を示した図である。図７（ａ）は、ＴＰ１４がｘ軸１７およびｙ軸１８上にない場合の例を示している。図中の（１）において、ＴＰ１４をＢＰ１３の位置（−ｙ方向）にシフトさせる。その後、図中の（２）〜（４）に示すように、シフトしたＢＰ１３を、シフトしたＴＰ１４に対して新たにＢ２の位置を目標としてシフトさせる。このとき、初期状態である図中の（１）から、ＴＰ１４を１ブロックシフトさせ、シフト後のＴＰ１４に対して新たにＢ２の位置までＢＰ１３をシフトさせるまでの総シフト数は３となる。
【００５０】
同様に、図中の（４）において、ＴＰ１４をＢＰ１３の位置（−ｘ方向）にシフトさせる。その後、図中の（５）〜（７）に示すように、シフトしたＢＰ１３を、シフトしたＴＰ１４に対して新たにＢ１の位置を目標としてシフトさせる。この動作を繰り返すことにより、図中の（８）の点線矢印に示すように、ＴＰ１４はｘ軸方向とｙ軸方向を交互にジグザグ状にシフトすることになる。
【００５１】
一方、図７（ｂ）は、ＴＰ１４がｘ軸１７上にある場合の例を示している。図中の（１）において、ＴＰ１４をＴＰ１３の位置（−ｘ方向）にシフトさせる。その後、図中の（２）〜（６）に示すように、シフトしたＢＰ１３を、シフトしたＴＰ１４に対して新たにＢ２の位置を目標としてシフトさせる。この動作を繰り返すことにより、図中の（７）の点線矢印に示すように、ＴＰ１４はｘ軸１７上を直線状にシフトすることになる。これはＴＰ１４がｙ軸１８上にある場合も同様である。
【００５２】
なお、このとき、初期状態である図中の（１）から、ＴＰ１４を１ブロックシフトさせ、シフト後のＴＰ１４に対して新たにＢ２の位置までＢＰ１３をシフトさせるまでの総シフト数は５となる。すなわち、図７（ａ）に示すようにＴＰ１４がｘ軸１７およびｙ軸１８上にない場合と比べて、ＴＰ１４を１ブロックシフトさせるのに必要なシフト数は２多くなる。
【００５３】
図７（ｃ）は、ＴＰ１４を最初にＢ１にあるＢＰ１３を使用してＧＰ１６までシフトさせる場合と、Ｂ２にあるＢＰ１３を使用してＧＰ１６にシフトさせる場合の例を示した図である。図７（ｃ）に示すように、最初にＢ１にあるＢＰ１３を使用した場合は、ＴＰ１４がジグザグ状にシフトするシフト数が５、直線状にシフトするシフト数が３である。これに対し、最初にＢ２にあるＢＰ１３を使用した場合は、ＴＰ１４がジグザグ状にシフトするシフト数が６、直線状にシフトするシフト数が２である。
【００５４】
従って、総シフト数は、最初にＢ１にあるＢＰ１３を使用した場合が、３×５＋５×３＝３０、最初にＢ２にあるＢＰ１３を使用した場合が、３×６＋５×２＝２８となり、最初にＢ２にあるＢＰ１３を使用したほうが２少なくなる。このとき、最初にＢ２にあるＢＰ１３を使用したほうが有利となるのは、ＴＰ１４の初期位置においてｙ軸１８との距離のほうがｘ軸１７との距離より大きい、すなわち、ＴＰｘ≧ＴＰｙであるためである。同様に、ＴＰ１４の初期位置においてｘ軸１７との距離のほうがｙ軸１８との距離より大きい、すなわち、ＴＰｘ＜ＴＰｙの場合は、最初にＢ１にあるＢＰ１３を使用したほうが有利となる。なお、両者の総シフト数の差分は常に２となる。
【００５５】
従って、上記の図６において、ＴＰ１４の初期位置に対して最初にＢＰ１３をＢ１もしくはＢ２の位置にシフトさせる際に、移動距離（シフト数）が同じである場合（図６（ａ）における領域Ｃおよび領域Ｇの場合）は、ＴＰｘ≧ＴＰｙの場合はＢ２、ＴＰｘ＜ＴＰｙの場合（ｘ軸１７との距離のほうが大きい場合）はＢ１を目標とするほうが総シフト数が少なくなる。なお、ＢＰ１３をＢ１とＢ２の位置の間でシフトさせるシフト数は２である（Ｂ１とＢ２の間の距離は２である）ため、図６（ａ）における領域Ｃおよび領域Ｇ以外の場合は、Ｂ１とＢ２のうちＢＰ１３の位置からいずれか近いほうを目標とすればよいことになる。
【００５６】
以上のように、まず、出庫の対象物が置かれたＴＰ１４に対して、ＢＰ１３をシフトさせることで、ＴＰ１４とのエリアを共通化する。その後、ＴＰ１４の位置、およびＴＰ１４の位置に対するＢＰ１３の相対位置（属する領域）に応じてＢＰ１３をシフトさせ、ＴＰ１４に対して、ＧＰ１６に近い側の隣接ブロックであるＢ１もしくはＢ２の位置で隣接させる。その後、ＢＰ１３の位置にＴＰ１４をシフトさせ、シフト後のＴＰ１４の位置に対して、シフト後のＢＰ１３を再度Ｂ１もしくはＢ２の位置にシフトして隣接させる。この処理をＴＰ１４がＧＰ１６に到達するまで繰り返すことにより、ＴＰ１４に置かれた対象物を出庫する。
【００５７】
［パレットシフト制御処理フロー］
以下では、上述した本実施の形態の平面パズル式格納庫１における出庫時のパレットシフトの制御手法の処理フローについて説明する。これらの処理は、例えば、ソフトウェア等によるプログラムとして実装し、制御部２１によって実行するようにすることが可能である。
【００５８】
図８は、パレット１２のシフト方向の例を示した図である。ここではパレット１２のうち、シフト対象のものを代表的にＦパレットと表記する。Ｆパレットは、制御部２１からの指示により、ｘ方向（左方向）、−ｘ方向（右方向）、ｙ方向（後方向）、−ｙ方向（前方向）にシフトさせることができる。ＴＰ１４をシフトさせる場合は、ＦパレットはＴＰ１４となる。また、ＢＰ１４をシフトさせる場合は、ＢＰ１４のシフト方向で隣接するパレット１２がＦパレットとなる。例えば、ＢＰ１４を−ｘ方向にシフトさせたい場合は、ＢＰ１４の−ｘ方向で隣接するパレット１２がＦパレットとなる。このとき、Ｆパレットはｘ方向にシフトされ、これに伴いＢＰ１４は−ｘ方向にシフトされる。
【００５９】
図１は、パレットシフト制御全体の処理の例について概要を示したフローチャートである。平面パズル式格納庫１に格納されている対象物に対して、入出力部２３を介して出庫要求を受けると、制御部２１は、まず、出庫の対象物が置かれたＴＰ１４に対して、必要に応じてＢＰ１３をシフトして、ＴＰ１４とのエリアを共通化するエリア共通化シフト処理を行う（Ｓ１００）。
【００６０】
次に、ＴＰ１４の位置、およびＴＰ１４の位置に対するＢＰ１３の相対位置に応じてＢＰ１３をシフトさせ、ＴＰ１４に対して、ＧＰ１６に近い側の隣接ブロックであるＢ１もしくはＢ２の位置で隣接させるＢＰシフト処理を行う（Ｓ２００）。次に、ＴＰ１４をＢＰ１３の位置に１ブロックシフトさせるＴＰシフト処理を行う（Ｓ３００）。
【００６１】
その後、ＴＰ１４が入出庫口１５、すなわちＧＰ１６の位置に到達したか否かを判定する（Ｓ４００）。ＴＰ１４がＧＰ１６の位置に到達していない場合は、ステップＳ２００に戻り、シフト後のＴＰ１４の位置に対して、シフト後のＢＰ１３を再度Ｂ１もしくはＢ２の位置にシフトさせて隣接させる。ステップＳ４００で、ＴＰ１４がＧＰ１６の位置に到達している場合は処理を終了する。この時点で入出庫口１５から対象部を出庫することができる。
【００６２】
図９は、図１のエリア共通化シフト処理（Ｓ１００）の例を示したフローチャートである。エリア共通化シフト処理を開始すると、まず、記憶部２２に記憶された情報を取得して、ブロック１１のマトリクスにおけるＢＰ１３およびＴＰ１４の位置（ｘ座標、ｙ座標）を特定する（Ｓ１０１、Ｓ１０２）。次に、ＢＰ１３とＴＰ１４のｘ座標値の比較により、これらが同じエリアに属するか否かを判定する（Ｓ１０３）。同じエリアに属する場合はそのまま処理を終了する。
【００６３】
ステップＳ１０３で、ＢＰ１３とＴＰ１４が同じエリアに属さない場合は、ＢＰ１３がエリアＡに属するか否かを判定する（Ｓ１０４）。エリアＡに属する場合は、Ｆパレットを＋ｘ方向にシフトさせることでＢＰ１３を−ｘ方向にシフトさせ（Ｓ１０５）、エリアＡに属さない場合は、Ｆパレットを−ｘ方向にシフトさせることでＢＰ１３を＋ｘ方向にシフトさせる（Ｓ１０６）。その後、ステップＳ１０３に戻って処理を繰り返すことで、ＢＰ１３がＴＰ１４と同じエリアに属するまで、すなわち、ＢＰ１３がｙ軸１８上にシフトされるまでＢＰ１３をシフトさせる。
【００６４】
図１０は、図１のＢＰシフト処理（Ｓ２００）の例を示したフローチャートである。なお、以降のフローチャートでは、ＢＰ１３とＴＰ１４がともにエリアＡに属する場合を例としているが、ともにエリアＢに属する場合は左右（ｘ方向の正負）が逆となるだけで処理内容は同様であるため説明は省略する。
【００６５】
ＢＰシフト処理を開始すると、まず、ＢＰ１３とＴＰ１４との間の距離（以下では「ΔＢＰ」と記載する場合がある）を算出する（Ｓ２０１）。ΔＢＰは、ＢＰ１３とＴＰ１４の各ｘ座標、ｙ座標の差分の絶対値の和となる。
【００６６】
次に、ステップＳ２０１で算出したΔＢＰと、ＢＰ１３、ＴＰ１４のそれぞれのブロック位置数｜ＢＰ｜、｜ＴＰ｜とから、ＢＰ１３がＴＰ１４に対してＢ１もしくはＢ２の位置にあるか否かを判定する（Ｓ２０２）。具体的には、ΔＢＰ＝１、すなわちＢＰ１３がＴＰ１４に隣接しており、かつ、｜ＴＰ｜−｜ＢＰ｜＝１、すなわち、ＢＰ１３のブロック位置数がＴＰ１４のブロック位置数より１少ない場合に、ＢＰ１３はＴＰ１４に対してＢ１もしくはＢ２の位置にあると判定することができる。ここでＢＰ１３がＢ１もしくはＢ２の位置にあると判定された場合はそのまま処理を終了する。
【００６７】
ステップＳ２０２で、ＢＰ１３がＢ１もしくはＢ２の位置にないと判定された場合は、以降の処理でＢＰ１３をＴＰ１４に対してＢ１もしくはＢ２の位置に近づけるよう、ＢＰ１３を１ブロックシフトさせる。まず、後述する同一ライン上シフト処理により、上述した図６における領域Ｆもしくは領域ＨにＢＰ１３がある場合に、上述の図６で示したパターンに従ってＢＰ１３を領域Ｆもしくは領域Ｈからシフトさせる処理を行う（Ｓ２０３）。
【００６８】
次に、ＴＰ１４に対してＢＰ１３が図６におけるどの領域に属するかによってＢＰ１３をシフトさせるパターンを決定する。まず、ＢＰｘとＴＰｘを比較し（Ｓ２０４）、ＢＰｘ＝ＴＰｘの場合（領域Ｂ）は、上述のパターン（Ｂ）に従って、ＢＰ１３を後方向（＋ｙ方向）にシフトさせる。すなわち、Ｆパレットを−ｙ方向にシフトさせる（Ｓ２０５）。
【００６９】
ステップＳ２０４で、ＢＰｘ＞ＴＰｘの場合（領域Ａ、Ｇ）は、ＢＰｙとＴＰｙを比較する（Ｓ２０６）。ＢＰｙ＞ＴＰｙではない場合（領域Ａ）は、上述のパターン（Ａ）に従って、ＢＰ１３を右方向（−ｘ方向）にシフトさせる。すなわち、Ｆパレットを＋ｘ方向にシフトさせる（Ｓ２０７）。ＢＰｙ＞ＴＰｙの場合（領域Ｇ）は、上述のパターン（Ｇ）に従って、ＴＰ１４の位置によってシフトさせる方向を決定するため、ＴＰｘとＴＰｙを比較する（Ｓ２０８）。
【００７０】
ステップＳ２０８で、ＴＰｘ＜ＴＰｙの場合は、Ｂ１が有利となるため、ＢＰ１４を前方向（−ｙ方向）にシフトさせる。すなわち、Ｆパレットを＋ｙ方向にシフトさせる（Ｓ２０９）。ＴＰｘ＜ＴＰｙではない場合は、Ｂ２が有利もしくはいずれも同じとなるため、ＢＰ１４を右方向（−ｘ方向）にシフトさせる。すなわち、Ｆパレットを＋ｘ方向にシフトさせる（Ｓ２０７）。
【００７１】
ステップＳ２０４で、ＢＰｘ＜ＴＰｘの場合（領域Ｃ、Ｄ、Ｅ）は、ＢＰｘとＴＰｘ−１を比較する（Ｓ２１０）。ＢＰｘ＜ＴＰｘ−１の場合（領域Ｄ）は、上述のパターン（Ｄ）に従って、ＢＰ１３を左方向（＋ｘ方向）にシフトさせる。すなわち、Ｆパレットを−ｘ方向にシフトさせる（Ｓ２１３）。ＢＰｘ＜ＴＰｘ−１ではない場合は、ＢＰｙとＴＰｙを比較する（Ｓ２１１）。
【００７２】
ステップＳ２１１で、ＢＰｙ＜ＴＰｙではない場合（領域Ｅ）は、上述のパターン（Ｅ）に従って、ＢＰ１３を前方向（−ｙ方向）にシフトさせる。すなわち、Ｆパレットを＋ｙ方向にシフトさせる。ＢＰｙ＜ＴＰｙの場合（領域Ｃ）は、上述のパターン（Ｃ）に従って、ＴＰ１４の位置によってシフトさせる方向を決定するため、ＴＰｘとＴＰｙを比較する（Ｓ２１２）。
【００７３】
ステップＳ２１２で、ＴＰｘ＜ＴＰｙの場合は、Ｂ１が有利となるため、ＢＰ１４を左方向（＋ｘ方向）にシフトさせる。すなわち、Ｆパレットを−ｘ方向にシフトさせる（Ｓ２１３）。ＴＰｘ＜ＴＰｙではない場合は、Ｂ２が有利もしくはいずれも同じとなるため、ＢＰ１４を後方向（＋ｙ方向）にシフトさせる。すなわち、Ｆパレットを−ｙ方向にシフトさせる（Ｓ２０５）。
【００７４】
以上の処理により、Ｆパレットをｘ方向もしくはｙ方向に１ブロックシフトさせてＢＰ１３をシフトさせた後、ステップＳ２０１に戻り、ＢＰ１３がＴＰ１４に対してＢ１もしくはＢ２の位置にシフトさせるまで上記の一連の処理を繰り返す。
【００７５】
図１１は、図１０のＢＰシフト処理における同一ライン上シフト処理（Ｓ２０３）の例を示したフローチャートである。ここでは、ＢＰ１３がＴＰ１４と同一ライン上にあって、ＢＰ１３のほうがＴＰ１４よりＧＰ１６から遠い場合、すなわち、図６における領域Ｆもしくは領域ＨにＢＰ１３がある場合に、上述の図６で示したパターンに従ってＢＰ１３を領域Ｆもしくは領域Ｈからシフトさせる。
【００７６】
まず、ＢＰｙとＴＰｙとを比較し（Ｓ２３１）、ＢＰｙ＝ＴＰｙではない場合は、ＢＰｘとＴＰｘとを比較する（Ｓ２３２）。ＢＰｘ＝ＴＰｘではない場合は、ＢＰ１３とＴＰ１４は同一ライン上にはない（ＢＰ１３は領域Ｂ、Ｄ、Ｆ、Ｈにはない）と判定し、そのまま処理を終了する。
【００７７】
ステップＳ２３２で、ＢＰｘ＝ＴＰｘである場合（領域Ｂ、Ｆ）は、ＢＰｙとＴＰｙを比較する（Ｓ２３３）。ＢＰｙ＞ＴＰｙではない場合（領域Ｂ）は、そのまま処理を終了する。ＢＰｙ＞ＴＰｙの場合（領域Ｆ）は、ＴＰｘ＝０であるか否かにより、ＴＰ１４（およびＢＰ１３）がｙ軸１８上にあるか否かを判定する（Ｓ２３４）。ＴＰｘ＝０である（ｙ軸１８上にある）場合は、図６（ｃ）のパターンに従って、ＢＰ１３を左方向（＋ｘ方向）にシフトさせる。すなわち、Ｆパレットを−ｘ方向にシフトさせる（Ｓ２３５）。ＴＰｘ＝０ではない（ｙ軸１８上にはない）場合は、上述のパターン（Ｆ）に従って、ＢＰ１３を右方向（−ｘ方向）にシフトさせる。すなわち、Ｆパレットを＋ｘ方向にシフトさせる（Ｓ２３６）。
【００７８】
ステップＳ２３１で、ＢＰｙ＝ＴＰｙである場合（領域Ｄ、Ｈ）は、ＢＰｘとＴＰｘを比較する（Ｓ２３７）。ＢＰｘ＞ＴＰｘではない場合（領域Ｄ）は、そのまま処理を終了する。ＢＰｘ＞ＴＰｘの場合（領域Ｈ）は、ＴＰｙ＝０であるか否かにより、ＴＰ１４（およびＢＰ１３）がｘ軸１７上にあるか否かを判定する（Ｓ２３８）。ＴＰｙ＝０である（ｘ軸１７上にある）場合は、図６（ｂ）のパターンに従って、ＢＰ１３を後方向（＋ｙ方向）にシフトさせる。すなわち、Ｆパレットを−ｙ方向にシフトさせる（Ｓ２４０）。ＴＰｙ＝０ではない（ｘ軸１７上にはない）場合は、上述のパターン（Ｄ）に従って、ＢＰ１３を前方向（−ｙ方向）にシフトさせる。すなわち、Ｆパレットを＋ｙ方向にシフトさせる（Ｓ２３９）。
【００７９】
以上の処理により、ＢＰ１３が領域Ｆもしくは領域Ｈにある場合に、Ｆパレットをｘ方向もしくはｙ方向に１ブロックシフトさせてＢＰ１３をシフトし、ＢＰ１３を領域Ｆもしくは領域Ｈから出すことで処理を終了する。
【００８０】
図１２は、図１のＴＰシフト処理（Ｓ３００）の例を示したフローチャートである。ＴＰシフト処理を開始すると、まず、ＢＰｘ＝ＴＰｘであるか否かにより、ＢＰ１３がＴＰ１４に対してＢ１の位置にあるか否かを判定する（Ｓ３０１）。ＢＰｘ＝ＴＰｘである場合には、ＢＰ１３はＢ１の位置にあると判定し、ＴＰ１４（Ｆパレット）をＢ１の位置（−ｙ方向）にシフトさせる（Ｓ３０２）。ＢＰｘ＝ＴＰｘではない場合は、ＢＰ１３はＢ２の位置にあると判定し、ＴＰ１４をＢ２の位置（−ｘ方向）にシフトさせる（Ｓ３０３）。以上の処理により、ＴＰ１４を隣接するＢＰ１３の位置にシフトさせてＴＰシフト処理を終了する。
【００８１】
［パレット総シフト数算出処理フロー］
以下では、上述した出庫時のパレットのシフト制御手法に従ってＴＰ１４を出庫する際のパレット１２の総シフト数を算出する処理フローについて説明する。図１３は、本実施の形態のパレットシフト制御に従ってＴＰ１４を出庫する際のパレット１２の総シフト数算出処理の例について概要を示したフローチャートである。
【００８２】
平面パズル式格納庫１に格納されている対象物に対して、入出力部２３を介して出庫要求を受けると、制御部２１は、まず、出庫の対象物が置かれたＴＰ１４に対して、図１のエリア共通化シフト処理（Ｓ１００）によりＢＰ１３とＴＰ１４とのエリアを共通化する際に要するパレット１２のシフト数の小計ＢＳを算出するエリア共通化シフト数算出処理を行う（Ｓ６００）。
【００８３】
次に、図１のＢＰシフト処理（Ｓ２００）により、ＴＰ１４の初期位置に対してＢＰ１３をシフトさせ、Ｂ１もしくはＢ２の位置で最初にＴＰ１４に隣接させる際に要するパレット１２のシフト数の小計ＢＰＳを算出するＢＰシフト数算出処理を行う（Ｓ７００）。次に、図１のＴＰシフト処理（Ｓ３００）およびＢＰシフト処理（Ｓ２００）を繰り返してＴＰ１４をＧＰ１６の位置にシフトさせる際に要するパレット１２のシフト数の小計ＴＰＳを算出するＴＰシフト数算出処理を行う（Ｓ８００）。最後に、ステップＳ６００〜Ｓ８００で算出したＢＳ、ＢＰＳ、ＴＰＳを合計することにより、出庫要求から出庫までに要するパレット１２の総シフト数を算出し（Ｓ９００）、処理を終了する。
【００８４】
出庫要求から出庫までに要するパレット１２の総シフト数を算出することで、例えば、Ｆパレットを１ブロックシフトさせるのに要する単位シフト時間が既知である場合に、総シフト数と単位シフト時間との乗算により、出庫要求から出庫までの所要時間を算出することができる。また、出庫処理の開始からのシフト数をカウントすることにより、出庫までの残時間を算出することもできる。算出したこれらの時間を入出力部２３を介してユーザに提示することで、ユーザの利便性を高めることができる。
【００８５】
図１４は、図１３のエリア共通化シフト数算出処理（Ｓ６００）の例を示したフローチャートである。エリア共通化シフト数算出処理を開始すると、まず、記憶部２２に記憶された情報を取得して、ブロック１１のマトリクスにおけるＢＰ１３およびＴＰ１４の位置（ｘ座標、ｙ座標）を特定する（Ｓ６０１、Ｓ６０２）。次に、ＢＰ１３とＴＰ１４のｘ座標値の比較により、これらが同じエリアに属するか否かを判定する（Ｓ６０３）。同じエリアに属する場合は、エリア共通化シフト処理（Ｓ１００）によるＢＰ１３のシフトはないため、ＢＳ＝０として（Ｓ６０４）、処理を終了する。
【００８６】
ステップＳ６０３で、ＢＰ１３とＴＰ１４が同じエリアに属さない場合は、エリア共通化シフト処理（Ｓ１００）によりＢＰ１３がｙ軸１８上に平行移動されたものと仮定してＢＰｘ＝０とする（Ｓ６０５）。さらに、このときのシフト数としてＢＳ＝｜ＢＰｘ｜とし（Ｓ６０６）、処理を終了する。
【００８７】
図１５は、図１３のＢＰシフト数算出処理（Ｓ７００）の例を示したフローチャートである。ＢＰシフト数算出処理を開始すると、まず、ＢＰ１３とＴＰ１４との間の距離ΔＢＰを算出する（Ｓ７０１）。図１０のステップＳ２０１と同様に、ΔＢＰは、ＢＰ１３とＴＰ１４の各ｘ座標、ｙ座標の差分の絶対値の和となる。なお、ここでのＢＰ１３は、エリア共通化シフト処理（Ｓ１００）を実際に実行したと仮定した場合のものである。
【００８８】
次に、ＢＰｘとＴＰｘおよびＢＰｙとＴＰｙとを比較することにより、ＴＰ１４に対してＢＰ１３が図６に示した領域Ｆ、Ｇ、Ｈに属するか否かを判定する（Ｓ７０２）。ＢＰｘ≧ＴＰｘかつＢＰｙ≧ＴＰｙである場合（領域Ｆ、Ｇ、Ｈ）は、ＢＰ１３をシフトさせる目標がＢ１であるかＢ２であるかに関わらず、ＢＰ１３から見た場合にＢ１およびＢ２ともにＴＰ１４よりも１ブロック遠い位置にある。
【００８９】
従って、ＢＰ１３をＢ１もしくはＢ２にシフトさせるためのシフト数は、ＢＰ１３をＴＰ１４の位置まで仮想的にシフトさせた場合のシフト数であるΔＢＰより１大きくなるため、ＢＰＳ＝ΔＢＰ＋１とする（Ｓ７０３）。なお、この時点では、ＴＰ１４およびＢＰ１３がともにｘ軸１７もしくはｙ軸１８上にある場合は除外している。
【００９０】
一方、ＢＰｘ≧ＴＰｘかつＢＰｙ≧ＴＰｙではない場合（領域Ｆ、Ｇ、Ｈ以外）は、ＢＰ１３をシフトさせる目標がＢ１であるかＢ２であるかに関わらず、ＢＰ１３から見た場合にＢ１およびＢ２ともにＴＰ１４よりも１ブロック近い位置にある。従って、ＢＰ１３をＢ１もしくはＢ２にシフトさせるためのシフト数は、ΔＢＰより１小さくなるため、ＢＰＳ＝ΔＢＰ−１とする（Ｓ７０４）。
【００９１】
次に、ＢＰ１３がＴＰ１４に対してＢ１、Ｂ２のいずれにシフトされるかを判定する。まず、ＴＰｘとＴＰｙとを比較し、初期位置としてＢ１とＢ２のいずれにＢＰ１３をシフトさせるほうが有利であるかを判定する（Ｓ７０５）。ＴＰｘ＜ＴＰｙである場合は、Ｂ１が有利である。ここでさらに、ＢＰｘとＴＰｘおよびＢＰｙとＴＰｙとを比較することにより、ＴＰ１４に対してＢＰ１３が図６（ａ）に示した領域Ｄ’、Ｅ、Ｆに属するか否かを判定する（Ｓ７０６）。一方、ステップＳ７０５で、ＴＰｘ＜ＴＰｙではない場合は、Ｂ２が有利である。ここでさらに、ＢＰｘとＴＰｘおよびＢＰｙとＴＰｙとを比較することにより、ＴＰ１４に対してＢＰ１３が図６（ａ）に示した領域Ａ、Ｂ、Ｈに属するか否かを判定する（Ｓ７０７）。
【００９２】
ステップＳ７０６で、ＢＰ１３が領域Ｄ’、Ｅ、Ｆに属する場合、もしくは、ステップＳ７０７で、ＢＰ１３が領域Ａ、Ｂ、Ｈ以外に属する場合は、ＢＰ１３はＢ２を目標とすることになる。また、ステップＳ７０６で、ＢＰ１３が領域Ｄ’、Ｅ、Ｆ以外に属する場合、もしくは、ステップＳ７０７で、ＢＰ１３が領域Ａ、Ｂ、Ｈに属する場合は、ＢＰ１３はＢ１を目標とすることになる。
【００９３】
ＢＰ１３をＢ２を目標としてシフトさせると判定した場合、次に、ＢＰｘおよびＴＰｘがともに０であるか否かにより、ＢＰ１３およびＴＰ１４がともにｙ軸１８上にあるか否かを判定する（Ｓ７０８）。ＢＰ１３およびＴＰ１４がともにｙ軸１８上にない場合は、ＢＰ１３はそのままＢ２を目標とするため、ＢＰシフト処理（Ｓ２００）によりＢＰ１３がＢ２にシフトされたものと仮定してＢＰ１３の座標を設定し（Ｓ７１０）、処理を終了する。
【００９４】
一方、ＢＰ１３およびＴＰ１４がともにｙ軸１８上にある場合は（このときＢＰ１３はＴＰ１４に対して領域Ｆに属する）、ＢＰ１３は図６（ｃ）に示すようにＢ１を目標としてシフトされることになる。ＢＰ１３が領域ＥからＢ１にシフトされる際には、Ｂ２にシフトされるとした場合よりもシフト数が２大きくなる。従って、ステップＳ７０３もしくはＳ７０４で算出したＢＰＳに２を加算し（Ｓ７０９）、ＢＰシフト処理（Ｓ２００）によりＢＰ１３がＢ１にシフトされたものと仮定してＢＰ１３の座標を設定し（Ｓ７１３）、処理を終了する。
【００９５】
同様に、ステップＳ７０６もしくはＳ７０７で、ＢＰ１３がＢ１を目標としてシフトされると判定した場合、ＢＰｙおよびＴＰｙがともに０であるか否かにより、ＢＰ１３およびＴＰ１４がともにｘ軸１７上にあるか否かを判定する（Ｓ７１１）。ＢＰ１３およびＴＰ１４がともにｘ軸１７上にない場合は、ＢＰ１３はそのままＢ１を目標とするため、ＢＰシフト処理（Ｓ２００）によりＢＰ１３がＢ１にシフトされたものと仮定してＢＰ１３の座標を設定し（Ｓ７１３）、処理を終了する。
【００９６】
一方、ＢＰ１３およびＴＰ１４がともにｘ軸１７上にある場合は（このときＢＰ１３はＴＰ１４に対して領域Ｈに属する）、ＢＰ１３は図６（ｂ）に示すようにＢ２を目標としてシフトされることになる。ＢＰ１３が領域ＨからＢ２にシフトされる際には、Ｂ１にシフトされるとした場合よりもシフト数が２大きくなる。従って、ステップＳ７０３もしくはＳ７０４で算出したＢＰＳに２を加算し（Ｓ７１２）、ＢＰシフト処理（Ｓ２００）によりＢＰ１３がＢ２にシフトされたものと仮定してＢＰ１３の座標を設定し（Ｓ７１０）、処理を終了する。
【００９７】
図１６は、図１３のＴＰシフト数算出処理（Ｓ８００）の例を示したフローチャートである。ＴＰシフト数算出処理を開始すると、まず、｜ＴＰ｜＝１であるか否かにより、ＴＰ１４の初期位置がＧＰ１６に隣接した位置にあるか否かを判定する（Ｓ８０１）。｜ＴＰ｜＝１の場合はＴＰ１４の初期位置がＧＰ１６に隣接しており、この場合は、最初にＢＰ１３をＴＰ１４に対してＢ１もしくはＢ２の位置（すなわちＧＰ１６の位置）に隣接させた後に１回のシフトでＴＰ１４をＧＰ１６にシフトさせることができるため、ＴＰＳ＝１として（Ｓ８０２）、処理を終了する。
【００９８】
｜ＴＰ｜＝１ではない場合は、ＴＰｙとＢＰｘとを比較し（Ｓ８０３）、その結果に応じて異なる算出式を用いてＴＰＳを算出する。ＴＰｙ＝ＢＰｘである場合は、
ＴＰＳ＝｜ＴＰ｜×３−２
の式でＴＰＳを算出し（Ｓ８０４）、処理を終了する。
【００９９】
一方、ＴＰｙ＝ＢＰｘではない場合は、ＴＰｙとＢＰｘとを比較し（Ｓ８０５）、変数ＴＰｚ、ＢＰｚについて、ＴＰｙ＞ＢＰｘの場合はそれぞれＴＰｘ、ＢＰｘを設定する（Ｓ８０６）。また、ＴＰｙ＞ＢＰｘではない場合はそれぞれＴＰｙ、ＢＰｙを設定して（Ｓ８０７）、
ＴＰＳ＝｜ＴＰ｜×３＋
｛｜ＴＰ｜−（ＴＰｚ×２＋２）｝×２＋
（ＴＰｚ−ＢＰｚ）×２
の式でＴＰＳを算出し（Ｓ８０８）、処理を終了する。
【０１００】
以上に説明したように、本実施の形態の平面パズル式格納庫の制御方法によれば、入出庫口１５（入出庫口ブロック１６）を基準とした相対位置により空スペース１３、および対象パレット１４の位置を特定し、ブロック位置数を決定する。また、対象パレット１４の位置、および対象パレット１４の位置に対する空スペース１３の相対位置に応じて空スペース１３を対象パレット１４に隣接させることができる。
【０１０１】
従って、格納領域のマトリクスのサイズや入出庫口１５の位置、および出庫対象の対象パレット１４の位置や空スペース１３の位置に関わらず一律の制御手順により出庫することができる平面パズル式格納庫１を実現することができ、格納庫のサイズに対する拡張性や柔軟性を向上させることができる。
【０１０２】
また、対象パレット１４を入出庫口１５までシフトさせる際に、パレット１２の総シフト回数を最少とするシフトパターン、および総シフト回数を得ることができるため、出庫の効率およびユーザの利便性を向上させることができる。また、このとき、対象パレット１４をシフトさせる際には、基本的に各パレット１２をｘ軸方向とｙ軸方向とで交互にシフトさせることになるため、パレット１２およびその駆動機構の劣化を防止することができる。
【０１０３】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０１０４】
例えば、本実施の形態で説明した平面パズル式格納庫１としては、車両を格納する機械式駐車場以外に、書庫や、物品を保管する倉庫など、大きさや種類を問わず種々の格納庫に適用することができる。
【産業上の利用可能性】
【０１０５】
本発明は、機械式駐車場などの平面パズル式格納庫の制御方法および制御プログラムならびに平面パズル式格納庫に利用可能である。
【符号の説明】
【０１０６】
１…平面パズル式格納庫、１１…ブロック、１２…パレット、１３…空スペース（ＢＰ）、１４…対象パレット（ＴＰ）、１５…入出庫口、１６…入出庫口ブロック（ＧＰ）、１７…ｘ軸基準ライン（ｘ軸）、１８…ｙ軸基準ライン（ｙ軸）、２１…制御部、２２…記憶部、２３…入出力部。
【図１】
2011001760.tif 000003
【図２】
2011001760.tif 000004
【図３】
2011001760.tif 000005
【図４】
2011001760.tif 000006
【図５】
2011001760.tif 000007
【図６】
2011001760.tif 000008
【図７】
2011001760.tif 000009
【図８】
2011001760.tif 000010
【図９】
2011001760.tif 000011
【図１０】
2011001760.tif 000012
【図１１】
2011001760.tif 000013
【図１２】
2011001760.tif 000014
【図１３】
2011001760.tif 000015
【図１４】
2011001760.tif 000016
【図１５】
2011001760.tif 000017
【図１６】
2011001760.tif 000018