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