(57)【要約】【課題】企業の定員および企業が含まれるグループの定員を考慮しつつ、最大限安定なマッチングを行う、マッチングシステムを得る。【解決手段】グループ定員条件ファイルに記憶されたグループ定員数を参照し、このグループ定員数に基づき、グループに属するＢ要素ＩＤの定員数を算出し、算出した定員数をＢ要素ＩＤと対応付けて、最適化定員情報ファイルに記憶し、第１、第２の優先度リストおよび上記最適化定員情報ファイルに記憶された最適化定員数に基づいて、上記集合Ａの抽出された全ての要素を、上記集合Ｂのいずれかの要素に対して、マッチング処理を行うようにしている。【選択図】図６
2010165224.tif 000002
【特許請求の範囲】
【請求項１】
複数の要素からなる集合Ａと複数の要素からなる集合Ｂとの各要素をマッチングするためのマッチングシステムであって、
上記集合Ｂの各要素は１以上のグループのいずれかに属しており、
上記集合Ｂの各要素のＢ要素ＩＤごとに、マッチングで受け入れ可能な定員数を記憶した定員数ファイルと、
上記集合Ｂの特定のグループを示すグループＩＤごとに、このグループに属するＢ要素ＩＤと、グループ定員数とを記憶したグループ定員条件ファイルと、
上記集合Ａの各要素のＡ要素ＩＤごとに、上記集合Ｂの要素の全部または一部に対して一意に順位付けられた第１の優先度リストを記憶している第１の優先度リストファイルと、
上記集合Ｂの各要素のＢ要素ＩＤごとに、上記集合Ａの要素の全部または一部に対して一意に順位付けられた第２の優先度リストを記憶している第２の優先度リストファイルと、
上記グループ定員条件ファイルに記憶されたグループ定員数を参照し、このグループ定員数に基づき、グループに属するＢ要素ＩＤの最適化定員数を算出し、算出した最適化定員数をＢ要素ＩＤと対応付けて、最適化定員情報ファイルに記憶する定員処理手段と、
上記第１の優先度リストファイル、第２の優先度リストファイルおよび上記最適化定員情報ファイルに記憶された最適化定員数に基づいて、上記集合Ａの要素を、上記集合Ｂのいずれかの要素に対して、マッチング処理を行うマッチング処理手段と
を備えたことを特徴とするマッチングシステム。
【請求項２】
上記定員処理手段は、上記マッチング処理手段に上記第１の優先度リストファイル、上記第２の優先度リストファイルおよび上記定数ファイルに記憶された定数に基づく、マッチング処理を指示し、上記マッチング処理手段は、マッチングの結果を仮マッチ結果として記憶手段に記憶し、
上記グループ定員条件ファイルのグループＩＤごとに、グループ定員数がグループ内各Ｂ要素の定員数の合計値以上と判定したときは、該当Ｂ要素のそれぞれの定員数を最適化定員数としてＢ要素ＩＤに対応付けて最適化定員情報ファイルに記憶し、
一方、グループ定員数がグループ内各Ｂ要素の定員数合計値より小さいと判定したときは、上記仮マッチ結果を参照し、各Ｂ要素の仮マッチ数とグループ内各Ｂ要素の仮マッチ数合計値とを算出し、グループ内Ｂ要素の仮マッチ数合計値に対する各Ｂ要素の仮マッチ数の割合に、上記グループ定員数を乗じた数に基づいて該当Ｂ要素ＩＤの最適化定員数を設定し、この最適化定員数を、Ｂ要素ＩＤに対応付けて最適化定員情報ファイルに記憶することを
特徴とする請求項１に記載のマッチングシステム。
【請求項３】
上記定員処理手段は、上記グループ定員条件ファイルのグループＩＤごとに、グループ定員数がグループ内各Ｂ要素の定員数の合計値以上と判定したときは、該当Ｂ要素のそれぞれの定員数を最適化定員数としてＢ要素ＩＤに対応付けて最適化定員情報ファイルに記憶し、
一方、グループ定員数がグループ内Ｂ要素の定員数合計値より小さいと判定したときは、グループ内Ｂ要素の定員数合計値に対する各Ｂ要素の定員数の割合に、グループ定員数を乗じた数に基づいて該当Ｂ要素ＩＤの最適化定員数を設定し、この最適化定員数を、Ｂ要素ＩＤに対応付けて最適化定員情報ファイルに記憶することを
特徴とする請求項１に記載のマッチングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はマッチングシステムに関し、特に、双方向のそれぞれの希望をもとに組合せを決めるためのマッチングシステムに関する。
【背景技術】
【０００２】
例えば、就職志願者の集合と志願者を受け入れる企業の集合の間のマッチング問題のように、双方向に優先度を持つ集合間のマッチング問題においてマッチングを行うための手法が提案されつつある（例えば、非特許文献１参照。）。
【０００３】
ここで、各志願者は自分が就職したい企業を好みにより順位づけした優先度リストを持ち、一方各企業の方も受け入れたい志願者を順位づけした優先度リストを持つものとする。志願者ａの優先度リストＲＯＬ（ａ）は、企業の集合の部分集合であり、順位によって等号を含まない不等号によって順序づけられた全順序集合である。ここでは、志願者ａがｐをｐ'より好む場合に、ｐ＜ｐ'と書くことにする（具体例を挙げれば、ｐが優先度第１位で、ｐ'は優先度第３位の場合には、ｐ（＝１）＜ｐ'（＝３）となる。）。また、企業ｐの志願者に対する優先度リストＲＯＬ（ｐ）についても同様である。また、各企業には志願者を受け入れる採用枠（定員）がある。企業ｐの定員Ｑ（ｐ）は０以上の整数である。マッチングＸとは、志願者と企業とのペア（ａ，ｐ）からなる集合であって次の２つの条件を満たすものとする。
【０００４】
１．  任意の志願者ａに関して、ａを含むペア（ａ，ｐ）はＸにおいて１個以下である。
２．  任意の企業ｐに関して、ｐを含むペア（ａ，ｐ）はＸにおいて、企業の定員Ｑ（ｐ）個以下である。
【０００５】
マッチングの一例を図１７に示す。図１７では、志願者の集合｛ａ１，ａ２，ａ３，ａ４，ａ５，ａ６，ａ７｝と企業の集合｛ｐ１，ｐ２，ｐ３，ｐ４｝の間のマッチングとして、｛（ａ１，ｐ１），（ａ２，ｐ３），（ａ３，ｐ４），（ａ５，ｐ３），（ａ６，ｐ４）｝が得られている。このマッチングでは、志願者ａ４，ａ７と企業ｐ２にはマッチング相手が存在しない。
【０００６】
また、図１８に志願者と企業の優先度リストの例を示す。それぞれの優先度リストでは上に記載されているものほど好ましい相手を示す。言い換えれば、下に行くほど順位が大きくなる。図１８の例では、志願者は３つの企業に対して、ｐ１＜ｐ４＜ｐ３という順序をつけている。企業は６人の志願者にａ７＜ａ１＜ａ４＜ａ３＜ａ５＜ａ６という順序をつけている。マッチングすることをまったく望まない相手は優先度リストに記載しない。
【０００７】
マッチング問題とは、志願者の集合と企業の集合と志願者および企業の優先度リストとが与えられたときに、志願者と企業の間の組合せを求める問題のことを言う。マッチング方法とは、マッチング問題に対する解法、すなわち、志願者と企業の間の組合せを求める方法のことである。従って、マッチングシステムとは、マッチング方法を実行するシステムのことである。
【０００８】
また、上記のようなマッチングには安定性を定義することができる。マッチングＸが安定であるのは、次の２つの条件が共に満たされる場合を言う。
【０００９】
１．すべての志願者（企業）は、自分の優先度リストに載せた企業（志願者）としかマッチングしない。
２．志願者と企業のすべてのペア（ａ，ｐ）のうち、マッチングＸに含まれないものは、いずれもブロッキングペアではない。ここで、ブロッキングペアとは次の３つの条件を共に満たすものである。
２．０．  ａはｐの優先度リストに記載され、かつ、ｐはａの優先度リストに記載されている。
２．１．  Ｘにおいてａはどの企業ともマッチングしていないか、またはＸにおいてａはｐ'とマッチングしていて、ａの優先度リストにおいてｐ＜ｐ'が成り立つ。
２．２．  Ｘにおいてｐがマッチングしている志願者数は定員Ｑ（ｐ）より少ないか、または、Ｘにおいてｐがマッチングしているある志願者ａ'が存在し、ｐの優先度リストにおいてａ＜ａ'が成り立つ。
【００１０】
マッチング問題においては、安定なマッチングを生成する方法が求められる。不安定なマッチングが得られた場合、自分が優先度リストに記載していない相手、すなわち、自分のまったく望まない相手とマッチングした志願者または企業が存在するか、あるいは、ブロッキングペアが存在する。ブロッキングペアを構成する志願者と企業の両者にとって、得られたマッチングよりブロッキングペアの相手の方が好ましいため、不安定なマッチングは公平でない。つまり、不安定なマッチングを生成する方法ではマッチングに対する信頼性が無くなり、マッチングの対象者がマッチングに参加する意思を損なうことになる。
【００１１】
図１９に、上記非特許文献１に書かれているＧａｌｅ−Ｓｈａｐｌｅｙアルゴリズムを用いた従来のマッチング方法を示すフローチャート図を示す。全志願者が順番に、まず自分の優先度リストで順位の一番小さい企業（すなわち、第１希望）から順番にプロポーズを行なうのが特徴である。
【００１２】
図１９の説明を行う前に、図２０を用いて簡単に概要を説明する。図２０の例は、４つの病院の集合と、それらの病院に就職を希望する８人の志願者の集合とのマッチング問題を想定している。明石さんから工藤さんまでの全志願者が順番に、まず自分の優先度リストで順位の一番小さい企業から順番にプロポーズを行なう。
【００１３】
明石さんは、第１希望が双川病院であるので、先ず、はじめに、明石さんは双川病院にプロポーズする。双方病院では、明石さんが優先度リストの４位にあるので、（明石，双川病院）が仮マッチングされる。
次に、井上さんがプロポーズを行う。井上さんの優先度リストにおいては、第１希望が双川病院であるので、井上さんは双川病院にプロポーズする。双川病院では、井上さんが優先度リストの５位にあり、かつ、双川病院の定員は２名でまだ１名分空いているので、（井上，双川病院）が仮マッチングされる。
次に、上野さんがプロポーズを行う。上野さんの優先度リストにおいては、第１希望が双川病院であるので、上野さんは双川病院にプロポーズする。双川病院では、上野さんが優先度リストの６位にあり、かつ、双川病院の定員は空きがないので、優先度リストの第２希望の病院にプロポーズを行う。第２希望の一山病院では、上野さんは１位であるので、（上野，一山病院）が仮マッチングされる。
【００１４】
次に、江口さんは、第１希望の一山病院にプロポーズするが、一山病院の優先度リストに江口さんの名前はないため、拒絶され、第２希望の双川病院にプロポーズするが、双川病院の優先度リストの７位で、かつ、定員に空きがないため、拒絶され、第３希望の美村病院にプロポーズすると、６位に名前があるため、（江口，美村病院）が仮マッチングされる。
次に、大川さんは、第１希望の双川病院にプロポーズする。双川病院の優先度リストで、大川さんは３位である。定員は２名であり、すでに２名が仮マッチングされている。しかしながら、仮マッチングされているのは、優先度リストにおける４位の明石さんと５位の井上さんである。このため、最も順位の大きい井上さんが除外され、（大川，双川病院）が仮マッチングされる。
除外された井上さんは、双川病院の次に自分の優先度リストでの順位が小さい病院に対してプロポーズをやり直す。当該病院は一山病院である。しかしながら、一山病院の優先度リストに井上さんの名前はないため、拒絶される。井上さんの優先度リストには第２希望までしか登録されていないため、井上さんは、すべての病院から拒絶されたことになる。
【００１５】
次に、川口さんの処理を行う。川口さんの優先度リストにおいては、第１希望が双川病院であるので、川口さんは双川病院にプロポーズする。双川病院では、川口さんは優先度リストの８位にあり、かつ、双川病院の定員は空きがないので、優先度リストの第２希望の病院にプロポーズを行う。第２希望の美村病院の優先度リストでは、川口さんの名前はないので、拒絶される。第３希望の一山病院でも同様に拒絶され、第４希望の四谷病院で、優先度リストの６位に名前があるので、（川口，四谷病院）が仮マッチングされる。
次に、木村さんは、第１希望の双川病院にプロポーズする。双川病院の優先度リストで、木村さんは１位である。定員は２名であり、すでに２名が仮マッチングされている。しかしながら、仮マッチングされているのは、優先度リストにおける４位の明石さんと３位の大川さんである。このため、最も順位の大きい明石さんが除外され、（木村，双川病院）が仮マッチングされる。
【００１６】
除外された明石さんは、双川病院の次に自分の優先度リストでの順位が小さい病院に対してプロポーズをやり直すが、明石さんの優先度リストには第１希望の双川病院しか登録されていないため、明石さんは、すべての病院から拒絶されたことになる。
次に、工藤さんは、第１希望の四谷病院にプロポーズする。四谷病院の優先度リストで、工藤さんは５位である。定員は２名であり、すでに１名が仮マッチングされているが、空きが１名分ある。そのため、（工藤，四谷病院）が仮マッチングされる。
【００１７】
ここで、すべての志願者が、いずれかの病院と仮マッチングされるか、または、自分の優先度リストに記載した病院すべてから拒絶されたので、処理は終了する。
マッチングの結果は、（大川，双川病院）、（木村，双川病院）、（上野，一山病院）、（江口，美村病院）、（川口，四谷病院）、（工藤，四谷病院）となり、明石さんと井上さんは自分の優先度リストに記載したすべての病院から拒絶されたことになった。
【００１８】
上記の図１９のフローチャートを用いて、図２０を例にして行ったこの処理について説明する。ステップＳ１００において、あらかじめ仮マッチングを空集合にする。ステップＳ１０１において、未処理の志願者がなければ終了し、あればその志願者の１人ａに対して以下の処理を行う。ステップＳ１０２において、志願者ａが優先度リストＲＯＬ（ａ）の何番目の企業に対してプロポーズするかの指標であるａ．ｉを１に設定する。これは、全志願者は順番に、まず自分の優先度リストで順位の一番小さい企業に対してプロポーズを行うことを示す。ステップＳ１０３において、優先度リストＲＯＬ（ａ）の要素数がａ．ｉより小さければ、志願者ａは最終的にどの企業ともマッチングできなかったことになり、ステップＳ１０１に戻る。一方、ステップＳ１０３において、優先度リストＲＯＬ（ａ）の要素数がａ．ｉより小さくなければ、ステップＳ１０４において、優先度リストＲＯＬ（ａ）のａ．ｉ番目の企業をｐとする。ステップＳ１０５において、ａがｐの優先度リストＲＯＬ（ｐ）に含まれなければ、ａ．ｉをａ．ｉ＋１に設定し直して、ステップＳ１０３に戻る。これは、プロポーズされた企業ｐはプロポーズした志願者ａがＲＯＬ（ｐ）に記載されていなけれ拒絶し、拒絶された志願者ａは、自分の優先度リストＲＯＬ（ａ）での順位が企業ｐの次に小さい企業にプロポーズをやり直すことに相当する。一方、ステップＳ１０５において、ａがｐの優先度リストＲＯＬ（ｐ）に含まれていれば、ステップＳ１０６において、その時点でｐが仮マッチングしている志願者の数が定員Ｑ（ｐ）より少なければ、ペア（ａ，ｐ）を仮マッチングに加えてステップＳ１０１に戻る。一方、ステップＳ１０６において、その時点でｐが仮マッチングしている志願者の数が定員Ｑ（ｐ）より少なくなければ、ステップＳ１０７において、ｐと仮マッチングしている志願者の中で、ｐの優先度リストＲＯＬ（ｐ）で順位が最も大きいものをａ１とする。ａ１とプロポーズしている志願者ａとの間で、ＲＯＬ（ｐ）での順位を比較する。ａの順位の方が大きければ、ａ．ｉをａ．ｉ＋１に設定し直して、ステップＳ１０３に戻る。これは、ａの順位の方が大きければ企業ｐはａを拒絶することに相当する。拒絶された志願者ａは、ｐの次に自分の優先度リストＲＯＬ（ａ）での順位が小さい企業にプロポーズをやり直すことになる。このステップＳ１０７以降では企業ｐと仮マッチングしている志願者数が定員Ｑ（ｐ）と等しい。ステップＳ１０８において、ａ１の順位の方がａの順位より大きいので、ペア（ａ，ｐ）を仮マッチングに加え、ペア（ａ１，ｐ）を仮マッチングから除外し、ａをａ１に設定し直す。ステップＳ１０９において、ａ．ｉをａ．ｉ＋１に設定し直してステップＳ１０３に戻る。つまり、仮マッチングから除外された志願者（元のａ１）は、ｐの次に自分の優先度リストでの順位が小さい企業に対してプロポーズをやり直すことになる。図１９の処理が終了するのは、ステップＳ１０１において、すべての志願者が、いずれかの企業と仮マッチングされるか、または、自分の優先度リストに記載された企業すべてから拒絶されたときである。図１９の処理が終了した段階で最終的に得られた仮マッチングをマッチング結果とする。なお、Ｇａｌｅ−Ｓｈａｐｌｅｙアルゴリズムにより得られるマッチングは安定であることが非特許文献１に記載されている。
【先行技術文献】
【非特許文献】
【００１９】
【非特許文献１】「Ｔｈｅ  Ｓｔａｂｌｅ  Ｍａｒｒｉａｇｅ  Ｐｒｏｂｌｅｍ」、Ｄ．Ｇｕｓｆｉｅｌｄ  及び  Ｒ．Ｗ．Ｉｒｖｉｎｇ著、Ｔｈｅ  ＭＩＴ  Ｐｒｅｓｓ、１９８９年、ｐ．９
【発明の概要】
【発明が解決しようとする課題】
【００２０】
以上のように、従来のマッチングシステムにおいては、志願者と企業のように１対１になる組み合わせを、安定したマッチング結果が得られると定評の高いＧａｌｅ−Ｓｈａｐｌｅｙアルゴリズムにより求めている。
しかしながら、複数企業が１つのグループを構成し、そのグループで定員条件を有している場合、グループの定員条件を考慮した、マッチングを行うことはできなかった。例えば、図２０で説明した病院はそれぞれ定員数を有しているが、複数の病院が１つのグループを構成し、そのグループがグループ定員数を持つような場合、上述のマッチングシステムでは、そのグループ定員数をアルゴリズムの中に組み込んで、安定マッチングを行うことができないという問題点があった。具体的には、複数の病院の定員の総和がグループ定員数を上回るとき、複数の病院間の優先順位付けがされていないため、安定マッチングを行うことができなかった。
【００２１】
この発明は、かかる問題点を解決するためになされたものであり、企業の定員数および企業が含まれるグループのグループ定員数を考慮しつつ、最大限安定なマッチングを行う、マッチングシステムを得ることを目的としている。
【課題を解決するための手段】
【００２２】
この発明は、複数の要素からなる集合Ａと複数の要素からなる集合Ｂとの各要素をマッチングするためのマッチングシステムであって、上記集合Ｂの各要素は１以上のグループのいずれかに属しており、上記集合Ｂの各要素のＢ要素ＩＤごとに、マッチングで受け入れ可能な定員数を記憶した定員数ファイルと、上記集合Ｂの特定のグループを示すグループＩＤごとに、このグループに属するＢ要素ＩＤと、グループ定員数とを記憶したグループ定員条件ファイルと、上記集合Ａの各要素のＡ要素ＩＤごとに、上記集合Ｂの要素の全部または一部に対して一意に順位付けられた第１の優先度リストを記憶している第１の優先度リストファイルと、上記集合Ｂの各要素のＢ要素ＩＤごとに、上記集合Ａの要素の全部または一部に対して一意に順位付けられた第２の優先度リストを記憶している第２の優先度リストファイルと、上記グループ定員条件ファイルに記憶されたグループ定員数を参照し、このグループ定員数に基づき、グループに属するＢ要素ＩＤの最適化定員数を算出し、算出した最適化定員数をＢ要素ＩＤと対応付けて、最適化定員情報ファイルに記憶する定員処理手段と、上記第１の優先度リストファイル、第２の優先度リストファイルおよび上記最適化定員情報ファイルに記憶された最適化定員数に基づいて、上記集合Ａの要素を、上記集合Ｂのいずれかの要素に対して、マッチング処理を行うマッチング処理手段とを備えたマッチングシステムである。
【００２３】
上記定員処理手段は、上記マッチング処理手段に上記第１の優先度リストファイル、上記第２の優先度リストファイルおよび上記定数ファイルに記憶された定数に基づく、マッチング処理を指示し、上記マッチング処理手段は、マッチングの結果を仮マッチ結果として記憶手段に記憶し、上記グループ定員条件ファイルのグループＩＤごとに、グループ定員数がグループ内各Ｂ要素の定員数の合計値以上と判定したときは、該当Ｂ要素のそれぞれの定員数を最適化定員数としてＢ要素ＩＤに対応付けて最適化定員情報ファイルに記憶し、一方、グループ定員数がグループ内各Ｂ要素の定員数合計値より小さいと判定したときは、上記仮マッチ結果を参照し、各Ｂ要素の仮マッチ数とグループ内各Ｂ要素の仮マッチ数合計値とを算出し、グループ内Ｂ要素の仮マッチ数合計値に対する各Ｂ要素の仮マッチ数の割合に、上記グループ定員数を乗じた数に基づいて該当Ｂ要素ＩＤの最適化定員数を設定し、この最適化定員数を、Ｂ要素ＩＤに対応付けて最適化定員情報ファイルに記憶してもよい。
【００２４】
上記定員処理手段は、上記グループ定員条件ファイルのグループＩＤごとに、グループ定員数がグループ内各Ｂ要素の定員数の合計値以上と判定したときは、該当Ｂ要素のそれぞれの定員数を最適化定員数としてＢ要素ＩＤに対応付けて最適化定員情報ファイルに記憶し、一方、グループ定員数がグループ内Ｂ要素の定員数合計値より小さいと判定したときは、グループ内Ｂ要素の定員数合計値に対する各Ｂ要素の定員数の割合に、グループ定員数を乗じた数に基づいて該当Ｂ要素ＩＤの最適化定員数を設定し、この最適化定員数を、Ｂ要素ＩＤに対応付けて最適化定員情報ファイルに記憶してもよい。
【発明の効果】
【００２５】
この発明は、複数の要素からなる集合Ａと複数の要素からなる集合Ｂとの各要素をマッチングするためのマッチングシステムであって、上記集合Ｂの各要素は１以上のグループのいずれかに属しており、上記集合Ｂの各要素のＢ要素ＩＤごとに、マッチングで受け入れ可能な定員数を記憶した定員数ファイルと、上記集合Ｂの特定のグループを示すグループＩＤごとに、このグループに属するＢ要素ＩＤと、グループ定員数とを記憶したグループ定員条件ファイルと、上記集合Ａの各要素のＡ要素ＩＤごとに、上記集合Ｂの要素の全部または一部に対して一意に順位付けられた第１の優先度リストを記憶している第１の優先度リストファイルと、上記集合Ｂの各要素のＢ要素ＩＤごとに、上記集合Ａの要素の全部または一部に対して一意に順位付けられた第２の優先度リストを記憶している第２の優先度リストファイルと、上記グループ定員条件ファイルに記憶されたグループ定員数を参照し、このグループ定員数に基づき、グループに属するＢ要素ＩＤの最適化定員数を算出し、算出した最適化定員数をＢ要素ＩＤと対応付けて、最適化定員情報ファイルに記憶する定員処理手段と、上記第１の優先度リストファイル、第２の優先度リストファイルおよび上記最適化定員情報ファイルに記憶された最適化定員数に基づいて、上記集合Ａの要素を、上記集合Ｂのいずれかの要素に対して、マッチング処理を行うマッチング処理手段とを備えたマッチングシステムであるので、企業の定員数および企業が含まれるグループのグループ定員数を考慮しつつ、最大限安定なマッチングを行う、マッチングシステムを得ることができる。
【図面の簡単な説明】
【００２６】
【図１】この発明の実施の形態１に係るマッチングシステムの全体の構成を示した構成図である。
【図２】この発明の実施の形態１に係るマッチングシステムを構成している各構成要素の内部構成を示した構成図である。
【図３】この発明の実施の形態１に係るマッチングシステムの処理の流れを示した流れ図である。
【図４】この発明の実施の形態１に係るマッチングシステムの処理の流れを示した流れ図である。
【図５】この発明の実施の形態１に係るマッチングシステムの処理の流れを示した流れ図である。
【図６】この発明の実施の形態１に係るマッチングシステムの処理の流れを示した流れ図である。
【図７】この発明の実施の形態１に係るマッチングシステムの処理の流れを示した流れ図である。
【図８】この発明の実施の形態１に係るマッチングシステムの施設プログラム情報ファイルの一例を示した説明図である。
【図９】この発明の実施の形態１に係るマッチングシステムのグループ定員条件ファイルの一例を示した説明図である。
【図１０】この発明の実施の形態１に係るマッチングシステムの参加者ＲＯＬファイルの一例を示した説明図である。
【図１１】この発明の実施の形態１に係るマッチングシステムの施設ＲＯＬファイルの一例を示した説明図である。
【図１２】この発明の実施の形態１に係るマッチングシステムのマッチング結果格納ファイルの一例を示した説明図である。
【図１３】この発明の実施の形態１に係るマッチングシステムの最適化定員情報ファイルの一例を示した説明図である。
【図１４】この発明の実施の形態１に係るマッチングシステムの処理の流れの具体例を示した説明図である。
【図１５】この発明の実施の形態２に係るマッチングシステムの処理の流れを示した流れ図である。
【図１６】この発明の実施の形態２に係るマッチングシステムの処理の流れの具体例を示した説明図である。
【図１７】従来のマッチング方法におけるマッチングの一例を示した説明図である。
【図１８】従来のマッチング方法における優先度リストの一例を示した説明図である。
【図１９】従来のマッチング方法の処理の流れを示したフローチャートである。
【図２０】従来のマッチング方法を示した説明図である。
【発明を実施するための形態】
【００２７】
実施の形態１．
この発明の実施の形態１に係るマッチングシステムは、１対Ｍ（Ｍ≧１）の組合せを決定するためのシステムである。例を挙げて説明すれば、例えば、医学部の卒業生で研修を希望する研修希望者（以下、参加者とする。）は、１以上の医療研修施設（すなわち、大学病院、総合病院など。以下、施設とする。）で、研修を経験する必要がある。
【００２８】
施設（病院）は、それぞれ定員条件（定員数）を有しているが、複数の施設が１つのグループを構成し、そのグループが定員条件（グループ定員数）を持つような場合がある。本実施の形態では、複数施設の定員の合計値がグループ定員数を上回るときも、安定マッチングを得ることを特徴としている。
グループは特定の条件にて分類されたものであり、グループの一例としては、施設の所在として、都道府県別のグループ、都道府県を含む地方（北海道地方、東北地方、関東地方、信越地方等）のグループが挙げられる。また、研修内容として、診察科（総合内科、循環器内科、心臓外科、小児科、女性診療科等）毎のグループ、が挙げられるが、その他どのような条件で分類し、グループを構成してもよい。
なお本実施の形態においては、１つの施設は１つのグループに属し、１つの施設が複数のグループに重複して属することはないものとする。
またグループが定員条件を有することにより、例えば、都道府県でグループを構成した場合は、人員が不足している都道府県に適切な人員をマッチングできる効果がある。診療科でグループを構成した場合は、診療科毎の偏りをなくしたり、人員が不足している診療科が一定の人員を確保できる効果がある。
【００２９】
図１は、この発明の実施の形態１に係るマッチングシステムの全体の構成を示した図である。図１に示すように、実施の形態１に係るマッチングシステムは、参加者と施設との組合せを決定するマッチング処理を行うためのマッチングサーバ１００と、マッチングサーバ１００の管理およびメンテナンス等を行うマッチング管理者端末４００と、参加者が操作して施設の希望順位などを入力するための参加者端末２００と、施設に勤務している施設管理者が操作して参加者の希望順位などを入力するための施設管理者端末３００とから構成されている。なお、マッチングサーバ１００、参加者端末２００、施設管理者端末３００、マッチング管理者端末４００は、インターネット等の通信網５００により接続されている。
【００３０】
図２は、図１に示した各構成要素の内部構成を示した図である。図２に示すように、マッチングサーバ１００内には、施設情報ファイル（定員数ファイル）１と、グループ定員条件ファイル２と、参加者ＲＯＬファイル（第１の優先度リストファイル）３と、施設ＲＯＬファイル（第２の優先度リストファイル）４と、マッチング結果格納ファイル５と、最適化定員情報ファイル１０の６つのファイルが記憶されている。これらは、共通の１つの記憶装置内に記憶されていてもよく、あるいは、複数の記憶装置内に記憶されていてもよい。さらに、マッチングサーバ１００内には、通信網５００を介して外部との通信を行うための通信手段６と、ＲＯＬファイルの作成処理を行うＲＯＬ作成手段７と、定員に関する処理を行う定員処理手段８と、マッチング手段９とが設けられている。
【００３１】
図８は、施設情報ファイル１の一例を示した図である。施設情報ファイル１には、研修を実施する各施設の情報が格納されている。すなわち、施設情報ファイル１には、例えば、各施設を特定するためのＩＤである施設コードと、施設名、定員数（参加者の受け入れ可能人数）、施設住所（施設の所在地）などの情報が格納されている。
【００３２】
図９は、グループ定員条件ファイル２の一例を示した図である。グループ定員条件ファイル２には、グループを特定するためのＩＤであるグループコードと、グループに属する施設の施設コードを示すグループ施設コードと、グループ定員数の情報が格納されている。
【００３３】
図１０は、参加者ＲＯＬファイル３の一例を示した図である。参加者ＲＯＬファイル３には、各ユーザＩＤごとに、各ユーザが希望する施設を希望順に並べたリストが格納されている。図１０においては、各ユーザごとに、第１希望から順に第ｎ希望までの施設が順に格納されている。各ユーザは、例えば、インターネットのホームページ等から各施設の情報を得て、希望順位を決定する。なお参加者ＲＯＬファイル３に、全ての施設を登録しても、一部の施設を登録してもよい。
【００３４】
図１１は、施設ＲＯＬファイル４の一例を示した図である。施設ＲＯＬファイル４には、各施設コードごとに、各施設が希望する参加者を希望順に並べたリストが格納されている。図１１においては、各施設ごとに、第１希望から順に第ｎ希望までの参加者が順に格納されている。各施設は、例えば、参加者の面談等を行って参加者の情報を得て、希望順位を決定する。なお施設ＲＯＬファイル４に、全ての参加者を登録しても、一部の参加者を登録してもよい。
【００３５】
図１２は、マッチング結果格納ファイル５の一例を示した図である。マッチング結果格納ファイル５には、マッチング処理の結果得られたマッチング結果が格納されている。すなわち、図１２に示すように、ユーザＩＤと、割り当てられた施設の施設コードとが、それぞれ、対応付けて格納されている。これにより、どの参加者が、どこの施設で研修を行うかを確認することができる。
図１３は、最適化定員情報ファイル１０の一例を示した図である。最適化定員情報ファイル１０は、定員処理手段８により出力され、マッチング手段９がマッチング処理を行うときに用いるものであるが、施設コードごとの最適化定員数が記憶されている。
なお、図８から図１３に示したファイル構成で、行方向（横方向）の１行をレコードと呼ぶ。
【００３６】
図２の説明に戻る。図２に示すように、参加者端末２００内には、入力手段２０と、表示手段２１と、処理手段２２と、通信手段２３とが設けられている。
なお、施設管理者端末３００の内部構成は、参加者端末２００と同様であるため、ここでは説明を省略する。
【００３７】
マッチング管理者端末４００内には、入力手段３０と、表示手段３１と、処理手段３２と、通信手段３３とが設けられている。
【００３８】
次に、本実施の形態１に係るマッチングシステムの動作について説明する。図３は、マッチング管理者端末４００からのデータ入力処理について示した図であり、マッチング管理者が、施設情報ファイル１またはグループ定員条件ファイル２の登録、追加、更新または削除の処理を行うときの処理の流れを示している。図３に示すように、まず、マッチング管理者端末４００の処理手段３２は、マッチング管理者の操作により入力手段３０が受け付けた入力データを通信手段３３に受け渡す（ステップＳ１）。次に、マッチング管理者端末４００の通信手段３３が、マッチングサーバ１００の通信手段６に当該入力データを送信する（ステップＳ２）。次に、マッチングサーバ１００の通信手段６が、受信したデータ内容により、施設情報ファイル１またはグループ定員条件ファイル２にデータの追加、更新または削除を行う（ステップＳ３）。
【００３９】
図４は、参加者端末２００からのデータ入力処理を示した図であり、参加者が希望順位を示す優先度リスト（ＲＯＬファイル）の入力を行うときの処理の流れを示している。図４に示すように、まず、参加者端末２００の処理手段２２は、参加者の操作により入力手段２０が受け付けた入力データを通信手段２３に受け渡す（ステップＳ１１）。次に、参加者端末２００の通信手段２３がマッチングサーバ１００の通信手段６に当該入力データを送信する（ステップＳ１２）。次に、マッチングサーバ１００の通信手段６が、受信したデータ内容をＲＯＬ作成手段７に受け渡し、ＲＯＬ作成手段７が、参加者ＲＯＬファイル３にデータの追加、更新または削除を行う。つまり、該当のユーザＩＤに対応するユーザＩＤ、施設コード、順位を記憶した１以上のレコードを参加者ＲＯＬファイル３に上書きする（ステップＳ１３）。
また、施設管理者端末３００からの施設ＲＯＬファイル４へのデータ入力を受付けるときも、図４に示したフローチャートと同様の流れになる。なお、施設情報ファイル１、グループ定員条件ファイル２、参加者ＲＯＬファイル３、施設ＲＯＬファイル４へのデータの追加、更新、削除の処理はマッチング管理者端末４００から行なうこともできる。その場合は、それぞれのデータを何らかの記憶媒体により、管理者にファイル形式で受け渡し、管理者がマッチング管理者端末４００から一括してファイル更新作業を行なうことになる。
【００４０】
図５は、マッチングサーバ１００の定員処理手段８によるグループ内施設定員数最適化処理と、マッチング手段９によるマッチング処理を示した図である。図５に示すように、マッチングサーバ１００の定員処理手段８がグループ内施設の定員数の最適化処理をグループごとに行い、グループごとに最適化された最適化定員数をマッチング手段９に受け渡す（ステップＳ２１）。なお、後述するように、このステップＳ２１における最適化処理には、マッチング手段９による仮マッチング処理が含まれる。その後、マッチング手段９は、受け渡された最適化定員数を用いて、全グループの全施設および全参加者に対し、上述した図１９に示すＧａｌｅ−Ｓｈａｐｌｅｙアルゴリズムを用いたマッチング処理を行い、得られたマッチング結果をマッチング結果格納ファイル５に格納する（ステップＳ２２）。
【００４１】
図６は、図５のステップＳ２１で示した、グループ内施設の定員数の最適化処理の詳細を示した図である。図６に示すように、定員処理手段８は、現状の参加者ＲＯＬファイル３、施設ＲＯＬファイル４、施設情報ファイル１に記憶された定員数によるマッチング処理をマッチング手段９に指示し、マッチング手段９は、全グループの全施設および全参加者に対し、Ｇａｌｅ−Ｓｈａｐｌｅｙアルゴリズムに従ったマッチング処理を行い、そのマッチ結果を一時的に記憶手段に記憶する。このマッチ結果を、便宜的に仮マッチ結果と呼ぶ（ステップＳ３１）。
【００４２】
マッチングサーバ１００の定員処理手段８は、グループコードを表す変数をｎとしてｎの初期値に１を設定し、その後グループ定員条件ファイル２のグループコード項目を参照することにより、予め登録されているグループコードの最大値を記憶する（ステップＳ３２）。なお、図９に示すグループコードは数ではなく文字列を含むが、ここでは、各グループコードはそれぞれ異なるｎの値に一意に対応するものとする。たとえば、グループコードＧ０１はｎ＝１に対応し、グループコードＧ０２はｎ＝２に対応する。これを実現する方法の一例として、グループ定員条件ファイルには、グループコードごとに、対応するｎの値を表すグループ番号を関連付けて記憶してもよい。
次に、定員処理手段８は、現在のグループコードが記憶されているグループコードの最大値より大きいかどうかを確認し（ステップＳ３３）、現在のグループコードが最大値より大きい場合は、処理を終了する。
【００４３】
現在のグループコードが最大値以下の場合は、ステップＳ３４に処理が移り、該当のグループコードに属するグループ施設コード情報を、グループ定員条件ファイル２を参照することにより、取得し、施設コードそれぞれの定員数を、施設情報ファイル１を参照することにより、取得する。そして、グループに属する施設の定員数の合計値を算出し、現在のグループコードのグループ定員数と、グループに属する施設の定員数の合計値とを比較する（ステップＳ３４）。
【００４４】
ステップＳ３４の比較で、グループ定員数がグループ内施設の定員数の合計値以上のときは、該当の施設コードのそれぞれの定員数を最適化定員数として、施設コードと対応付けて最適化定員情報ファイル１０に記憶する（ステップＳ３６）。その後、グループコードを１加算して（ステップＳ３７）、ステップＳ３３の処理に戻る。
【００４５】
またステップＳ３４の比較で、グループ定員数がグループ内施設の定員数合計値より小さいと判定したときは、ステップＳ３５の処理に移る。ステップＳ３５の処理で、定員処理手段８は、仮マッチ結果を参照し、仮マッチ結果に含まれるレコードのうち、施設コードが現在のグループコードのグループ施設コードに含まれているレコードを抜き出し、各施設の仮マッチ数とグループ内全施設の仮マッチ数合計値とを算出する（ここで、仮マッチ数とは、仮マッチ結果においてその施設にマッチングされた参加者の数を意味し、仮マッチ数合計値とは、仮マッチ結果においてそのグループに含まれるそれぞれの施設コードにマッチングされた参加者数を加算したものを意味する）。
【００４６】
その後、各施設について、グループ内全施設の仮マッチ数合計値に対するその施設の仮マッチ数の割合に、グループ定員数を乗じた数を該当施設コードの最適化定員数として設定する。なお、このようにして求めた数が整数にならない場合には、その数に基づいて四捨五入等により最適化定員数が整数となるように設定してもよい。また、最適化定員数は、施設の定員数を上回る数値にはなりえない。そのため、最適化定員数として設定する前に、各施設の定員数との比較を行い、最適化定員数が定員数より大きいときは最適化定員数を定員数に置き換える補正処理を行う。この補正処理により、グループ内施設の最適化定員数を再調整し、置き換える処理を行うことになるが、その処理を便宜上、「最適化定員数調整処理」と呼び、後述する。
設定された最適化定員数は、最適化定員情報ファイル１０に、施設コード毎に対応付けて記憶される（ステップＳ３５）。その後ステップＳ３７に処理が移る。
【００４７】
前述した、最適化定員数調整処理について、説明を加える。ある施設コードの算出された最適化定員数がその施設コードの定員数より大きいとき、該当の最適化定員数を該当施設コードの定員数に置き換える。その結果、最適化定員数と定員数との差異の数値（数値aとする）分だけ、最適化定員数の合計値がグループ定員数より小さくなっているため、数値a分、いずれかの施設コードの最適化定員数に加算してもよい（最適化定員数の合計値をグループ定員数と同じにしてもよい）。数値aをどのように加算するかは、例えば定員数と最適化定員数との差異を、グループ内施設コードそれぞれについて算出し、一番差異が大きい施設コードの最適化定員数に数値aを加算する、または一番差異が大きい施設コードから順次、数値aを一定数に分配して、加算していく等の方法が考えられる。
【００４８】
なおステップＳ３５の算出において、最適化定員数は、「最低人数」を設定し、算出式の算出結果が、「最低人数」より小さくなった場合は、最適化定員数を最低人数に設定するように構成することができる。例えば最低人数を２名としたとき、算出の結果、最適化定員数が２より小さくなった場合は、最適化定員数を２名と算出しなおす。この処理を便宜上、「最低定員数補正処理」と呼ぶ。
最低定員数補正処理を行った結果、グループ内施設の最適化定員数の合計値がグループ定員数を上回る可能性がある。最適化定員数の合計値がグループ定員数を上回ることを許容しないとするときは、最適化定員数が大きい順に、各施設コードの最適化定員数を一定値ずつ（たとえば１ずつ）減算し、これを最適化定員数の合計値がグループ定員数以下になるまで繰り返す方法、または最低定員数補正処理の対象となった施設コードは除いて、最適化定員数が小さい順に、各施設コードの最適化定員数を一定値ずつ（たとえば１ずつ）減算し、これを最適化定員数の合計値がグループ定員数以下になるまで繰り返す方法等が考えられる。またはグループ定員条件ファイル２にグループ施設コードを記憶するときに、各グループコードに優先順位を関連付け、優先順位が高い順に記憶することとし、優先順位が低い施設コードから順番に最適化定員数を一定数ずつ減算する方法も考えられる。
ただしどの方法を用いる場合も、いずれの施設コードの最適化定員数は、「最低人数」を下回らないことし、減算の結果、「最低人数」を下回ることが判明した定員数からは減算を行わず、次に対象となる施設コードの定員数から減算することとする。
また最低定員数補正処理を行った結果、最適化定員数の合計値がグループ定員数を上回るとき、上回ることを許容し、最適化定員数の修正は行わないように、構成してもよい。
【００４９】
ステップＳ３４〜Ｓ３５の処理について、具体例を用いて説明する。図１４に具体例として、例１、例２を示す。例１は、グループコード  Ｇ０１に関して最適化定員数を算出したときを例示している。グループコード  Ｇ０１は、グループ定員数は２５名であり、グループとして登録されているグループ施設コードは、Ａ００１，Ａ００３，Ａ０１０，Ａ０１１である。またそれぞれの施設コードの定員数は、図１４に示すように、上から１０，８，１０，７名であり、定員数合計値は３５名である。図６のステップＳ３４の処理で、グループ定員数とグループ内施設の定員数合計値とを比較すると、グループ定員数の方が定員数合計値より小さいため、ステップＳ３５の処理により、仮マッチ結果を参照して、グループ内施設コードのそれぞれの仮マッチ数を得る。その仮マッチ結果数が、図１４に示すように、上から４，６，８，５で、仮マッチ数合計値が２３となったとする。その後、最適化定員数の算出を行うが、その算出式は、グループ内全施設の仮マッチ数合計値に対する各施設の仮マッチ数の割合に、グループ定員数を乗じるものであり、施設コード  Ａ００１の場合は、４（Ａ００１の仮マッチ数）/２３（仮マッチ数合計値）×２５（グループ定員数）となる。その結果、最適化定員数は、施設コード  Ａ００１の場合は、４名と算出され、それぞれの施設コードの最適化定員数は、上から４，７，９，５となる。なおこの最適化定員数の算出は、四捨五入により行っているが、最適化定員数の合計値がグループ定員数より大きくなる、または小さくなることを許容する場合は、切り上げまたは切り捨てにより算出してもよい。
このような算出方法により、一度行った仮マッチ結果を反映して、グループ定員数をグループ内施設に、最適化定員数として、配分することができる。
【００５０】
図１４の例２は、グループコード  Ｇ０２に関して最適化定員数を算出したときを例示している。グループコード  Ｇ０２は、グループ定員数は２３名であり、グループとして登録されているグループ施設コードは、Ａ０１２，Ａ０１５，Ａ０１６，Ａ０１７、Ａ０１８である。またそれぞれの施設コードの定員数は、図１４に示すように、上から３，５，４，７，３名であり、定員数合計値は２２名である。図６のステップＳ３４の処理で、グループ定員数とグループ内施設の定員数合計値とを比較すると、グループ定員数の方が定員数合計値より大きいため、グループコード  Ｇ０２に関しては、定員最適化処理は行われず、施設コードのそれぞれの定員数がそのまま最適化定員数となる。
なお図１４の示した具体例では、最適化定員数調整処理と、最低定員数補正処理は不要であるが、必要に応じて、上述した方法にて、処理が行われる。
【００５１】
図７は、マッチングサーバ１００の通信手段６によるマッチング結果の通知の処理について示した図である。図７に示すように、まず、マッチングサーバ１００のマッチング手段９は、マッチング処理終了を通信手段６に通知する（ステップＳ５１）。次に、マッチングサーバ１００の通信手段６は、マッチング結果格納ファイル５を参照してマッチング結果を、マッチング管理者端末４００の通信手段３３に通知する（ステップＳ５２）。次に、マッチング管理者端末４００の通信手段３３は、通知されたマッチング結果を処理手段３２に受け渡す（ステップＳ５３）。次に、マッチング管理者端末４００の処理手段３２は、受け渡されたマッチング結果を、インターネット等で公開する（ステップＳ５４）。
【００５２】
なおマッチング結果の公開については、図７に示した方法によらず、ファイル形式や結果を印刷した紙にて、参加者及び施設管理者に通知する方法もある。また、該当のマッチング結果を参加者端末２００または、施設管理者端末３００に通知するように構成してもよい。例えば、参加者端末２００がユーザＩＤ  ００１でログインされていたとすると、ユーザＩＤ  ００１がマッチされた施設情報（例えば、施設コード  Ａ００１に関する情報）を参加者端末２００に送信するように構成してもよい。
【００５３】
なお、上記の説明においては、研修を希望する参加者と受け入れ先の施設とのマッチング問題について説明したが、その場合に限らず、複数の要素からなる集合Ａ（上記の参加者に相当）と複数の要素からなる集合Ｂ（上記の施設に相当）との各要素をマッチングするマッチング問題であって、集合Ｂが特定の条件で分類されグループを構成し、そのそれぞれのグループがグループ定員数を有するときのマッチング問題のいずれにも適用できることはいうまでもない。
【００５４】
すなわち、この発明は、複数の要素からなる集合Ａ（参加者のグループ）と複数の要素からなる集合Ｂ（施設のグループ）との各要素をマッチングするためのマッチングシステムであって、上記集合Ｂの各要素（各施設）は１以上のグループのいずれかに属しており、上記集合Ｂの各要素のＢ要素ＩＤ（施設コード）ごとに、マッチングで受け入れ可能な定員数を記憶した定員数ファイル（施設情報ファイル１）と、上記集合Ｂの特定のグループを示すグループＩＤごとに、このグループに属するＢ要素ＩＤと、グループ定員数とを記憶したグループ定員条件ファイル（グループ定員条件ファイル２）と、上記集合Ａの各要素のＡ要素ＩＤごとに、上記集合Ｂの要素の全部または一部に対して一意に順位付けられた第１の優先度リストを記憶している第１の優先度リストファイル（参加者ＲＯＬファイル３）と、上記集合Ｂの各要素のＢ要素ＩＤごとに、上記集合Ａの要素の全部または一部に対して一意に順位付けられた第２の優先度リストを記憶している第２の優先度リストファイル（施設ＲＯＬファイル４）と、上記グループ定員条件ファイルに記憶されたグループ定員数を参照し、このグループ定員数に基づき、グループに属するＢ要素ＩＤの最適化定員数を算出し、算出した最適化定員数をＢ要素ＩＤと対応付けて、最適化定員情報ファイルに記憶する定員処理手段（図５のステップＳ２１に相当、または図２の定員処理手段８に相当）と、上記第１の優先度リストファイル、第２の優先度リストファイルおよび上記最適化定員情報ファイルに記憶された最適化定員数に基づいて、上記集合Ａの要素を、上記集合Ｂのいずれかの要素に対して、マッチング処理を行うマッチング処理手段（図５のステップＳ２２に相当、または図２のマッチング手段９に相当）とを備えたマッチングシステムである。
なおこの構成は、請求項１の構成に対応し、図５に示したマッチング処理を行うための構成である。
【００５５】
さらに、この発明のマッチングシステムで上記定員処理手段は、上記マッチング処理手段に上記第１の優先度リストファイル、上記第２の優先度リストファイルおよび上記定数ファイルに記憶された定数に基づく、マッチング処理を指示し、上記マッチング処理手段は、マッチングの結果を仮マッチ結果として記憶手段に記憶し（図６のステップＳ３１に相当）、上記グループ定員条件ファイルのグループＩＤごとに、グループ定員数がグループ内各Ｂ要素の定員数の合計値以上と判定したときは、該当Ｂ要素のそれぞれの定員数を最適化定員数としてＢ要素ＩＤに対応付けて最適化定員情報ファイルに記憶し（図６のステップＳ３６に相当）、一方、グループ定員数がグループ内Ｂ要素の定員数合計値より小さいと判定したときは、上記仮マッチ結果を参照し、グループ内Ｂ要素ＩＤのレコードを抜き出し、各Ｂ要素の仮マッチ数とグループ内各Ｂ要素の仮マッチ数合計値とを算出し、グループ内Ｂ要素の仮マッチ数合計値に対する各施設の仮マッチ数の割合に、上記グループ定員数を乗じた数に基づいて該当施設コードの最適化定員数を設定し、この最適化定員数を、Ｂ要素ＩＤに対応付けて最適化定員情報ファイルに記憶する（図６のステップＳ３５に相当）。
この構成は、請求項２の構成に対応し、図６に示した処理を行うための構成である。
【００５６】
以上説明したように、本実施の形態によれば、複数の施設が１つのグループを構成し、そのグループがグループ定員数を持つような場合、特に複数施設の定員の合計値がグループ定員数を上回るときも、安定マッチングを得ることができる。
【００５７】
また、本実施の形態によれば、都道府県でグループを構成した場合は、人員が不足している都道府県に適切な人員をマッチングすることができる。また、グループ定員数を考慮したマッチングを行うため、診療科でグループを構成した場合は、診療科毎の偏りをなくしたり、人員が不足している診療科が一定の人員を確保することができる。
【００５８】
実施の形態２．
本実施の形態におけるシステム構成図は、実施の形態１で用いた図１、図２のとおりである。本実施の形態で特徴的なことは、図５のステップＳ２１で示した定員数の最適化処理が、実施の形態１とは異なる方法によることである。その他の処理については、実施の形態１で説明したとおりである。
【００５９】
図１５は、本実施の形態におけるグループ内施設定員数最適化処理を示したフローチャートである。図１５に示すように、マッチングサーバ１００の定員処理手段８は、グループコードを表す変数をｎとしてｎの初期値に１を設定し、その後グループ定員条件ファイル２のグループコード項目を参照することにより、予め登録されているグループコードの最大値を記憶する（ステップＳ４１）。次に、定員処理手段８は、現在のグループコードが記憶されているグループコードの最大値より大きいかどうかを確認し（ステップＳ４２）、現在のグループコードが最大値より大きい場合は、処理を終了する。
【００６０】
現在のグループコードが最大値以下の場合は、ステップＳ４３に処理が移り、該当のグループコードに属するグループ施設コード情報を、グループ定員条件ファイル２を参照することにより、取得し、施設コードそれぞれの定員数を、施設情報ファイル１を参照することにより、取得する。そしてグループに属する施設の定員数の合計値を算出し、現在のグループコードのグループ定員数と、グループに属する施設の定員数合計値とを比較する（ステップＳ４３）。ステップＳ４３の比較で、グループ定員数がグループ内施設の定員数合計値以上のときは、該当の施設コードのそれぞれの定員数を最適化定員数として施設コードと対応付けて最適化定員情報ファイル１０に記憶する（ステップＳ４５）。その後、グループコードを１加算して（ステップＳ４６）、ステップＳ４２の処理に戻る。
【００６１】
またステップＳ４３の比較で、グループ定員数がグループ内施設の定員数合計値より小さいときは、ステップＳ４４の処理に移る。ステップＳ４４の処理で、定員処理手段８は、グループ内施設の定員数合計値に対する各施設の定員数の割合に、グループ定員数を乗じた数を該当施設の最適化定員として設定する。なお、このようにして求めた数が整数にならない場合には、その数に基づいて四捨五入等により最適化定員数が整数となるように設定してもよい。設定された最適化定員数は、最適化定員情報ファイル１０に、施設コード毎に対応付けて記憶される（ステップＳ４４）。またステップＳ４４の算出において、実施の形態１のステップＳ３５で説明した、「最低定員数補正処理」を同様に処理する。その後ステップＳ４６の処理に移る。
【００６２】
ステップＳ４４の処理について、具体例を用いて説明する。図１６に具体例として、例１、例２を示す。例１は、グループコード  Ｇ０１に関して最適化定員数を算出したときを例示している。グループコード  Ｇ０１は、グループ定員数は２５名であり、グループとして登録されているグループ施設コードは、Ａ００１，Ａ００３，Ａ０１０，Ａ０１１である。またそれぞれの施設コードの定員数は、図１５に示すように、上から１０，８，１０，７名であり、定員数合計値は３５名である。図１５のステップＳ４３の処理で、グループ定員数とグループ内施設の定員数合計値とを比較すると、グループ定員数の方が定員数合計値より小さいため、ステップＳ４４の処理により、最適化定員数の算出を行うが、その算出式は、グループ内施設の定員数合計値に対する各施設の定員数の割合に、グループ定員数を乗じるものであり、施設コード  Ａ００１の場合は、１０（Ａ００１の定員数）/３５（グループ内施設の定員数合計値）×２５（グループ定員数）となる。その結果、最適化定員数は、施設コード  Ａ００１の場合は、７名と算出され、それぞれの最適化定員数は、上から７，６，７，５となる。
このような算出方法により、グループ定員数をグループ内施設コードに、最適化定員数として、配分することができる。
【００６３】
図１６の例２は、グループコード  Ｇ０２に関して最適化定員数を算出したときを例示している。グループコード  Ｇ０２は、グループ定員数は２３名であり、グループとして登録されているグループ施設コードは、Ａ０１２，Ａ０１５，Ａ０１６，Ａ０１７、Ａ０１８である。またそれぞれの施設コードの定員数は、図１６に示すように、上から３，５，４，７，３名であり、定員数合計値は２２名である。図１５のステップＳ４３の処理で、グループ定員数とグループ内施設の定員数合計値とを比較すると、グループ定員数の方が定員数合計値より大きいため、グループコード  Ｇ０２に関しては、定員最適化処理は行われない。
なお図１６の示した具体例では、最低定員数補正処理は不要であるが、必要に応じて、上述した方法にて、処理が行われる。
【００６４】
この発明のマッチングシステムで上記定員処理手段は、上記グループ定員条件ファイルのグループＩＤごとに、グループ定員数がグループ内各Ｂ要素の定員数の合計値以上と判定したときは、該当Ｂ要素のそれぞれの定員数を最適化定員数としてＢ要素ＩＤに対応付けて最適化定員情報ファイルに記憶し（図１５のステップＳ４５に相当）、一方、グループ定員数がグループ内Ｂ要素の定員数合計値より小さいと判定したときは、グループ内Ｂ要素の定員数合計値に対する各Ｂ要素の定員数の割合に、グループ定員数を乗じた数に基づいて該当Ｂ要素ＩＤの最適化定員を設定し、この最適化定員数を、Ｂ要素ＩＤに対応付けて最適化定員情報ファイルに記憶する（図１５のステップＳ４４に相当）。
この構成は、請求項３の構成に対応し、図１５に示した処理を行うための構成である
【００６５】
実施の形態３．
本実施の形態におけるシステム構成図は、実施の形態１で用いた図１、図２のとおりである。本実施の形態で特徴的なことは、図５のステップＳ２１で示した定員数の最適化処理が、実施の形態１および２とは異なる方法によることである。その他の処理については、実施の形態１で説明したとおりである。
実施の形態１および２では、グループ定員数による除算を用いて最適化定員数を決定した。実施の形態３では、グループ定員数を考慮した減算を用いて最適化定員数を決定する。
【００６６】
実施の形態３では、まず仮マッチ数をそのまま最適化定員数とし、その後、最適化定員数が大きい順に、各施設コードの最適化定員数を一定値ずつ（たとえば１ずつ）減算し、これを最適化定員数の合計値がグループ定員数以下になるまで繰り返す。
図１４の例１では、施設コードＡ０１０の仮マッチ数（すなわち最適化定員数の初期値）が８と最も大きいので、まず施設コードＡ０１０の最適化定員数を７に減少させる。それでもまだ施設コードＡ０１０の最適化定員数が最も大きいので、これをさらに６に減少させる。ここで施設コードＡ００３と施設コードＡ０１０の最適化定員数が６で等しくなるので、次の段階ではそれぞれの最適化定員数を５に減少させる。このようにして、最適化定員数の合計値がグループ定員数以下になるまで減算が繰り返される。
なお、最大の最適化定員数を持つ施設コードが複数ある場合には、上記のようにすべてを一律に減算することとしてもよく、また、いずれかの施設コードを選択してその最適化定員数のみを減算することとしてもよい。
【００６７】
なお、減算処理を行うときに、「最低人数」を設定し、最適化定員数を減算した結果、最低人数を下回る場合は、該当施設コードの最適化定員数に対して減算処理を行わないように、構成することができる。
また最適化定員数の合計がグループ定員数より小さい場合には、最適化定員数の多い順に、一定数ずつ加算する。但し、最適化定員数が定員数と等しい場合には、その次に最適化定員数の大きい施設コードに対して処理を行う。
【００６８】
実施の形態３によれば、仮マッチ数に応じた公平性が失われることと引き換えに、仮マッチ数が小さい施設については最適化定員数を減少させず維持することができる。
【００６９】
さらに、実施の形態３の変形例として、減算の対象となる施設コードを決定する基準を実施の形態３とは異なるものとすることができる。たとえば、参加者ＲＯＬファイル３、施設ＲＯＬファイル４、またはその双方を考慮してもよい。
たとえば、最も人気の低い施設の最適化定員数を減算するという基準を用いることができる。この処理は次のようにして実行される。まず、施設コードごとに、その施設に仮マッチングされた参加者すべてについて参加者ＲＯＬファイル３を参照し、その施設の優先順位の平均を算出する。そして、優先順位の平均が最も大きい施設コード、すなわち最も人気の低い施設コードの最適化定員数を減算する。このようにして、最適化定員数の合計値がグループ定員数以下になるまで減算が繰り返される。
【００７０】
このような変形例によれば、最適化定員数の決定処理自体においても優先度を考慮することができる。
【００７１】
また、上記実施の形態１〜実施の形態３の方法は、グループが階層的に構成されている場合にも応用することができる。すなわち、複数のグループがさらに１つのメタグループを構成し、そのメタグループも定員条件を有している場合には、まずグループ定員数を基準として暫定の最適化定員数を決定し、次にメタグループ定員数を基準として最終的な最適化定員数を決定することができる。
【００７２】
以上の各実施の形態で、マッチングシステム（マッチングサーバ１００、参加者端末２００、施設管理者端末３００、マッチング管理者端末４００）は、コンピュータで実現できるものである。また図示していないが、それぞれの装置は、プログラムを実行することによってその装置の機能を実現するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えている。
例えば、ＣＰＵは、バスを介して、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、通信ボード、表示装置、Ｋ／Ｂ（キーボード）、マウス、ＦＤＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＣＤＤ（コンパクトディスクドライブ）、磁気ディスク装置、光ディスク装置、プリンタ装置、スキャナ装置等と接続されている。
ＲＡＭは、揮発性メモリの一例である。ＲＯＭ、ＦＤＤ、ＣＤＤ、磁気ディスク装置、光ディスク装置は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
前述した実施の形態の各装置が扱うデータや情報は、記憶装置あるいは記憶部に保存され、装置の各部により、記録され読み出されるものである。
また、通信ボードは、例えば、ＬＡＮ、インターネット、或いはＩＳＤＮ等のＷＡＮ（ワイドエリアネットワーク）に接続されている。磁気ディスク装置には、オペレーティングシステム（ＯＳ）、ウィンドウシステム、プログラム群、ファイル群（データベース）が記憶されている。
プログラム群は、ＣＰＵ、ＯＳ、ウィンドウシステムにより実行される。
上記各装置の各部は、一部或いはすべてコンピュータで動作可能なプログラムにより構成しても構わない。或いは、ＲＯＭに記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェア或いは、ハードウェア或いは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実施されても構わない。
上記プログラム群には、実施の形態の説明において「〜手段」として説明した処理をＣＰＵに実行させ、当該手段の機能を実現させるプログラムが記憶される。これらのプログラムは、例えば、Ｃ言語やＨＴＭＬやＳＧＭＬやＸＭＬなどのコンピュータ言語により作成される。
また、上記プログラムは、磁気ディスク装置、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）、光ディスク、ＣＤ（コンパクトディスク）、ＭＤ（ミニディスク）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のその他の記録媒体に記憶され、ＣＰＵにより読み出され実行される。
【符号の説明】
【００７３】
１  施設情報ファイル、２  グループ定員条件ファイル、３  参加者ＲＯＬファイル、４  施設ＲＯＬファイル、５  マッチング結果格納ファイル、６  通信手段、７  ＲＯＬ作成手段、８  定員処理手段、９  マッチング手段（マッチング処理手段）、１０  最適化定員情報ファイル、２０  入力手段、２１  表示手段、２２  処理手段、２３  通信手段、３０  入力手段、３１  表示手段、３２  処理手段、３３  通信手段、１００  マッチングサーバ、２００  参加者端末、３００  施設管理者端末、４００  マッチング管理者端末、５００  通信網。
【図１】
2010165224.tif 000003
【図２】
2010165224.tif 000004
【図３】
2010165224.tif 000005
【図４】
2010165224.tif 000006
【図５】
2010165224.tif 000007
【図６】
2010165224.tif 000008
【図７】
2010165224.tif 000009
【図８】
2010165224.tif 000010
【図９】
2010165224.tif 000011
【図１０】
2010165224.tif 000012
【図１１】
2010165224.tif 000013
【図１２】
2010165224.tif 000014
【図１３】
2010165224.tif 000015
【図１４】
2010165224.tif 000016
【図１５】
2010165224.tif 000017
【図１６】
2010165224.tif 000018
【図１７】
2010165224.tif 000019
【図１８】
2010165224.tif 000020
【図１９】
2010165224.tif 000021
【図２０】
2010165224.tif 000022