(57)【特許請求の範囲】
【請求項１】
相乗りを含む運行計画の作成の対象となる複数のユーザのうちそれぞれの前記ユーザに対応する要素の劣加法性を満たす可能性に応じて、前記要素を順位付けし、
順位付けられた前記要素のうち１番目の第１要素と２番目の第２要素とを含む第１部分集合に対し前記劣加法性を満たすか判定し、
前記第１部分集合に対し判定した結果が前記劣加法性を満たすことを示し、前記第１要素と前記第２要素と順位付けられた前記要素のうち３番目の第３要素とを含む第２部分集合に含まれる前記要素の数が所定数以下である場合に、前記第２部分集合に対し前記劣加法性を満たすか判定し、
前記第２部分集合に対し判定した結果が前記劣加法性を満たすことを示す場合、前記第１部分集合と前記第２部分集合とに基づいて前記運行計画を生成する
処理をコンピュータに実行させることを特徴とする運行計画プログラム。 
【請求項２】
前記第２部分集合に対し判定した結果が前記劣加法性を満たすことを示す場合、前記第１部分集合と前記第２部分集合とに基づいて、複数の前記要素を前記相乗りの対象とする複数のグループに分割し、
前記生成する処理において、分割された前記グループごとに相乗りして運行する前記運行計画を生成する
処理をさらにコンピュータに実行させることを特徴とする請求項１に記載の運行計画プログラム。
【請求項３】
複数の前記グループにそれぞれ含まれる前記要素のうち重複する前記要素がある場合、重複する前記要素を含む前記複数のグループのうち何れかの前記グループに含まれる重複する前記要素を削除する
処理をさらにコンピュータに実行させることを特徴とする請求項２に記載の運行計画プログラム。
【請求項４】
前記グループに含まれる複数の前記要素それぞれを単独で運行する場合の第１コストの合計に対する、前記グループに含まれる複数の前記要素のうちの第４要素を単独で運行する場合の第２コストの割合に応じて、前記グループに含まれる複数の前記要素を相乗りして運行する場合の第３コストを前記第４要素に配分する
処理をさらにコンピュータに実行させることを特徴とする請求項２または３に記載の運行計画プログラム。
【請求項５】
前記生成する処理において、前記第１部分集合に対し判定した結果が前記劣加法性を満たすことを示し、前記第２部分集合に含まれる前記要素の数が所定数以下ではない場合に、前記第１部分集合と前記第２部分集合のうち前記第１部分集合のみに基づいて前記運行計画を生成する
処理をさらにコンピュータに実行させることを特徴とする請求項１〜４の何れか１つに記載の運行計画プログラム。
【請求項６】
相乗りを含む運行計画の作成の対象となる複数のユーザのうちそれぞれの前記ユーザに対応する要素の劣加法性を満たす可能性に応じて、前記要素を順位付けし、
順位付けられた前記要素のうち１番目の第１要素と２番目の第２要素とを含む第１部分集合に対し前記劣加法性を満たすか判定し、
前記第１部分集合に対し判定した結果が前記劣加法性を満たすことを示し、前記第１要素と前記第２要素と順位付けられた前記要素のうち３番目の第３要素とを含む第２部分集合に含まれる前記要素の数が所定数以下である場合に、前記第２部分集合に対し前記劣加法性を満たすか判定し、
前記第２部分集合に対し判定した結果が前記劣加法性を満たすことを示す場合、前記第１部分集合と前記第２部分集合とに基づいて前記運行計画を生成する
処理をコンピュータが実行することを特徴とする運行計画方法。
【請求項７】
相乗りを含む運行計画の作成の対象となる複数のユーザのうちそれぞれの前記ユーザに対応する要素の劣加法性を満たす可能性に応じて、前記要素を順位付けし、順位付けられた前記要素のうち１番目の第１要素と２番目の第２要素とを含む第１部分集合に対し前記劣加法性を満たすか判定し、前記第１部分集合に対し判定した結果が前記劣加法性を満たすことを示し、前記第１要素と前記第２要素と順位付けられた前記要素のうち３番目の第３要素とを含む第２部分集合に含まれる前記要素の数が所定数以下である場合に、前記第２部分集合に対し前記劣加法性を満たすか判定し、前記第２部分集合に対し判定した結果が前記劣加法性を満たすことを示す場合、前記第１部分集合と前記第２部分集合とに基づいて前記運行計画の生成を制御する制御部
を有することを特徴とする運行計画装置。
【請求項８】
相乗りを依頼する端末装置と、
前記端末装置から依頼を受け付けた、相乗りを含む運行計画の作成の対象となる複数のユーザのうちそれぞれの前記ユーザに対応する要素の劣加法性を満たす可能性に応じて、前記要素を順位付けし、順位付けられた前記要素のうち１番目の第１要素と２番目の第２要素とを含む第１部分集合に対し前記劣加法性を満たすか判定し、前記第１部分集合に対し判定した結果が前記劣加法性を満たすことを示し、前記第１要素と前記第２要素と順位付けられた前記要素のうち３番目の第３要素とを含む第２部分集合に含まれる前記要素の数が所定数以下である場合に、前記第２部分集合に対し前記劣加法性を満たすか判定し、前記第２部分集合に対し判定した結果が前記劣加法性を満たすことを示す場合、前記第１部分集合と前記第２部分集合とに基づいて前記運行計画の生成を制御する運行計画装置と、
を備えたことを特徴とする運行計画システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、運行計画プログラム、運行計画方法、運行計画装置および運行計画システムに関する。
【背景技術】
【０００２】
近年、過疎化等による赤字路線の発生などにより、十分な数のタクシー・バスを運行できないような地域がある。そこで、例えば、タクシー等の移動手段において、運賃の共同負担により、複数のユーザが相乗りする相乗り運行が提案されている。また、このような相乗り運行において、問題を配送計画問題としてとらえて、各ユーザの出発点、到着点を通る運行計画を立案する技術が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特平３−３７７６１号公報
【特許文献２】特開２００４−２８０７３４号公報
【特許文献３】特開２００１−３４８８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、配送計画問題は、相乗りするユーザ数が多くなると、計算量が増大し、厳密な解がえられない場合がある。また、配送計画問題としてとらえる場合には、タクシー会社等の運用会社側の立場からの最適化となり、ユーザが単独でタクシーを利用した場合よりも料金が高くならない性質（劣加法性）を満たせない場合がある。
【０００５】
一つの側面では、劣加法性を確保した運行計画を計算量を抑えて立案できる運行計画プログラム、運行計画方法、運行計画装置および運行計画システムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
第１の案では、運行計画プログラムは、コンピュータに、相乗りを含む運行計画の作成の対象となるユーザを要素とした集合に対して、劣加法性を満たす可能性の高さを示す指標を用いて、集合の要素を順序付け、順位の高い順かつ所定数以内の要素の組み合わせが劣加法性を満たすか判定し、劣加法性を満たした要素の組み合わせを、相乗りの対象とする部分集合に追加することで、集合を部分集合に分割する処理を実行させる。運行計画プログラムは、コンピュータに、分割された部分集合を用いて運行計画を生成する処理を実行させる。
【発明の効果】
【０００７】
本発明の一の実施態様によれば、劣加法性を確保した運行計画を計算量を抑えて立案できるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、システムの概略的な構成の一例を示す図である。
【図２】図２は、運行計画装置の機能的な構成を概略的に示した図である。
【図３】図３は、顧客情報のデータ構成の一例を示す図である。
【図４】図４は、コストデータベースのデータ構成の一例を示す図である。
【図５】図５は、登録画面の一例を示す図である。
【図６】図６は、有向枝の一例を示す図である。
【図７】図７は、運行計画画面の一例を示す図である。
【図８】図８は、分割処理の手順の一例を示すフローチャートである。
【図９】図９は、部分集合検索処理の手順の一例を示すフローチャートである。
【図１０】図１０は、判定処理の手順の一例を示すフローチャートである。
【図１１】図１１は、比較対象の分割処理の手順の一例を示すフローチャートである。
【図１２】図１２は、削除処理の手順の一例を示すフローチャートである。
【図１３】図１３は、削除処理の手順の別な一例を示すフローチャートである。
【図１４Ａ】図１４Ａは、具体的な一例を示す図である。
【図１４Ｂ】図１４Ｂは、具体的な一例を示す図である。
【図１５Ａ】図１５Ａは、具体的な他の一例を示す図である。
【図１５Ｂ】図１５Ｂは、具体的な他の一例を示す図である。
【図１６】図１６は、運行計画プログラムを実行するコンピュータの構成の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下に、本発明にかかる運行計画プログラム、運行計画方法、運行計画装置および運行計画システムの実施例を図面に基づいて詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下に示す実施例は、矛盾を起こさない範囲で適宜組み合わせてもよい。
【実施例１】
【００１０】
［システム構成］
実施例１に係る運行計画システムの一例を説明する。図１は、システムの概略的な構成の一例を示す図である。運行計画システム１０は、運行計画装置１１と、ユーザ端末１２とを有する。運行計画装置１１およびユーザ端末１２は、ネットワークＮに通信可能に接続されている。かかるネットワークＮの一態様としては、有線又は無線を問わず、携帯電話などの移動体通信網、インターネット（Internet）、ＬＡＮ（Local  Area  Network）やＶＰＮ（Virtual  Private  Network）などの任意の種類の通信網を採用できる。なお、図１の例では、ユーザ端末１２を１つ設けた場合を例示したが、これに限定されず、ユーザ端末１２を任意の数とすることができる。
【００１１】
運行計画装置１１は、一台の乗り物に複数のユーザが一緒に乗り合わせる相乗りの運行計画を生成する装置である。例えば、運行計画装置１１は、サーバコンピュータなどのコンピュータである。運行計画装置１１は、１台のコンピュータとして実装してもよく、また、複数台のコンピュータにより実装してもよい。なお、本実施例では、運行計画装置１１を１台のコンピュータとした場合を例として説明する。本実施例では、運行計画装置１１が、乗り物として、例えば、１０人程度が乗車可能なジャンボタクシーの相乗り運行の運行計画を生成する場合を例に説明する。本実施例では、運行計画装置１１は、タクシーの相乗りサービスを提供しており、ユーザ端末１２からの要求に応じて、各種の画面の画面情報を要求元へ送信して、要求元に画面を表示させ、画面から各種の情報の入力を受け付ける。
【００１２】
ユーザ端末１２は、運行計画装置１１が提供する相乗りサービスを利用するユーザが使用する装置である。例えば、ユーザ端末１２は、ユーザが使用するパーソナルコンピュータ、スマートフォンやタブレット端末などの情報処理装置などである。
【００１３】
［運行計画装置の構成］
次に、運行計画装置１１の構成について説明する。図２は、運行計画装置の機能的な構成を概略的に示した図である。図２に示す運行計画装置１１は、通信部２０と、記憶部２１と、制御部２２とを有する。
【００１４】
通信部２０は、ネットワークＮとの間で無線通信又は有線通信を行う通信インタフェースである。例えば、通信部２０は、ユーザ端末１２から相乗りサービスへのアクセス要求を受信する。また、例えば、通信部２０は、アクセス要求を受信したユーザ端末１２へ相乗りサービスの各種の画面の画面情報を送信する。
【００１５】
記憶部２１は、ハードディスク、ＳＳＤ（Solid  State  Drive）、光ディスクなどの記憶装置である。なお、記憶部２１は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ、ＮＶＳＲＡＭ（Non  Volatile  Static  Random  Access  Memory）などのデータを書き換え可能な半導体メモリであってもよい。記憶部２１は、制御部２２で実行されるＯＳ（Operating  System）や、後述する各種の処理を実行する各種プログラムを記憶する。さらに、記憶部２１は、各種情報を記憶する。例えば、記憶部２１は、特性関数情報３０と、顧客情報３１と、コストデータベース３２とを記憶する。なお、記憶部２１は、その他の各種の情報を記憶してもよい。例えば、記憶部２１は、相乗りサービスを利用可能なユーザを認証するため、各ユーザのユーザＩＤ（identification）やパスワードなどのマスタ情報が記憶されている。
【００１６】
特性関数情報３０は、コストの計算に用いる特性関数に関する各種の情報を記憶したデータである。本実施例では、相乗りのコストや経路を巡回セールスマン問題（traveling  salesman  problem：ＴＳＰ）として計算する。特性関数情報３０には、巡回セールスマン問題の特性関数や制約条件等が記憶される。特性関数や制約条件の詳細は、後述する。
【００１７】
顧客情報３１は、相乗りの要求を受け付けたユーザに関する各種の情報を記憶したデータである。本実施例では、顧客情報３１に、相乗りの要求を受け付けたユーザの出発地、目的地の情報を記憶する。図３は、顧客情報のデータ構成の一例を示す図である。図３に示すように、顧客情報３１は、顧客番号、出発点、到着点、ユーザの各項目を有する。なお、顧客情報３１は、上記以外にもユーザの属性に関する各種の情報を記憶してもよい。
【００１８】
顧客番号の項目は、相乗りの要求を受け付けたユーザを識別する識別情報を記憶する領域である。ユーザには、識別情報として、例えば、要求を受け付けた順にユニークな顧客番号が付与される。本実施例では、相乗りの運行を行う日別に、相乗りの要求を受け付けた順にユニークな顧客番号を付与する。顧客番号の項目には、ユーザに付与された顧客番号が格納される。出発点の項目は、顧客番号のユーザが要求した出発地点を記憶する領域である。到着点の項目は、顧客番号のユーザが要求した到着地点を記憶する領域である。本実施では、出発点を「ｏ」、到着点を「ｄ」として記号で示しているが、実際には出発点、到着点の位置を示す位置情報が記憶される。ユーザの項目は、相乗りを要求したユーザを記憶する領域である。
【００１９】
図３の例では、顧客番号「１」のユーザは、要求した出発点が「ｏ１」であり、要求した到着点が「ｄ１」であり、相乗りを要求したユーザが「Ａ」であることを示す。
【００２０】
図２に戻り、コストデータベース３２は、相乗りの要求したユーザを要素とした集合を分割した部分集合ごとのコストに関する各種の情報を記憶したデータである。図４は、コストデータベースのデータ構成の一例を示す図である。図４に示すように、コストデータベース３２は、部分集合、コスト値、経路情報の各項目を有する。なお、コストデータベース３２は、上記以外にもユーザの属性や到着時間などに関する各種の情報を記憶してもよい。
【００２１】
部分集合の項目は、部分集合に含まれる要素を記憶する領域である。図４の例では、部分集合に含まれる要素を顧客番号で示している。コスト値の項目は、部分集合に含まれる要素に対応するユーザを相乗りとして運行する場合のコストを記憶する領域である。なお、部分集合に含まれる要素が１つの場合は、要素に対応するユーザを単独で運行する場合のコストとなる。経路情報の項目は、部分集合に含まれる要素に対応するユーザを相乗りとして運行する場合の経路を記憶する領域である。
【００２２】
図４の例では、部分集合｛１｝は、部分集合に顧客番号「１」が含まれ、経路が出発点ｏ１→到着点ｄ１であり、経路のコストが「４」であることを示している。部分集合｛１，２｝は、部分集合に顧客番号「１」、「２」が含まれ、経路が出発点ｏ１→出発点ｏ２→到着点ｄ１→到着点ｄ２であり、経路のコストが「７」であることを示している。
【００２３】
図２に戻り、制御部２２は、運行計画装置１１全体を制御するデバイスである。制御部２２としては、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等の電子回路や、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路を採用できる。制御部２２は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部２２は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部２２は、受付部４０と、コスト算出部４１と、分割部４２と、削除部４３と、生成部４４と、コスト再計算部４５と、通知部４６とを有する。
【００２４】
受付部４０は、各種の操作を受け付ける。例えば、受付部４０は、ユーザ端末１２からアクセスを受け付けると、アクセス元に各種の操作画面の情報を送信してアクセス元のユーザ端末１２に操作画面を表示させ、操作画面から各種の操作を受け付ける。例えば、受付部４０は、相乗りサービスのＷｅｂサイトを提供する。受付部４０は、ユーザ端末１２から、相乗りサービスのＷｅｂサイトへのアクセスを受け付けると、ログイン画面の情報をアクセス元のユーザ端末１２へ送信してログイン画面を表示させ、ログインＩＤ及びパスワードを入力してログイン操作を受け付ける。受付部４０は、ログイン操作を受け付けると、入力されたログインＩＤ及びパスワードを事前に登録されたログインＩＤ及びパスワードと比較して認証を行う。受付部４０は、正当との認証が得られた場合、ユーザの出発点、到着点を登録する登録画面の情報をアクセス元のユーザ端末１２へ送信して登録画面を表示させ、ユーザの出発点、到着点の登録を受け付ける。
【００２５】
図５は、登録画面の一例を示す図である。図５の例は、ユーザ端末１２に表示される登録画面の一例を示している。登録画面１００は、ユーザ名を表示するユーザ名表示領域１０１と、出発点を指定する出発点指定領域１０２と、到着点を指定する到着点指定領域１０３とを有する。相乗り運行を希望するユーザは、相乗りを希望する日の前日に登録画面１００を用いて出発点と到着点を指定する。受付部４０は、登録画面１００に指定された出発点と到着点とユーザ名をユーザの顧客番号に対応付けて顧客情報３１に格納する。
【００２６】
コスト算出部４１は、分割部４２から、部分集合を指定して計算の指示を受け付ける。コスト算出部４１は、部分集合を指定して計算が指示されると、特性関数情報３０に記憶されたコストの計算に用いる特性関数に関する各種の情報を用いて、指定された部分集合に含まれる要素のユーザを相乗りで運行する場合のコストや経路を計算する。本実施例では、相乗りのコストや経路を巡回セールスマン問題として計算する。
【００２７】
例えば、｜Ｘ｜人のユーザの部分集合Ｘが指定されたものとする。ユーザｉは、出発点ｏｉであり、到着点ｄｉであるとする。また、例えば、タクシー会社の位置など、タクシーの最初の出発点（デポ）をｓとする。各地点の集合を頂点Ｐ（Ｘ）＝｛ｓ｝∪｛ｏｉ，ｄｉ｜ｉ∈Ｘ｝とし、地点間の有向枝を下記の式（１）に示すようにＡ（Ｘ）と記載する。コスト算出部４１は、各ユーザの出発点ｏｉ、到着点ｄｉ、デポｓを地点として各地点を相互に結ぶ有向枝を求める。
【００２８】
【数１】
0006715534.tif 000002
【００２９】
有向枝（ｐ,ｑ）は、地点ｐから地点ｑへの「道・経路」を表す。また、有向枝（ｐ,ｑ）に対してδ（（ｐ,ｑ））＝ｐ,ρ（（ｐ,ｑ））＝ｑと記載する。つまり、δ（（ｐ,ｑ））は有向枝（ｐ,ｑ）の始点、ρ（（ｐ,ｑ））は有向枝（ｐ,ｑ）の終点を表す。
【００３０】
また、コストを計算するため、有向枝に「コスト」を表す重み値を定める。例えば、コストを距離に応じて定める場合、有向枝（ｐ,ｑ）の重みは、地点ｐから地点ｑへの距離を用いる。例えば、有向枝ａの重みは、ｄ（ａ）と表す。
【００３１】
図６は、有向枝の一例を示す図である。図６の例は、ｏ１，ｏ２，ｄ１，ｄ２，ｓの有向枝の一例が示されている。ｏ１からｄ１への有向枝（ｏ１,ｄ１）の重みは、地点ｐから地点ｑの距離を用いる。
【００３２】
また、次のように変数を定義する。変数ｘ（ａ）は、有向枝ａを経路に使用する場合、「１」、経路に使用しない場合、「０」とする。変数ｙ（ａ）は、経路において、有向枝ａを通る順序に対応する変数とする。本実施例では、順番は、頂点数−１として、順に１つ減じて通過する順番を表す。すなわち、本実施例では、順番は、初期値を頂点数−１として、値が大きい方が早い順番であることを表すものとする。変数ｚ（ａ）は、有向枝ａの乗車人数を表す変数とする。
【００３３】
経路のコストは、経路に使用した有向枝の重みの合計（＝Σｄ（ａ）×ｘ（ａ））である。
【００３４】
コスト算出部４１は、巡回セールスマン問題として、以下の条件（３）〜（６）に示す制約条件の元で、以下の式（２）に示すようにコストを最小化する経路を算出する。
【００３５】
【数２】
0006715534.tif 000003
【００３６】
ここで、条件（３）〜（６）について説明する。
【００３７】
条件（３）は、以下の式（３−１）、（３−２）のように表される。
【００３８】
【数３】
0006715534.tif 000004
【００３９】
式（３−１）は、各地点から出る有向枝が１つであることを示す。式（３−２）は、各地点に入る有向枝が１つであることを定めている。すなわち、条件（３）は、経路とされた地点は１度しか通過しないことを定めている。
【００４０】
条件（４）は、以下の式（４−１）、（４−２）、（４−３）のように表される。
【００４１】
【数４】
0006715534.tif 000005
【００４２】
式（４−１）は、ｙ（ａ）が正となるのは、有向枝が経路として使用する場合のみであることを定めている。式（４−２）は、最初の出発点（デポ）ｓを出発するときにはｙ（ａ）が｜Ｐ（Ｘ）｜−１であることを定めている。式（４−３）は、地点を通過するとｙ（ａ）が１減ることを定めている。すなわち、条件（４）は、経路の地点が順に決定することを定めている。
【００４３】
条件（５）は、以下のように表される。
【００４４】
【数５】
0006715534.tif 000006
【００４５】
条件（５）は、出発点ｏｉを始点とする有向枝ａに対するｙ（ａ）の値が到着点ｄｉを始点とする有向枝ａに対するｙ（ａ）の値よりも大きいことを定めている。すなわち、条件（５）は、出発点よりも到着点を後で通ることを定めている。
【００４６】
条件（６）は、以下の式（６−１）、（６−２）、（６−３）、（６−４）、（６−５）のように表される。
【００４７】
【数６】
0006715534.tif 000007
【００４８】
式（６−１）は、ｚ（ａ）が正となるのは有向枝ａを使用する場合のみであることを定めている。式（６−２）は、最初の出発点（デポ）ｓを出発するときには乗車数が０であることを定めている。式（６−３）は、出発点である地点を通過すると、乗車数が１増えることを定めている。式（６−４）は、到着点である地点を通過すると、乗車数が１減ることを定めている。式（６−５）は、出発点（デポ）ｓへ向かう到着点ｄｉは最後にユーザを下すとき以外では右辺が１となることを定めている。すなわち、条件（６）は、タクシーが出発点（デポ）ｓへ向かう経路以外では、乗車するユーザ数がゼロにならないことを定めている。現在、法律により、タクシーは、空の場合には料金を発生させることができないため、自然な制約である。条件（６）は、タクシーがデポに向かう以外で空にならないことを保証する。この条件（６）の制約を加えたことにより、配送計画問題として扱った場合に、ユーザが単独でタクシーを利用した場合よりも料金が高くならないこと、つまり劣加法性が保証できなくなる。
【００４９】
コスト算出部４１は、部分集合Ｘを指定して計算が指示されると、コストデータベース３２を参照し、指定された部分集合Ｘに対応するコスト、経路が記憶されている場合、部分集合Ｘに対応するコスト、経路を回答する。一方、指定された部分集合Ｘに対応するコスト、経路がコストデータベース３２に記憶されていない場合、コスト算出部４１は、巡回セールスマン問題として、上述の条件（３）〜（６）に示す制約条件の元で、式（２）のコストを最小化する経路を算出する。そして、コスト算出部４１は、算出されたコスト、経路を回答する。また、コスト算出部４１は、指定された部分集合Ｘに対応付けて、コスト、経路をコストデータベース３２に格納する。これにより、コストデータベース３２にコスト、経路が格納済みの部分集合Ｘが指定された場合、コスト算出部４１は、巡回セールスマン問題を再度解くことなくコスト、経路を回答できる。
【００５０】
分割部４２は、相乗りの要求を受け付けた、運行計画の作成の対象となるユーザを、劣加法性を満たす複数のグループに分割する。例えば、運行計画の作成の対象となるユーザを要素とした集合Ｎ＝｛１，…，｜Ｎ｜｝を、劣加法性を満たす部分集合に分割する。
【００５１】
ここで、集合Ｎの分割には、要素の重複を許さずに部分集合に分割する手法と、要素の重複を許して部分集合に分割する手法がある。例えば、集合Ｎは、集合分割問題を解くことにより、要素の重複を許さずに部分集合に分割できる。また、集合Ｎは、集合被覆問題を解くことにより、要素の重複を許して部分集合に分割できる。集合分割問題および集合被覆問題は、０−１整数線形最適化問題として、以下の式（７）に示すことができる。
【００５２】
【数７】
0006715534.tif 000008
【００５３】
ここで、Ｌは、Ｎの部分集合Ｘの族を示す。集合分割問題の場合、式（７）の部分７０は、ρ∈｛＝｝とする。集合被覆問題の場合、式（７）の部分７０は、ρ∈｛≧｝とする。また、式（７−１）は、分割または被覆する部分集合Ｘの数を最小化する問題であることを定めている。式（７−２）は、集合分割問題（ρ∈｛＝｝）の場合、ユーザｉが１つの部分集合Ｘに属することなり、集合被覆問題（ρ∈｛≧｝）の場合、ユーザｉが少なくとも１つの部分集合Ｘに属することなる。部分集合ＸをＬの要素とするとき、式（７−３）の変数ξ（Ｘ）は、０または１をとる変数で、部分集合Ｘを利用する場合には、１になり、利用しない場合には、０になる。
【００５４】
式（７）は、Ｌの部分集合の中で、グループ数最小のＸの組み合わせを求める問題であり、例えば、専用のソルバを用いて解くことができる。
【００５５】
ここで、具体的な計算の一例を説明する。例えば、集合Ｎ、Ｌが以下であるものとする。
Ｎ＝｛１，２，３，４｝
Ｌ＝｛｛２｝，｛４｝，｛１，２，４｝，｛１，３｝，｛３，４｝｝
【００５６】
この場合、式（７−１）は、Ｌに含まれる各部分集合から、以下の式（８−１）のようになる。また、式（７−２）は、式（８−２）〜（８−５）のようになる。また、式（７−３）は、そのまま式（８−６）となる。
【００５７】
【数８】
0006715534.tif 000009
【００５８】
式（８−２）は、ユーザ「１」が属する部分集合Ｘに対応するξの和である。式（８−３）は、ユーザ「２」が属する部分集合Ｘに対応するξの和である。式（８−４）は、ユーザ「３」が属する部分集合Ｘに対応するξの和である。式（８−５）は、ユーザ「４」が属する部分集合Ｘに対応するξの和である。
【００５９】
この場合、集合分割問題での最適解は、｛１，３｝，｛２｝，｛４｝となる。集合被覆問題での最適解は、例えば、｛１，３｝，｛１，２，４｝となる。
【００６０】
ところで、一般的に、集合被覆問題は、集合分割問題よりも計算が容易である。しかし、集合被覆問題は、要素の重複が発生し、同じの要素が複数の部分集合Ｘに含まれる場合がある。そこで、例えば、分割部４２は、集合被覆問題として、最適解を求める。そして、後述する削除部４３により、部分集合Ｘから重複する要素を削除する。
【００６１】
ところで、式（７）に示した０，１の最適化問題は、問題の複雑さや規模によって実時間で解けない場合がある。そこで、最適化問題を緩和問題として扱うことが考えられる。例えば、式（７）に示した集合被覆問題のξを０，１をとる変数から非負の実数をとる変数に置き換えて連続緩和した緩和問題は、以下の式（９）のように示すことができる。
【００６２】
【数９】
0006715534.tif 000010
【００６３】
式（９）は、式（７）のξを０，１の整数をとる変数から非負実数をとる変数に置き換えたものである。Ｒ+は、非負実数を表す。緩和問題の最適値は、元の最適化問題の最適値よりも良い値になる。また、緩和問題は、連続線形最適化問題であり、元の最適化問題よりも計算が容易である。
【００６４】
さらに、連続線形最適化問題は、最適値が一致する双対問題を考えることができる。例えば、式（９）に示した緩和問題は、最適な部分集合に分割する観点から見た問題であり、ユーザ側の観点から見た場合、双対問題として、以下の式（１０）のように示すことができる。
【００６５】
【数１０】
0006715534.tif 000011
【００６６】
この双対問題を解いて得られる変数λ（ｉ）の情報は、ユーザｉに対応する情報になる。λ（ｉ）は、値が大きいほど、最適な分割を達成するにあたり、ユーザｉの要素が適している可能性が高いことを表す。この双対問題も、例えば、専用のソルバを用いて解くことができる。
【００６７】
そこで、分割部４２は、λ（ｉ）を劣加法性を満たす可能性の高さを示す指標として用いて、集合Ｎのユーザｉに対応する要素を順序付けする。そして、分割部４２は、順位の高い順かつ所定数ｍ以内の要素の組み合わせが劣加法性を満たすか判定する。そして、分割部４２は、劣加法性を満たした要素の組み合わせを、相乗りの対象とする部分集合Ｘに追加することで、集合Ｎを部分集合Ｘに分割する。所定数ｍは、部分集合Ｘに含める上限の人数であり、管理者等が運用等を考慮して適切に設定する。例えば、所定数ｍは、タクシー等での同時に乗車可能な人数としてもよい。
【００６８】
分割部４２は、劣加法性を満たす部分集合Ｘから、運行に使用する部分集合Ｘの組み合わせを求める。例えば、分割部４２は、劣加法性を満たす部分集合Ｘの族をＬとして、式（７）の最適化問題を解いて、部分集合Ｘの数が最小となる部分集合Ｘの組み合わせを求める。運行に使用する部分集合Ｘの組み合わせの求め方は、これに限定されず、何れの方式を用いてもよい。分割部４２は、運行の条件に応じて、部分集合Ｘの組み合わせの求め方を変えてもよい。例えば、運行するタクシーの運行台数が決まっている場合、分割部４２は、分割する部分集合Ｘの数を運行台数に合わせて、集合Ｎの要素が何れかに含まれるように部分集合Ｘの組み合わせの求めてもよい。また、例えば、ユーザを平均的に割り振る場合、分割部４２は、集合Ｎの要素が何れかに含まれ、要素数が同程となるように、部分集合Ｘの組み合わせの求めてもよい。各部分集合Ｘは、劣加法性を満たすため、何れの組み合わせを選択しても劣加法性を満たすことができる。
【００６９】
ところで、上述したように、分割部４２が、集合被覆問題として、最適化問題を解いた場合、要素が複数の部分集合Ｘで重複する場合がある。
【００７０】
そこで、削除部４３は、分割部４２で求めた部分集合Ｘの組み合わせで要素が重複する場合、要素が重複する部分集合Ｘごとに、何れか１つの部分集合Ｘを除いて重複する要素を削除する。重複する要素を削除する部分集合Ｘは、どのように定めてもよい。例えば、削除部４３は、部分集合Ｘを、例えば、要素数の少ない順など所定順に順序付ける。削除部４３は、順序付けた順に、順序が前の部分集合Ｘと要素の重複を確認し、順序が前の部分集合Ｘと重複する要素を削除してもよい。また、例えば、削除部４３は、要素が重複する部分集合Ｘごとに、要素数の最も少ない部分集合Ｘ以外から重複する要素を削除してもよい。また、例えば、削除部４３は、運用会社の売り上げ（コスト）が最大となるにように、重複する要素を削除する部分集合Ｘを求めてもよい。以下のコストの計算では、分割部４２で求めた部分集合Ｘの組み合わせをそれぞれ部分集合Ｐj（ｊ＝１，…，｜Ｐ｜）と表記する。
【００７１】
例えば、運用会社の売り上げ（ユーザのコストの合計）が最大となるにように削除する場合、以下の式（１１）に示す最適化問題を解いて、同一の要素を削除する部分集合Ｘを求めることができる。
【００７２】
【数１１】
0006715534.tif 000012
【００７３】
式（１１−１）に示したｆ（｛ｘｉｊ｝）は、売り上げを示す目的関数である。ｆ（｛ｘｉｊ｝）は、例えば、要素が重複する各部分集合Ｘについて、部分集合Ｘに含まれる要素に対応したコストデータベース３２のコストを合計する関数とする。そして、要素を削除する部分集合Ｘを変えて、ｆ（｛ｘｉｊ｝）が最大化されるように、要素を削除する部分集合Ｘを求める。目的関数ｆは、ｘｉｊ(ｉ∈Ｎ,ｊ  ∈  ｛１，…，｜Ｐ｜｝)は、すべてを引数としてとる。ｘｉｊは、ユーザｉの要素が部分集合Ｐｊに属している場合、「１」となり、属していない場合、「０」となる変数である。ｅｉｊは、分割によって得られた結果において、ユーザｉの要素が部分集合Ｐｊに属している場合、「１」となり、属していない場合、「０」となる定数である。削除部４３は、重複する要素を削除した部分集合Ｘを削除結果として出力する。例えば、削除部４３は、｛｛ｉ｜ｉ∈Ｎ，ｘｉｊ＝１｝，ｊ∈｛１,  …，｜Ｐ｜｝｝を削除結果として出力する。ｊ番目のグループには、ｘｉｊ＝１となったユーザｉが属するようになる。
【００７４】
分割部４２により分割された部分集合Ｘは、何れの要素の組み合わせでも劣加法性を満たしている。このため、削除部４３により要素が削除された部分集合Ｘも、要素の組み合わせについて、何れも劣加法性を満たす。また、集合Ｎの要素は、何れも重複することなく何れかの部分集合Ｘに含まれている。よって、運行計画の作成の対象となるユーザを各部分集合Ｘに対応したグループに分けることにより、ユーザは、劣加法性を満たすグループに分かれる。
【００７５】
生成部４４は、分割された部分集合Ｘを用いて運行計画を生成する。なお、分割部４２で求めた部分集合Ｘの組み合わせで要素が重複する場合、生成部４４は、削除部４３により重複する要素が削除された部分集合Ｘを用いて運行計画を生成する。例えば、生成部４４は、コストデータベース３２から、部分集合Ｘごとに、部分集合Ｘに含まれる要素に対応した経路情報を読み出して、経路を特定する。ここで、部分集合Ｘは、劣加法性を満たしている。このため、経路情報の経路で発生するコストは、部分集合Ｘの要素に対応するユーザそれぞれの単独で発生するコストの合計以下となる。すなわち、生成部４４は、劣加法性を確保した運行計画を生成できる。
【００７６】
本実施例では、部分集合Ｘに対応したグループごとに、劣加法性を確保されるが、グループ内でコスト（料金）をユーザにどのように配分するかの問題が残る。
【００７７】
そこで、コスト再計算部４５は、部分集合Ｘに対応したグループごとに、グループに属するユーザが全員損をしない配分方法で、コストをユーザに配分する。例えば、コスト再計算部４５は、部分集合Ｘごとに、部分集合Ｘに含まれる要素それぞれの単独のコスト値をコストデータベース３２から読み出す。また、例えば、コスト再計算部４５は、部分集合Ｘに含まれる要素全てを部分集合とした運行コストＶ（Ｘ）をコストデータベース３２から読み出す。そして、コスト再計算部４５は、以下の式（１２）に示すように、部分集合Ｘの運行コストＶ（Ｘ）を配分する。
【００７８】
【数１２】
0006715534.tif 000013
【００７９】
ここで、Ｖ（｛ｉ｝）は、要素ｉの単独のコストを表す。ΣＶ（｛ｊ｝）は、部分集合Ｘの要素それぞれの単独のコストの合計を表す。
【００８０】
通知部４６は、相乗りの要求を受け付けたユーザに対して、コストや運行計画を通知する。例えば、通知部４６は、乗合の運行を行う当日までに、コストや運行計画に基づいて、ユーザについての出発点、出発時間、到着点、到着時間を示した運行計画画面を相乗りの要求を受け付けたユーザのユーザ端末１２に表示させる。
【００８１】
図７は、運行計画画面の一例を示す図である。図７の例は、ユーザ端末１２に表示される運行計画画面の一例を示している。運行計画画面１２０には、出発点、出発時間、到着点、到着時間、料金が表示されている。相乗り運行を希望するユーザは、運行計画画面１２０から、出発時間や、到着時間、料金を把握できる。
【００８２】
［処理の流れ］
次に、本実施例に係る運行計画装置１１が実行する各種の処理の流れについて説明する。最初に、分割部４２が、相乗りの要求を受け付けた、運行計画の作成の対象となるユーザを、劣加法性を満たす複数のグループに分割する分割処理の流れについて説明する。図８は、分割処理の手順の一例を示すフローチャートである。この分割処理は、所定のタイミング、例えば、相乗り希望する日の前日の所定の処理開始時刻となったタイミングや、管理者から処理開始が指示されたタイミングで実行される。ここで、使用するパラメータについて説明する。運行計画の作成の対象となるユーザを要素とした集合を集合Ｎ＝｛１，…，｜Ｎ｜｝とする。また、Ｖ（Ｘ）は、部分集合Ｘ（Ｘ⊂Ｎ）に対するコストを表す。また、ｍは、部分集合Ｘに含める上限の人数を表す。
【００８３】
図８に示すように、分割部４２は、集合Ｎの各要素をそれぞれ単独でＬに追加する（Ｓ１０）。分割部４２は、集合Ｎの各要素についての劣加法性を満たす可能性の高さを示す指標λ（ｉ）を全て１に初期化する（Ｓ１１）。
【００８４】
分割部４２は、部分集合検索処理を実行して、劣加法性を満たした部分集合Ｘを求める（Ｓ１２）。
【００８５】
図９は、部分集合検索処理の手順の一例を示すフローチャートである。この部分集合検索処理は、分割処理のＳ１２から実行される。
【００８６】
図９に示すように、分割部４２は、指標λ（ｉ）を用いて、集合Ｎの要素ｉを順位づけする（Ｓ５０）。例えば、分割部４２は、集合Ｎの要素ｉに対して、λ（ａ１）≧λ（ａ２）≧・・・≧λ（ａＮ）となるように番号を付ける。ここで、最初に部分集合検索処理が実行された場合、指標λ（ｉ）を全て１に初期化されているため、要素ｉは、例えば、顧客番号の順に番号が付けられる。一方、２回目以降に部分集合検索処理が実行された場合、後述するＳ１７の処理で指標λ（ｉ）が更新されるため、要素ｉは、指標λ（ｉ）の大きい順に番号が付けられる。
【００８７】
分割部４２は、変数ｔに１を設定し、部分集合Ｘを空に初期化する（Ｓ５１）。分割部４２は、変数ｔの値が集合Ｎの要素数｜Ｎ｜以下、かつ、部分集合Ｘの要素数｜Ｘ｜がｍ以下であるか判定する（Ｓ５２）。
【００８８】
Ｓ５２の判定を満たす場合（Ｓ５２肯定）、分割部４２は、部分集合Ｘと番号ｔの要素の和の集合を部分集合Ｙとする（Ｓ５３）。分割部４２は、部分集合Ｙの要素の組み合わせが劣加法性を満たすか判定する判定処理を実行する（Ｓ５４）。
【００８９】
図１０は、判定処理の手順の一例を示すフローチャートである。この判定処理は、部分集合検索処理のＳ５４から実行される。
【００９０】
図１０に示すように、分割部４２は、部分集合Ｙの要素の組み合わせごとに、部分集合Ｚを求める（Ｓ１００）。分割部４２は、各部分集合Ｚから共通の要素がない、集合の組み合わせた集合ＳＴを求める（Ｓ１０１）。すなわち、分割部４２は、部分集合Ｙを、共通の要素がない、すべての部分集合の組である集合ＳＴに分ける。
【００９１】
分割部４２は、集合ＳＴから任意の要素（Ｓ，Ｔ）をとりだし、集合ＳＴから要素（Ｓ，Ｔ）を削除する（Ｓ１０２）。
【００９２】
分割部４２は、Ｓ、Ｔ、Ｓ∪Ｔをそれぞれ部分集合Ｘとして、コスト算出部４１に対して計算の指示する（Ｓ１０３）。コスト算出部４１では、指定された部分集合Ｘに対応するコスト、経路がコストデータベース３２に記憶されている場合、部分集合Ｘに対応するコスト、経路を回答する。一方、指定された部分集合Ｘに対応するコスト、経路がコストデータベース３２に記憶されていない場合、コスト算出部４１は、コスト、経路を算出して回答する。また、コスト算出部４１は、指定された部分集合Ｘに対応付けて、コスト、経路をコストデータベース３２に格納する。
【００９３】
分割部４２は、要素Ｓ、Ｔが劣加法性を満たすか判定する（Ｓ１０４）。例えば、分割部４２は、要素Ｓ、Ｔそれぞれの単独のコストＶ（Ｓ）、Ｖ（Ｔ）の合計が、要素Ｓ、Ｔの相乗りのコストＶ（Ｓ∪Ｔ）以上であるか判定する。
【００９４】
劣加法性を満たさない場合（Ｓ１０４否定）、分割部４２は、判定結果を劣加法性を満たさない（判定結果をFalse）として（Ｓ１０５）、判定処理を終了し、図９のＳ５５へ移行する。
【００９５】
劣加法性を満たす場合（Ｓ１０４肯定）、分割部４２は、集合ＳＴが空となったか否かを判定する（Ｓ１０６）。集合ＳＴが空ではない場合（Ｓ１０６否定）、上述のＳ１０２へ移行し、次の要素に対する劣加法性の検査を実行する。
【００９６】
一方、集合ＳＴが空である場合（Ｓ１０６肯定）、部分集合Ｙの要素の組み合わせは劣加法性を満たすため、分割部４２は、判定結果を劣加法性を満たす（判定結果をTrue）として（Ｓ１０７）、判定処理を終了し、図９のＳ５５へ移行する。
【００９７】
図９に戻り、分割部４２は、判定処理により、劣加法性を満たすとの判定結果（判定結果がTrue）であるか否かを判定する（Ｓ５５）。劣加法性を満たすとの判定結果が得られない場合（Ｓ５５否定）、後述するＳ５７へ移行する。
【００９８】
劣加法性を満たすとの判定結果が得られた場合（Ｓ５５肯定）、分割部４２は、部分集合Ｙの要素を部分集合Ｘに格納する（Ｓ５６）。分割部４２は、変数ｔの値に１を加算し（Ｓ５７）、上述のＳ５２へ移行する。
【００９９】
一方、Ｓ５２の判定を満たさない場合（Ｓ５２否定）、分割部４２は、部分集合Ｘを回答し（Ｓ５８）、部分集合検索処理を終了し、図８のＳ１３へ移行する。
【０１００】
図８に戻り、分割部４２は、回答として得られた部分集合Ｘに含まれる要素の指標λの合計が１より大きいか判定する（Ｓ１３）。ここで、最初に部分集合検索処理が実行された場合、指標λ（ｉ）を全て１に初期化されているため、部分集合Ｘの要素数が２以上であれば、Ｘに含まれる要素の指標λの合計が１より大きいと判定される。
【０１０１】
分割部４２は、Ｌに、部分集合Ｘを追加する（Ｓ１４）。分割部４２は、集合分割問題として、分割を行っているか判定する（Ｓ１５）。集合分割問題ではなく集合被覆問題である場合（Ｓ１５否定）、後述するＳ１７へ移行する。
【０１０２】
一方、集合分割問題である場合（Ｓ１５肯定）、分割部４２は、Ｌに、部分集合Ｘに含まれる要素についての全ての部分集合を追加する（Ｓ１６）。分割部４２は、専用のソルバを用いて、上述した式（１０）を解いて、集合Ｎの各要素についての劣加法性を満たす可能性の高さを示す指標λ（ｉ）を再計算し（Ｓ１７）、上述のＳ１２へ移行する。ここで、指標λ（ｉ）は、部分集合Ｘが定まることにより、次に適切な分割に適した要素に対応する指標λ（ｉ）が大きくなる。
【０１０３】
一方、部分集合Ｘに含まれる要素の指標λ（ｉ）の合計が１より大きくない場合（Ｓ１３否定）、分割部４２は、例えば、式（７）の最適化問題を解いて、Ｌに含まれる部分集合Ｘのうち、部分集合Ｘの数が最小となる部分集合Ｘの組み合わせを求める（Ｓ１８）。分割部４２が、部分集合Ｘの数が最小となる部分集合Ｘの組み合わせを分割結果として回答し（Ｓ１９）、処理を終了する。
【０１０４】
ここで、分割部４２は、図９のＳ５２に示すように、部分集合Ｘの要素数｜Ｘ｜をｍ以下の範囲に制限している。そして、分割部４２は、Ｙの部分集合に対してのみコストＶの計算を行っている。これにより、部分集合Ｘの要素の組み合わせが劣加法性を満たすか判定処理で、組み合わせの数が大きくならないため、計算量を抑えることができる。また、ｍの値を小さくすれば、劣加法性を満たすか判定処理で計算量が爆発的に増加しなくなるため、実時間で解を得ることができる。
【０１０５】
ここで、比較例を用いて説明する。図１１は、比較対象の分割処理の手順の一例を示すフローチャートである。ここで、使用するパラメータについて説明する。運行計画の作成の対象となるユーザを要素とした集合を集合Ｎ＝｛１，…，｜Ｎ｜｝とする。また、Ｖ（Ｘ）は、部分集合Ｘ（Ｘ⊂Ｎ）に対するコストを表す。また、Ｓは、Ｎの部分集合の族で、劣加法性を満たすものとする。
【０１０６】
図１１に示すように、分割部４２は、集合Ｎの各要素をそれぞれ単独でＬに追加する（Ｓ１８０）。分割部４２は、集合Ｎの各要素についての劣加法性を満たす可能性の高さを示す指標λ（ｉ）を全て１に初期化する（Ｓ１８１）。
【０１０７】
分割部４２は、Ｓに含まれる部分集合Ｘについて、部分集合Ｘに含まれる要素の指標λの合計が１より大きいか判定する（Ｓ１８２）。指標λの合計が１より大きい場合（Ｓ１８２肯定）、分割部４２は、Ｌに、部分集合Ｘを追加する（Ｓ１８３）。分割部４２は、専用のソルバを用いて、上述した式（１０）を解いて、集合Ｎの各要素についての劣加法性を満たす可能性の高さを示す指標λ（ｉ）を再計算し（Ｓ１８４）、上述のＳ１８２へ移行する。
【０１０８】
一方、部分集合Ｘに含まれる要素の指標λの合計が１より大きくない場合（Ｓ１８２否定）、分割部４２は、例えば、式（７）の最適化問題を解いて、Ｌに含まれる部分集合Ｘのうち、部分集合Ｘの数が最小となる部分集合Ｘの組み合わせを求め（Ｓ１８５）、処理を終了する。
【０１０９】
例えば、部分集合Ｘの要素数｜Ｘ｜をｍ以下の範囲に制限せずに、図１１に示した比較対象の分割処理のように集合Ｎを部分集合Ｘに分割する。この場合、集合Ｎの要素数｜Ｎ｜の増加に伴い計算量が爆発的に増加する。例えば、部分集合ＸのコストＶ（Ｘ）を求めるには、集合Ｎの要素を組み合わせた２Ｎのコスト計算が必要となる。また、Ｓを求めるには、３Ｎの計算が必要となる。
【０１１０】
一方、本実施例に係る分割処理では、図９のＳ５２に示すように、部分集合Ｘの要素数｜Ｘ｜をｍ以下の範囲に制限することで、計算量の増加を抑えることができる。
【０１１１】
次に、分割部４２が、部分集合Ｘから重複する要素を削除する削除処理の流れについて説明する。図１２は、削除処理の手順の一例を示すフローチャートである。この削除処理は、所定のタイミング、例えば、分割部４２により、集合被覆問題として、部分集合Ｘの組み合わせが得られたタイミングや、管理者から処理開始が指示されたタイミングで実行される。なお、図１２および後述する図１３では、集合被覆問題として、得られた部分集合Ｘの組み合わせをそれぞれ部分集合Ｐj（ｊ＝１，…，｜Ｐ｜）と表記する。
【０１１２】
図１２に示すように、削除部４３は、要素数の少ない順に、部分集合Ｐjを整列する（Ｓ２００）。削除部４３は、ｊを２とする（Ｓ２０１）。削除部４３は、ｊの値が｜Ｐ｜より大きいか否かを判定する（Ｓ２０２）。ｊの値が｜Ｐ｜より大きい場合（Ｓ２０２肯定）、削除結果として部分集合Ｐj（ｊ＝１，…，｜Ｐ｜）を回答し（Ｓ２０３）、処理を終了する。
【０１１３】
一方、ｊの値が｜Ｐ｜より大きくはない場合（Ｓ２０２否定）、削除部４３は、部分集合Ｐjに含まれる要素のうち、順序が前の部分集合Ｐj，…，Ｐj-1と重複する要素を削除する（Ｓ２０４）。削除部４３は、ｊの値に１を加算し（Ｓ２０５）、上述のＳ２０２へ移行する。
【０１１４】
次に、削除処理の別な例を説明する。図１３は、削除処理の手順の別な一例を示すフローチャートである。
【０１１５】
図１３に示すように、削除部４３は、ｉを１とする（Ｓ２５０）。削除部４３は、ｉの値が｜Ｎ｜より大きいか否かを判定する（Ｓ２５１）。ｉの値が｜Ｎ｜より大きい場合（Ｓ２５１肯定）、削除結果として部分集合Ｐj（ｊ＝１，…，｜Ｐ｜）を回答し（Ｓ２５２）、処理を終了する。
【０１１６】
一方、ｉの値が｜Ｎ｜より大きくはない場合（Ｓ２５１否定）、削除部４３は、集合Ｎに含まれる要素ｉを含む部分集合Ｐｉのうち、要素数の最も少ない部分集合Ｐｋを特定する（Ｓ２５３）。なお、要素数の最も少ない部分集合Ｐkが複数ある場合、削除部４３は、インデックスｋが最も小さい部分集合Ｐｋを特定する。
【０１１７】
削除部４３は、特定した部分集合Ｐｋ以外の部分集合Ｐｉから要素ｉを削除する（Ｓ２５４）。削除部４３は、ｉの値に１を加算し（Ｓ２５５）、上述のＳ２５１へ移行する。
【０１１８】
次に、具体例を用いて、本実施例に係る運行計画装置１１による運行計画の作成を説明する。図１４Ａおよび図１４Ｂは、具体的な一例を示す図である。図１４Ａおよび図１４Ｂでは、ユーザＡ、Ｂが示されている。ユーザＡは、出発点が「ｏ１」であり、到着点が「ｄ１」であるものとする。ユーザＢは、出発点が「ｏ２」であり、到着点が「ｄ２」であるものとする。運行計画装置１１は、ユーザＡ、Ｂから相乗りの要求を受け付けた場合、ユーザＡ、Ｂがそれぞれ単独で運行する場合のコストＶ（Ａ）、Ｖ（Ｂ）と、ユーザＡ、Ｂが相乗りした場合のコストＶ（Ａ∪Ｂ）を算出する。コストＶ（Ａ）は、出発点ｏ１→到着点ｄ１の経路のコストである。コストＶ（Ｂ）は、出発点ｏ２→到着点ｄ２の経路のコストである。コストＶ（Ａ∪Ｂ）は、出発点ｏ２→出発点ｏ１→到着点ｄ１→到着点ｄ２の経路のコストである。図１４Ａおよび図１４Ｂの例では、Ｖ（Ａ∪Ｂ）＞Ｖ（Ａ）＋Ｖ（Ｂ）となり劣加法性を満たさない。運行計画装置１１は、ユーザを劣加法性を満たす複数のグループに分割する。図１４Ａおよび図１４Ｂの例では、運行計画装置１１は、ユーザＡ、ユーザＢを、同じグループとせず、別なグループに分ける。運行計画装置１１は、グループごとに運行計画の経路を生成する。例えば、運行計画装置１１は、ユーザＡ、ユーザＢをそれぞれ単独でグループとして、図１４Ａに示すように、出発点ｏ１→到着点ｄ１と、出発点ｏ２→到着点ｄ２の運行計画を生成する。この場合でも、ユーザＡ、Ｂは、相乗りを要求した場合に、それぞれ単独でタクシーを利用した場合よりも料金が高なることが無い。このように、相乗りの要求した場合でも、単独でタクシーを利用した場合よりも料金が高くなることが無いため、ユーザＡ、Ｂは、安心して相乗りを要求できる。
【０１１９】
図１５Ａおよび図１５Ｂは、具体的な他の一例を示す図である。図１５Ａおよび図１５Ｂでは、ユーザＡ、Ｂ、Ｃ、Ｄが示されている。ユーザＡは、出発点が「ｏ１」であり、到着点が「ｄ１」であるものとする。ユーザＢは、出発点が「ｏ２」であり、到着点が「ｄ２」であるものとする。ユーザＣは、出発点が「ｏ３」であり、到着点が「ｄ３」であるものとする。ユーザＤは、出発点が「ｏ４」であり、到着点が「ｄ４」であるものとする。運行計画装置１１は、ユーザＡ、Ｂ、Ｃ、Ｄから相乗りの要求を受け付けた場合、ユーザＡ、Ｂ、Ｃ、Ｄを劣加法性を満たす複数のグループに分割する。図１５Ａおよび図１５Ｂの例では、運行計画装置１１は、ユーザＡ、ＢのグループＧ１と、ユーザＣ、ＤのグループＧ２に分割する。そして、運行計画装置１１は、グループごとに運行計画の経路を生成する。図１５Ａおよび図１５Ｂの例では、運行計画装置１１は、グループＧ１について、出発点ｏ１→出発点ｏ２→到着点ｄ１→到着点ｄ２と経路を生成する。また、運行計画装置１１は、グループＧ２について、出発点ｏ３→出発点ｏ４→到着点ｄ３→到着点ｄ４と経路を生成する。このように、劣加法性を満たすグループごとに経路を決定することにより、ユーザＡ、Ｂ、Ｃ、Ｄは、単独でタクシーを利用した場合よりも安い料金でタクシーを利用できる。
【０１２０】
［効果］
上述してきたように、本実施例に係る運行計画装置１１は、相乗りを含む運行計画の作成の対象となるユーザを要素とした集合Ｎに対して、劣加法性を満たす可能性の高さを示す指標を用いて、集合Ｎの要素を順序付ける。運行計画装置１１は、順位の高い順かつ所定数以内の要素の組み合わせが劣加法性を満たすか判定する。運行計画装置１１は、劣加法性を満たした要素の組み合わせを、相乗りの対象とする部分集合に追加することで、集合を部分集合に分割する。運行計画装置１１は、分割された部分集合を用いて運行計画を生成する。これにより、運行計画装置１１は、劣加法性を確保した運行計画を計算量を抑えて立案できる。
【０１２１】
また、本実施例に係る運行計画装置１１は、集合被覆問題として、要素の重複を許容して集合を部分集合に分割する。運行計画装置１１は、要素が重複する部分集合ごとに、何れか１つの部分集合を除いて重複する要素を削除する。一般的に、集合被覆問題は、集合分割問題よりも計算量が少なく、計算が容易である。よって、運行計画装置１１は、集合被覆問題として、要素の重複を許して集合を部分集合に分割し、１つの部分集合を除いて部分集合から重複する要素を削除することで、計算量を抑えることができる。
【０１２２】
また、本実施例に係る運行計画装置１１は、部分集合ごとに、当該部分集合に属する要素の単独の運行コストの合計に対する、要素の単独の運行コストの割合に応じて、部分集合の運行コストを各要素に配分する。これにより、運行計画装置１１は、それぞれのユーザに、単独の運行コストよりもコストを低く抑えて、相乗りする場合のコストを適切に配分できる。
【実施例２】
【０１２３】
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてもよい。そこで、以下では、本発明に含まれる他の実施例を説明する。
【０１２４】
例えば、上記実施例では、運行計画装置１１が、相乗りタクシーの運行計画を生成する場合を例示した。しかしながら、これらに限定されるものではない。運行計画装置１１は、相乗りバスや、配送計画で複数の顧客が同一のトラックを利用する際の運行計画を生成してもよい。
【０１２５】
また、上記実施例では、各ユーザの出発地点、到着地点を条件として運行計画を生成する場合を例示した。しかしながら、これらに限定されるものではない。例えば、各ユーザの出発希望時間、到着希望時間も条件として考慮して運行計画を生成してもよい。例えば、最適化問題の制約条件に、各ユーザの出発希望時間、到着希望時間を加えることで、出発希望時間、到着希望時間を満たし、劣加法性を満たす部分集合に分割されるようになるため、各ユーザの出発希望時間、到着希望時間も考慮した運行計画を生成できる。
【０１２６】
また、上記実施例では、劣加法性を満たす可能性の高さを示す指標として、λ（ｉ）を用いた場合を例示した。しかしながら、これらに限定されるものではない。指標は、要素が劣加法性を満たす可能性の高さを示すものでれば何れを用いてもよい。例えば、何れのかのユーザを基準として、基準とされたユーザの出発地点および到着地点と、他のユーザの出発地点および到着地点の近接度合を求め、近接度合を劣加法性を満たす可能性の高さを示す指標として用いてもよい。近接度合が所定以上のユーザが無い場合は、基準とするユーザを変えることで、近接度合の高いユーザ同士を同じグループに分けることができる。近接度合は、例えば、出発地点間と到着地点間の距離から距離が近いほど近接度合が高いものとして求めてもよい。また、近接度合は、例えば、相乗り運行を行う対象範囲を一定サイズごとエリアに分け、出発地点間と到着地点間のエリア数を用いてもよい。この場合、エリア数が少ないほど近接度合が高く、劣加法性を満たす可能性が高いものとして扱う。
【０１２７】
また、上記実施例では、分割部４２は、各要素のλ（ｉ）の初期値を１に初期化する場合を例示した。しかしながら、これらに限定されるものではない。例えば、分割部４２は、初期化に代えて、集合Ｎの各要素についての劣加法性を満たす可能性の高さを示す指標λ（ｉ）を最初から算出してもよい。
【０１２８】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、受付部４０、コスト算出部４１、分割部４２、削除部４３、生成部４４、コスト再計算部４５および通知部４６の各処理部が適宜統合されてもよい。また、各処理部の処理が適宜複数の処理部の処理に分離されてもよい。さらに、各処理部にて行なわれる各処理機能は、その全部又は任意の一部が、ＣＰＵ及び該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１２９】
［運行計画プログラム］
また、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、運行を支援する運行計画プログラムを実行するコンピュータシステムの一例を説明する。図１６は、運行計画プログラムを実行するコンピュータの構成の一例を示す図である。
【０１３０】
図１６に示すように、コンピュータ４００は、ＣＰＵ（Central  Processing  Unit）４１０、ＨＤＤ（Hard  Disk  Drive）４２０、ＲＡＭ（Random  Access  Memory）４４０を有する。これら４００〜４４０の各部は、バス５００を介して接続される。
【０１３１】
ＨＤＤ４２０には上記の受付部４０、コスト算出部４１、分割部４２、削除部４３、生成部４４、コスト再計算部４５および通知部４６と同様の機能を発揮する運行計画プログラム４２０Ａが予め記憶される。なお、運行計画プログラム４２０Ａについては、適宜分離してもよい。
【０１３２】
また、ＨＤＤ４２０は、各種情報を記憶する。例えば、ＨＤＤ４２０は、記憶部２１と同様に、ＯＳや運行の支援に用いる各種データを記憶する。
【０１３３】
そして、ＣＰＵ４１０が、運行計画プログラム４２０ＡをＨＤＤ４２０から読み出して実行することで、実施例の各処理部と同様の動作を実行する。すなわち、運行計画プログラム４２０Ａは、受付部４０、コスト算出部４１、分割部４２、削除部４３、生成部４４、コスト再計算部４５および通知部４６と同様の動作を実行する。
【０１３４】
なお、上記した運行計画プログラム４２０Ａについては、必ずしも最初からＨＤＤ４２０に記憶させることを要しない。また、例えば、運行計画プログラム４２０Ａは、コンピュータ４００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に記憶させてもよい。そして、コンピュータ４００がこれらからプログラムを読み出して実行するようにしてもよい。
【０１３５】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ４００に接続される「他のコンピュータ（又はサーバ）」などにプログラムを記憶させておく。そして、コンピュータ４００がこれらからプログラムを読み出して実行するようにしてもよい。
【符号の説明】
【０１３６】
１０  運行計画システム
１１  運行計画装置
１２  ユーザ端末
２１  記憶部
２２  制御部
３０  特性関数情報
３１  顧客情報
３２  コストデータベース
４０  受付部
４１  コスト算出部
４２  分割部
４３  削除部
４４  生成部
４５  コスト再計算部
４６  通知部
【図１】
0006715534.tif 000014
【図２】
0006715534.tif 000015
【図３】
0006715534.tif 000016
【図４】
0006715534.tif 000017
【図５】
0006715534.tif 000018
【図６】
0006715534.tif 000019
【図７】
0006715534.tif 000020
【図８】
0006715534.tif 000021
【図９】
0006715534.tif 000022
【図１０】
0006715534.tif 000023
【図１１】
0006715534.tif 000024
【図１２】
0006715534.tif 000025
【図１３】
0006715534.tif 000026
【図１４Ａ】
0006715534.tif 000027
【図１４Ｂ】
0006715534.tif 000028
【図１５Ａ】
0006715534.tif 000029
【図１５Ｂ】
0006715534.tif 000030
【図１６】
0006715534.tif 000031