(57)【要約】【課題】複数のレースを含む番組を自動生成する。【解決手段】番組生成プログラムはコンピュータで実行される。コンピュータは、生成対象の番組に含まれる複数のレースの各々に選手を割り振ることにより複数の割り振り情報を生成する。コンピュータは、複数の割り振り情報の各々について、番組を生成する際に使用する複数の生成ルールのうちで割り振り情報が満たしている生成ルールに対応付けられた点数の合計値を算出する。コンピュータは、複数の割り振り情報から合計値の大きさに基づいて番組の生成結果を出力する。【選択図】図１
2020060875.tif 000002
【特許請求の範囲】
【請求項１】
生成対象の番組に含まれる複数のレースの各々に選手を割り振ることにより複数の割り振り情報を生成し、
前記複数の割り振り情報の各々について、前記番組を生成する際に使用する複数の生成ルールのうちで当該割り振り情報が満たしている生成ルールに対応付けられた点数の合計値を算出し、
前記複数の割り振り情報から前記合計値の大きさに基づいて前記番組の生成結果を出力する
処理をコンピュータに実行させることを特徴とする番組生成プログラム。
【請求項２】
前記コンピュータは、前記複数の生成ルールの各々について、当該生成ルールの優先度に応じて設定される設定値を保持する記憶部を備え、
前記プログラムは、処理対象の割り振り情報が満たしている生成ルールに対して設定された前記設定値を、当該生成ルールに対応付けられた点数として用いることにより、前記合計値を計算する
処理をコンピュータに実行させることを特徴とする請求項１に記載の番組生成プログラム。
【請求項３】
前記コンピュータは、前記複数の生成ルールの各々について、当該生成ルールの優先度に応じて設定される設定値、および、当該生成ルールの優先度を前記番組の種類に応じて調整するための重み付けに使用する重み値を保持する記憶部を備え、
前記プログラムは、処理対象の割り振り情報が満たしている生成ルールに対して設定された前記設定値と、当該生成ルールと前記番組の種類に対応付けられた前記重み値の積を、当該生成ルールに対応付けられた点数として用いることにより、前記合計値を計算する
処理をコンピュータに実行させることを特徴とする請求項１に記載の番組生成プログラム。
【請求項４】
前記コンピュータの記憶部は、過去に行われた他のレースでの投票券の購入金額と前記他のレースに出場した選手の関係の解析から得られた、前記他のレースでの投票券の購入金額を増大させた要因を表わす情報を保持し、
前記プログラムは、
前記生成結果として出力する割り振り情報に含まれる前記複数のレースの各々について、前記要因を含むかを判定し、
前記要因を含むレースの数が閾値以下の割り振り情報について、当該割り振り情報のうちで前記要因を含まないレースを識別する情報を、当該割り振り情報と共に出力する
処理を前記コンピュータにさらに実行させることを特徴とする請求項１〜３のいずれか１項に記載の番組生成プログラム。
【請求項５】
終了したレースの結果を用いて、前記複数のレースのいずれかに出場する選手の各々に対して、出場可能なレースの種類を判定し、
第１の種類のレースに出場可能な選手を前記第１の種類のレース数に割り振ることにより生成した複数の割り振り情報のうちで、前記合計値が相対的に大きな第１の割り振り情報を求め、
第２の種類のレースに出場可能な選手を前記第２の種類のレース数に割り振ることにより生成した割り振り情報のうちで、前記合計値が相対的に大きな第２の割り振り情報を求め、
前記第１の割り振り情報と前記第２の割り振り情報の組み合わせを、前記番組の生成結果として出力する
処理を前記コンピュータにさらに実行させることを特徴とする請求項１〜４のいずれか１項に記載の番組生成プログラム。
【請求項６】
互いに親族もしくは同門の関係にある選手同士が同一のレースに参加する場合に前記合計値に加算される点数が負の値に設定される、又は、互いに親族もしくは同門の関係にある選手同士が同一のレースに参加するように生成された割り振り情報は前記番組の生成結果から除外される
ことを特徴とする請求項１〜５のいずれか１項に記載の番組生成プログラム。
【請求項７】
同じ地域に属する複数の選手のグループが同一のレースに含まれる場合に前記合計値に加算される点数が、正の値に設定される
ことを特徴とする請求項１〜６のいずれか１項に記載の番組生成プログラム。
【請求項８】
生成対象の番組に含まれる複数のレースの各々に選手を割り振ることにより複数の割り振り情報を生成し、
前記複数の割り振り情報の各々について、前記番組を生成する際に使用する複数の生成ルールのうちで当該割り振り情報が満たしている生成ルールに対応付けられた点数の合計値を算出し、
前記複数の割り振り情報から前記合計値の大きさに基づいて前記番組の生成結果を出力する
処理をコンピュータが実行することを特徴とする番組生成方法。
【請求項９】
生成対象の番組に含まれる複数のレースの各々に選手を割り振ることにより複数の割り振り情報を生成する生成部と、
前記複数の割り振り情報の各々について、前記番組を生成する際に使用する複数の生成ルールのうちで当該割り振り情報が満たしている生成ルールに対応付けられた点数の合計値を算出する計算部と、
前記複数の割り振り情報から前記合計値の大きさに基づいて前記番組の生成結果を出力する出力部
を備えることを特徴とする番組生成装置。
【請求項１０】
生成対象の番組に含まれる複数のレースのいずれかへの出場選手を、前記複数のレースに割り振ることにより、第１の割り振り情報を生成し、
前記第１の割り振り情報のうちで、前記番組を生成する際に使用する生成ルールを満たしていない割り振りが行われている第１のレースを検出し、
前記第１のレースに割り振られた選手を、前記第１の割り振り情報中の第２のレースに割り振られた選手と交換することにより、第２の割り振り情報を生成し、
前記第２の割り振り情報が前記生成ルールを満たす場合、前記第２の割り振り情報を、前記番組の生成結果として出力する
処理をコンピュータに実行させることを特徴とする番組生成プログラム。
【請求項１１】
前記コンピュータの記憶部は、過去に行われた他のレースでの投票券の購入金額と前記他のレースに出場した選手の関係の解析から得られた、前記他のレースでの投票券の購入金額を増大させた要因を表わす情報を保持し、
前記プログラムは、
前記第２の割り振り情報に含まれる前記複数のレースの各々について、前記要因を含むかを判定し、
前記要因を含むレースの数が閾値以下の場合、前記第２の割り振り情報のうちで前記要因を含まないレースを識別する情報を、前記番組の生成結果とともに通知する
処理を前記コンピュータにさらに実行させることを特徴とする請求項１０に記載の番組生成プログラム。
【請求項１２】
終了したレースの結果を用いて、出場可能なレースの種類を前記出場選手の各々に対して判定し、
第１の種類のレースに出場可能な選手を前記第１の種類のレース数に割り振った第３の割り振り情報を生成すると共に、第２の種類のレースに出場可能な選手を前記第２の種類のレース数に割り振った第４の割り振り情報を生成し、
前記第３および第４の割り振り情報が前記生成ルールに反している場合、前記第１の種類のレース間で割り振られた選手を交換するとともに、前記第２の種類のレース間で割り振られた選手を交換する
処理を前記コンピュータにさらに実行させることを特徴とする請求項１０もしくは１１に記載の番組生成プログラム。
【請求項１３】
前記生成ルールは、互いに親族もしくは同門の関係にある選手同士が同一のレースに参加することを禁止し、
前記第１のレース中に前記生成ルールで禁止された関係にある複数の選手が含まれている場合、前記複数の選手のうちの一人以外を、前記第１の割り振り情報中の前記第１のレース以外のレース中の選手と交換して前記第２の割り振り情報を生成する
処理を前記コンピュータにさらに実行させることを特徴とする請求項１０〜１２のいずれか１項に記載の番組生成プログラム。
【請求項１４】
前記生成ルールは、同じ地域に属する複数の選手のグループが同一のレースに含まれることを含み、
前記第１のレース中に前記グループが含まれていない場合、前記第１のレースに割り振られた選手の１人以上を、前記第１の割り振り情報中の前記第１のレース以外のレース中の選手と交換して、前記グループを含む前記第２の割り振り情報を生成する
処理を前記コンピュータにさらに実行させることを特徴とする請求項１０〜１３のいずれか１項に記載の番組生成プログラム。
【請求項１５】
前記コンピュータは、前記生成ルールに含まれる複数のルールの各々の重要度を表わす重み付け情報を記憶し、
前記プログラムは、
前記重み付け情報が所定の閾値未満のルールを前記第２の割り振り情報が満たさない場合、前記第２の割り振り情報と共に、前記第２の割り振り情報が満たしていないルールを特定する情報を出力する
処理を前記コンピュータに実行させることを特徴とする請求項１０〜１４のいずれか１項に記載の番組生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、生成プログラム、生成方法、および、生成装置に関する。
【背景技術】
【０００２】
競輪などのレースにおいて、各選手の出場レースと各選手に出場レース内の何番枠を割り当てるかを決定する処理は、番組編成業務と呼ばれる。この番組編成業務は、競輪レースの編成についての経験の豊富な執務員が、これまでの経験や選手についての研究結果などに基づいて行っている。
【０００３】
関連する技術として、番組編成に使用するデータの受信手段、番組編成の要因の指示や結果の修正の指示を受け付ける入力手段、入力手段に接続されたデータ処理を行うデータ処理手段を含む、競艇の番組編成システムが提案されている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平３−２３１６９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
番組編成は執務員の経験や知識に基づいて人手で行われているため、ノウハウの継承が困難で、処理に時間がかかり、作業効率が悪い。レースは複数日にわたって開催される場合があり、前の日のレースの結果に基づいて翌日以降のレースが生成される場合も多い。このような場合には、前の日のレースの結果が出揃った後で、翌日以降のレースの番組を発表する時刻までの短時間の間に番組編成を行うことになるので、効率よく番組編成を行うことが望ましい。しかし、番組編成が執務員の経験や知識に基づいて行われているため、効率化は困難である。また、関連する技術として述べた技術を適用しても、番組編成や修正が人の手によって行われるため、執務員の知識に依存して番組が編成されることになる。
【０００６】
本発明は、１つの側面として、複数のレースを含む番組を自動生成することを目的とする。
【課題を解決するための手段】
【０００７】
１つの態様では、番組生成プログラムはコンピュータで実行される。コンピュータは、生成対象の番組に含まれる複数のレースの各々に選手を割り振ることにより複数の割り振り情報を生成する。コンピュータは、前記複数の割り振り情報の各々について、前記番組を生成する際に使用する複数の生成ルールのうちで当該割り振り情報が満たしている生成ルールに対応付けられた点数の合計値を算出する。コンピュータは、前記複数の割り振り情報から前記合計値の大きさに基づいて前記番組の生成結果を出力する。
【発明の効果】
【０００８】
１つの側面によれば、複数のレースを含む番組を自動生成することができる。
【図面の簡単な説明】
【０００９】
【図１】実施形態にかかる番組の生成方法の例を説明する図である。
【図２】生成装置の構成の例を説明する図である。
【図３】生成装置のハードウェア構成の例を説明する図である。
【図４】選手情報ＤＢに含まれる情報の例を説明する図である。
【図５】生成ルールＤＢに含まれる情報の例を説明する図である。
【図６】過去レース情報ＤＢに含まれる情報の例を説明する図である。
【図７】概定番組表ＤＢに含まれる情報の例を説明する図である。
【図８】学習データの例を説明する図である。
【図９】番組の生成処理の例を説明するフローチャートである。
【図１０】合計値の計算例を説明する図である。
【図１１】２日目以降の番組の生成処理の例を説明するフローチャートである。
【図１２】重み付け情報の例を説明する図である。
【図１３】合計値の計算例を説明する図である。
【図１４】合計値の計算例を説明する図である。
【図１５】第２の実施形態にかかる番組の生成処理の例を説明するフローチャートである。
【図１６】各割り振り情報に対する点数の合計値の計算方法の例を説明するフローチャートである。
【図１７】第３の実施形態にかかる番組の生成処理の例を説明するフローチャートである。
【図１８】エラーの修正を伴う番組の生成方法の例を説明する図である。
【図１９】学習データの例を説明する図である。
【図２０】第１の割り振り情報の生成例を説明する図である。
【図２１】第４の実施形態にかかる番組の生成処理の例を説明するフローチャートである。
【図２２】エラーの発生例を説明する図である。
【図２３Ａ】エラー発生箇所の修正処理の例を説明するフローチャートである。
【図２３Ｂ】エラー発生箇所の修正処理の例を説明するフローチャートである。
【図２４】第５の実施形態にかかる番組の生成処理の例を説明するフローチャートである。
【図２５】エラー発生箇所の修正処理の例を説明するフローチャートである。
【図２６Ａ】第６の実施形態にかかる番組の生成処理の例を説明するフローチャートである。
【図２６Ｂ】第６の実施形態にかかる番組の生成処理の例を説明するフローチャートである。
【発明を実施するための形態】
【００１０】
図１は、実施形態にかかる番組の生成方法の例を説明する図である。複数のレースを含む番組の生成に使用される生成装置は、選手情報１、生成ルール２、過去レース情報３、および、概定番組表４を保持しているか、これらの情報を取得できる。ここで、選手情報１は生成対象の番組中のレースに出場可能な選手の情報である。
【００１１】
生成ルール２は、レースを生成する際に使用するルールであり、レースの生成のためのルールの他、執務員の経験や知識として蓄積されている情報も含むことができる。例えば、競輪レースでは地域ごとにラインと呼ばれるグループが作られることが多く、レース中に作られるラインが投票券の購入に影響することがある。そこで、執務員がレースを生成する際に考慮しているラインについての情報が生成ルール２として登録されても良い。また、例えば、同じレースに縁故関係のある選手同士が含まれないようにするなどのルールが生成ルール２に含まれても良い。各々の生成ルール２には、その生成ルール２を満たした場合に加算される点数が対応付けられているものとする。
【００１２】
過去レース情報３は、レースに参加可能な選手の過去のレースに関する情報である。概定番組表４は、生成対象の番組に含まれるレース数や各レースに出場する選手数などの情報を含む。
【００１３】
生成装置は、概定番組表４から生成対象の番組中のレース数などの情報を取得すると、生成する番組中のレースのいずれかに出場する選手を、番組中の各レースに割り振ることにより、複数の割り振り情報５（５ａ〜５ｄ）を生成する。図１のＡには、生成された割り振り情報５のうちの一部が示されているが、生成装置が生成する割り振り情報５の数は任意である。例えば、生成装置は、選手情報１と概定番組表４の情報を用いて生成可能な全てのパターンの割り振り情報５を生成し得る。
【００１４】
生成装置は、生成した全ての割り振り情報５について、その割り振り情報５が満たしている生成ルールに対応付けられた点数の合計値を計算する。図１の例では、割り振り情報５ａに対して合計値＝９０、割り振り情報５ｃに対して合計値＝８５、割り振り情報５ｄに対して合計値＝５０という値が得られている。また、割り振り情報５ｂについては、合計値＝９３という結果が得られているとする。
【００１５】
生成装置は、生成した全ての割り振り情報５のうちで、得られた合計値が相対的に大きな所定数の割り振り情報を、番組の生成結果として出力する対象に決定する。例えば、図１において所定数が２であるとする。すると、生成装置は、合計値＝９０の割り振り情報５ａと合計値＝９３の割り振り情報５ｂを、番組の生成結果として出力する。
【００１６】
このように、実施形態にかかる方法によると、番組中の各レースを生成ルール２に沿って自動生成することができる。このため、執務員は、自動生成された番組を確認し、適宜、修正するだけで番組の編成業務を行うことができる。従って、番組編成業務が効率化される。実施形態にかかる方法では、特に、２日目以降のレースのように番組の編成に使用可能な時間が短い場合に、効率的に番組を生成できる。また、執務員が経験や知識に基づいて番組編成をする場合に考慮している条件を生成ルール２として登録することにより、自動生成された番組も、執務員が人手で生成しているときと同様に魅力のあるレースを含むことが期待される。
【００１７】
＜装置構成＞
図２は、生成装置１０の構成の例を説明する図である。生成装置１０は、学習処理部２０、生成処理部３０、および、記憶部４０を備える。記憶部４０は、選手情報ＤＢ４１、生成ルールＤＢ４２、過去レース情報ＤＢ４３、概定番組表ＤＢ４４を有する。
【００１８】
選手情報ＤＢ４１は、番組中のレースに出場可能な選手の情報であり、選手の氏名、登録都道府県、戦績などの情報を含む。生成ルールＤＢ４２は、生成ルール２を記録する。生成ルールＤＢ４２は、生成ルール２の機械学習に使用される学習データを含んでも良い。過去レース情報ＤＢ４３は、過去に行われたレースについての出場選手などの情報の他、過去に行われたレースでの売上額などの情報も含み得る。概定番組表ＤＢ４４は、生成装置１０が生成可能な番組についての概定番組表４を記録している。選手情報ＤＢ４１、生成ルールＤＢ４２、過去レース情報ＤＢ４３、概定番組表ＤＢ４４の例は後述する。
【００１９】
学習処理部２０は、学習部２１と検出部２２を有する。学習部２１は、生成ルールＤＢ４２に記録されているルールを機械学習する。以下、機械学習を単に「学習」と記載することがある。検出部２２は、学習部２１での学習結果を用いて、生成部３１が生成した割り振り情報のうちで、生成ルールＤＢ４２中の生成ルールを満たす箇所を検出する。
【００２０】
生成処理部３０は生成部３１と出力部３４を有し、オプションとして、通知情報処理部３２、判定部３３、および、計算部３５の１つ以上を備えていても良い。生成部３１は、概定番組表ＤＢ４４から生成対象の番組についての情報を取得し、選手情報ＤＢ４１に含まれている情報を用いて複数の割り振り情報５を生成する。計算部３５は、生成部３１によって生成された複数の割り振り情報５の各々に対して、その割り振り情報５が満たしている生成ルールに対応付けられた点数の合計値を計算する。
【００２１】
通知情報処理部３２は、自動生成された番組情報とともに出力する通知情報を生成する。例えば、通知情報処理部３２は、判定部３３での判定処理の結果を通知情報として生成できる。判定部３３は、生成された番組に含まれているレースの各々について、投票券の購入を促進する要因を含むかを判定する。投票券の購入を促進する要因は、例えば、過去のレースでの投票券の購入状況と過去のレースに出場した選手の情報を関連付けて解析することなどにより得られる情報である。投票券の購入を促進する要因は、過去レース情報ＤＢ４３に格納され得る。
【００２２】
出力部３４は、計算部３５での計算結果を用いて、相対的に合計値が大きな割り振り情報５を選択する。出力部３４は、選択した割り振り情報５を、番組の生成結果として出力する。なお、出力部３４が出力する対象として決定する割り振り情報５の数は、実装に応じて１つ以上の任意の数に設定され得る。出力部３４は、番組の生成結果として選択した割り振り情報５、および／または、通知情報処理部３２で生成された通知情報を出力する。通知情報および／または番組情報の出力は、生成装置１０が保持する表示装置に対して行われても良く、また、生成装置１０に接続された表示装置に出力されても良い。
【００２３】
図３は、生成装置１０のハードウェア構成の例を説明する図である。生成装置１０は、プロセッサ１０１、メモリ１０２、バス１０５、出力装置１０４を備える。さらに、生成装置１０は、入力装置１０３、記憶装置１０６、可搬記憶媒体駆動装置１０７、ネットワークインタフェース１０９の１つ以上を有していても良い。
【００２４】
プロセッサ１０１は、任意の処理回路であり、例えば、Central Processing Unit（ＣＰＵ）とすることができる。プロセッサ１０１は、学習処理部２０および生成処理部３０として動作する。プロセッサ１０１は、例えば、メモリ１０２や記憶装置１０６に記憶されたプログラムを実行することができる。メモリ１０２は、プロセッサ１０１の動作により得られたデータや、プロセッサ１０１の処理に用いられるデータを、適宜、記憶する。記憶装置１０６は、プログラムやデータなどを格納し、格納している情報を、適宜、プロセッサ１０１などに提供する。メモリ１０２や記憶装置１０６は、生成装置１０において、記憶部４０として動作する。
【００２５】
バス１０５は、プロセッサ１０１、メモリ１０２、入力装置１０３、出力装置１０４、記憶装置１０６、可搬記憶媒体駆動装置１０７、ネットワークインタフェース１０９を、相互にデータの送受信が可能になるように接続する。入力装置１０３は、キーボードやマウスなど、情報の入力に使用される任意の装置であり、出力装置１０４は、ディスプレイなど、データの出力に使用される任意の装置である。可搬記憶媒体駆動装置１０７は、メモリ１０２や記憶装置１０６のデータを可搬記憶媒体１０８に出力することができ、また、可搬記憶媒体１０８からプログラムやデータ等を読み出すことができる。ここで、可搬記憶媒体１０８は、Compact Disc Recordable（ＣＤ−Ｒ）やDigital Versatile Disk Recordable（ＤＶＤ−Ｒ）を含む、持ち運びが可能な任意の記憶媒体とすることができる。ネットワークインタフェース１０９は、適宜、生成装置１０が他の装置と通信するための処理を行う。
【００２６】
＜生成装置１０が保持する情報＞
図４は、選手情報ＤＢ４１に含まれる情報の例を説明する図である。選手情報ＤＢ４１は、各選手についての情報を保持する。図４の例では、選手情報ＤＢ４１には、番号、選手名、級班、得点、順位、登録都道府県、地域（ライン）、脚質、登録期、生年月日、縁故選手、ＮＧ選手の情報が記録される。
【００２７】
番号は、選手情報ＤＢ４１中の選手を一意に識別可能な番号である。級班は、そのエントリの選手が分類されている階級と班の組み合わせを表わす情報である。得点は、そのエントリの選手についての直近の数ヶ月の間の戦績を数値化することによって得られる点数である。得点は、選手が出場したレースでの成績と出場したレースの重要度によって決定され、得点の値が高いほど良い戦績を有することを示す。順位は得点の値が高い順を示す数値であり、数値が小さいほど得点の値が大きいことを示す。登録都道府県は、エントリ中の選手が選手登録をしている都道府県である。地域は、そのエントリの選手がレース中にラインと呼ばれる登録地方ごとのグループを形成する場合に、どの地方のラインに参加するかを表わす。
【００２８】
脚質は、選手が得意とする戦術やその選手が過去に好成績を出したときの決まり手の種類を表わす情報である。「逃」（逃げ）は、レースを先行する選手として走ったことによって好成績を出したことを示す。「追」（追い込み）は、先行する選手の後から先行する選手を抜いて好成績を出したことを示す。「両」は、逃げなどの自力でレースの展開を生成する戦術と、追い込みのように他の選手によって作られたレース展開を利用した戦術の両方を使用して、好成績を挙げたことを示す。脚質の情報には、決まり手の他に、競輪場のバックストレッチラインやホームストレッチラインなどの特定の通過点を１位で通過した回数などの情報も含まれていても良い。登録期は、選手登録が行われた時期を示す情報である。
【００２９】
縁故選手は、縁故関係にある選手の番号である。縁故選手は、そのエントリの選手の親族や、そのエントリの選手と同門の選手など、選手間に関係があることにより、同一のレースで競わせることを避けたほうが良い選手である。例えば、番号＝１の選手の兄弟が番号＝１００に登録されているとする。また、番号＝１の選手と師弟関係にある選手が番号＝５０に登録されているとする。この場合、図４に示すように、番号＝１の選手に対する縁故選手として、番号＝１００、５０が設定される。ＮＧ選手は、そのエントリの選手に対して、過去のレースでの出来事や選手間の人間関係などに起因して、同一のレースに参加することが望ましくないと判断される選手である。例えば、番号＝２の選手と番号＝２５の選手の間に過去のレースでトラブルが発生しているとする。この場合、図４に示すように、番号＝２の選手にとってのＮＧ選手として、番号＝２５の選手が登録される。
【００３０】
選手情報ＤＢ４１が生成対象の番組に含まれるレースに出場する選手以外の選手の情報も含む場合、選手情報ＤＢ４１は、選手情報１を含んでいても良い。選手情報１は、生成対象の番組に含まれるレースのいずれかに出場する選手のリストである。選手情報ＤＢ４１に選手情報１が含まれる場合、生成部３１は、割り振り情報を生成する際に、選手情報１と選手情報ＤＢ４１中の情報を用いて、番組中のレースに出場する選手の情報を特定できる。なお、選手情報ＤＢ４１に、生成対象の番組に含まれるレースに出場する選手の情報以外が含まれていない場合、生成部３１は、選手情報１を用いなくても良い。
【００３１】
図５は、生成ルールＤＢ４２に含まれる生成ルール２の例を説明する図である。生成ルールＤＢ４２には、生成ルール２の情報や学習部２１での学習に使用される学習データなどが含まれる。図５は、レースの展開を生成する可能性のある選手（自力選手）の定義、１レース中に含まれ得る自力選手の数、縁故選手に関連したルールなどを表す生成ルール２の登録例を示している。図５の例では、生成ルールＤＢ４２には、生成ルールに対応付けて設定値も記録されている。設定値は、割り振り情報５を番組の生成情報として出力する対象とするかを判定するために使用する合計値の計算の際に使用され得る。このため、出力される番組情報が満たしていることが望ましい生成ルールに対しては、正の値が設定される。一方、出力される番組情報が満たしていないことが望ましい生成ルールに対しては、負の値が設定される。設定値の絶対値は、生成ルールの重要度や優先度に応じて設定され得る。例えば、重要度の高い生成ルールほど、合計値に及ぼす影響が大きくなるように、大きな絶対値を有する設定値が設定され得る。なお、設定値は全ての生成ルールに対応付けられていなくても良い。例えば、定義や基準値を設定するために使用される生成ルールについては、設定値が対応付けられていない。
【００３２】
自力選手の定義は、図５の４番目のエントリに記載されている。図５の例では、逃＞０、捲＞０、ＢＫ＞０のいずれかを満たすと、生成装置１０において自力選手として認識される。ここで、「逃」は、過去のレースでの決まり手が「逃げ」であることを示す。従って、逃＞０という条件は、過去の所定期間の間のレースにおいて先行選手として勝利していることを示す。「捲」は、過去のレースでの決まり手が「捲り」であることを示す。従って、捲＞０という条件は、過去の所定期間の間のレースにおいて、先行選手と同じグループ（ライン）で走行していて、ゴール直前で先行選手を抜いて勝利していることを示す。ＢＫは、最終の周において競輪場のバックストレッチラインを１位で通過した回数を示す。従って、ＢＫ＞０という条件は、過去の所定期間の間のレースの最終の周において、バックストレッチラインを１位で通過した回数が１回以上であることを示す。図５の５番目のエントリは、１レースに含まれる自力選手の数の基準は３であるという生成ルールを示す。６番目のエントリは、複数のレース間での自力選手数の差として許容される値は１であることを示す。
【００３３】
図５の１番目のエントリは、１レースに含まれる自力選手の数は２〜４であるという生成ルールと、その生成ルールを満たす場合に計算処理に用いられる設定値を含む。図５の１番目のエントリの例では、自力選手の数に応じて、複数の設定値が対応付けられている。１レース中の自力選手の数が２人の場合に対して、設定値＝２が対応付けられている。同様に、１レース中の自力選手の数が３人の場合に対して設定値＝５が対応付けられ、１レース中の自力選手の数が４人の場合に対して設定値＝３が対応付けられている。
【００３４】
図５の２番目のエントリには、１レースに縁故選手同士の組み合わせを含まないという生成ルールと、その生成ルールを満たす場合に計算処理に用いられる設定値が０であることが記録されている。一方、３番目のエントリには、１レースに縁故選手同士の組み合わせを含む場合に、計算処理に用いられる設定値が−１０であることが記録されている。縁故選手同士の組み合わせを含むレースに対しては、設定値が負の値であるので、縁故選手同士の組み合わせを含む割り振り情報５に対して計算される合計値は、縁故選手同士の組み合わせを含まない場合よりも小さくなりやすくなっている。このため、縁故選手同士の組み合わせを含む割り振り情報５は、出力情報として選択されにくくなる。合計値の計算の具体例については後述する。
【００３５】
図５に示すルールは生成ルール２の一部に過ぎない。生成ルール２には、縁故選手に関するルールやラインに関するルールなど、他の種類のルールも含まれる。また、生成ルール２には、執務員がレースの生成の際に使用するノウハウなども含まれる。
【００３６】
図６は、過去レース情報ＤＢ４３に含まれる情報の例を説明する図である。過去レース情報ＤＢ４３には、これまでのレースでの各選手の得点や勝率の情報が含まれる。さらに、過去レース情報ＤＢ４３には、生成対象の番組と同じ興行中の過去のレースの結果、および、過去のレースでの参加選手や過去のレースでの投票券の売上高などの情報も含まれ得る。
【００３７】
テーブルＴ１は、過去のレースでの各選手の得点や勝率の情報の例である。テーブルＴ１には、番号、選手名、得点、および、勝率が含まれる。テーブルＴ１中の情報のうち、番号と得点は、各選手について選手情報ＤＢ４１に登録されている情報と同様である。勝率は、各選手が直近の数ヶ月の間に特定の戦績を出した割合の百分率である。例えば、勝率は、各選手が直近の数ヶ月の間のレースで３位以内に入った割合であっても良い。
【００３８】
テーブルＴ２は、興行中の番組に含まれるレースのうちで終了しているレースでの個々の選手の戦績の記録例である。テーブルＴ２には、番号、選手名、戦績が含まれる。番号と選手名はテーブルＴ１と同様である。戦績は、個々のエントリに対応付けられている選手についての、番組中の各レースの結果である。図６の例では、番号＝１、選手名＝ＡＡＡの選手は、１日目に予選３に出場して２位になっている。番号＝２、選手名＝ＢＢＢの選手は、１日目に予選５に出場して３位になっている。同様に、番号＝３、選手名＝ＣＣＣの選手は、１日目に初特選に出場して２位になっている。テーブルＴ２は、１日目のデータが記録された場合の例である。個々の選手の戦績は、レースの終了後にテーブルＴ２に記録される。なお、レース結果の入力は、適宜、生成装置１０のオペレータ等によって行われる。
【００３９】
テーブルＴ３は、過去のレースへの参加選手や過去のレースでの投票券の売上高などの情報の例である。テーブルＴ３には、レース名、売り上げ、出場選手情報が含まれる。例えば、レース名＝Ａのレースでは、投票券の売り上げの総額が８３億円であり、出場選手の１位の選手から最下位の選手までの情報が対応するエントリ中の出場選手情報に記録されている。同様に、レース名＝Ｂのレースについて、投票券の売り上げの総額が１３５億円であり、１位の出場選手はＣＣＣであり、２位の出場選手はＡＡＡであることが記録されている。テーブルＴ３の情報と選手情報ＤＢ４１の情報を用いることにより、過去のレースで投票券の購入金額を増大させた要因が特定され得る。例えば、レース名＝Ｂのレースでは開催地の出身の有名選手が出場した、オッズ比の比較的低い選手の数が所定数であったなどの要因が分析により特定され得る。過去のレースで投票券の購入金額を増大させた要因は、投票券の購入を促進する要因として記憶部４０に記憶され得る。なお、過去のレースで投票券の購入金額を増大させた要因の分析は、例えば、判定部３３などで行っても良い。また、過去のレースで投票券の購入金額を増大させた要因は、予め、オペレータによって特定され、記憶部４０に格納されていても良い。
【００４０】
図７は、概定番組表ＤＢ４４に含まれる情報の例を説明する図である。概定番組表ＤＢ４４は、１つ以上の概定番組表４を含む。概定番組表４には、テーブルＴ１１に示すような日程の情報と、テーブルＴ１２に示すような勝ち上がり情報が含まれる。テーブルＴ１１には、番組コード、全日数、レース日、レース数、レース種別、車立てが含まれる。番組コードは、その番組を識別するコードである。全日数は、番組コードで識別される番組に含まれるレースが行われる日数である。レース日は、番組に含まれている各レースが開催されるレース日である。レース種別はレースの種類であり、車立ては各レースに出走する選手数を表す。例えば、テーブルＴ１１には、番組コード＝１０２７７４の番組では、レースが３日間にわたって行われることが記録されている。概定番組表４の１番目のエントリには、１日目に初特選のレースが１つ開催され、初特選には７人の選手が出走することが記載されている。同様に、２番目のエントリには、１日目に予選が６つ開催されることと、各予選には７人の選手が出走することが記載されている。２日目と３日目に開催されるレースの情報も同様にテーブルＴ１１から特定される。
【００４１】
テーブルＴ１２に示す勝ち上がり情報には、レース日、レース種別、参加選手の情報が記録されている。レース日とレース種別の組み合わせで特定されるレースには、対応付けられたレース結果を出した参加選手が参加できる。例えば、２日目の準決勝には、１日目の初特選のレースで１〜７位になった選手、１日目に行われた６つの予選の各々で１位か２位になった選手、および、いずれかの予選で３位になった選手のうちの２人が参加できる。同様に、２日目の選抜レースには、いずれかの予選で３位になった選手のうちの４人、各予選での４位の選手、および、いずれかの予選で５位になった選手のうちの４人が参加できる。他のレース日の他の種類のレースについても、同様に勝ち上がり情報を用いて、参加選手を特定することができる。
【００４２】
＜学習処理の例＞
次に、生成された割り振り情報が生成ルールＤＢ４２に登録されているルールに合致しているかを判定するための学習済みモデルの生成処理の例について説明する。学習部２１は、生成ルールＤＢ４２に登録されている情報を読み込む。このとき、学習部２１は、生成ルールＤＢ４２に登録されているルールの一部を学習用に使用しても良く、生成ルールＤＢ４２に登録されている全てのルールを学習用に使用しても良い。例えば、番組生成時に考慮される項目の重要度が重み付けで設定されている場合、学習部２１は、重み情報が所定の値以上の項目に関するルールを学習処理に使用しても良い。学習部２１は、読み込んだ情報を学習データのフォーマットに整形する。なお、学習データは、生成ルールＤＢ４２中の情報に基づいて、学習部２１での学習に適した形式に生成されているため、学習データ自体も生成ルールであるといえる。
【００４３】
図８は、学習データの例を説明する図である。図８は、生成した割り振り情報に含まれる各レースについて、レース中の自力選手の数に関する設定値を特定するための学習に使用され得る学習データの一部を示す。学習データには、そのデータに対する設定値が対応付けられている。例えば、図８に示す学習データを用いて、学習部２１は、レース中の自力選手の数が２の場合には設定値＝２と出力するように学習する。また、学習部２１は、レース中の自力選手の数が１または５の場合には設定値＝０、レース中の自力選手の数が４の場合には設定値＝３と出力することも学習する。同様に、学習部２１は、レース中の自力選手の数が３の場合には設定値＝５を出力するように学習できる。自力選手数以外のルールについても、同様に、学習データが生成され、学習部２１での学習処理の対象とされる。
【００４４】
学習部２１は、学習データを入力として、機械学習を行うことにより、学習済みモデルを生成する。学習済みモデルは、割り振り情報に含まれているレースが満たす生成ルールに対応付けられた設定値を特定する際に検出部２２が使用するパラメータである。学習部２１は、生成した学習済みモデルの情報を適宜、記憶部４０に格納しても良い。
【００４５】
＜第１の実施形態＞
第１の実施形態では、各生成ルールに対応付けられた設定値から、割り振り情報を出力対象とするかの判定に使用する合計値を計算する場合の処理について説明する。なお、第１の実施形態では、生成装置１０は通知情報処理部３２と判定部３３を備えていなくても良い。
【００４６】
図９は、番組の生成処理の例を説明するフローチャートである。図９のフローチャートでは、変数ｙと定数Ｙが使用される。定数Ｙは生成される割り振り情報の数である。変数ｙは合計値を計算した割り振り情報の数の係数に使用される。なお、図９は生成処理の例の一例であり、例えば、ステップＳ３の処理がステップＳ１やＳ２の前に行われるなど、処理の順序が実装に応じて変更され得る。
【００４７】
番組情報を生成する際に、まず、生成部３１は、概定番組表を用いて生成対象の番組中のレース数（Ｘ）を特定する（ステップＳ１）。このとき、生成部３１は、適宜、概定番組表ＤＢ４４を参照できる。例えば、番組コード＝１０２７７４の１日目の番組が生成対象であるとする。すると、生成部３１は、図７のテーブルＴ１１を用いて、生成対象の番組には、１つの初特選レースと６つの予選が含まれていて、各レースに７人の選手が出場すると認識する。ここで、生成対象の番組に含まれているレースに参加する選手（出場選手）のうちで、得点の順位が１位〜７位の選手が初特選レースに参加可能であることが予め概定番組表ＤＢ４４に記録されているとする。さらに、初特選レースの数は１レースであるので、出場選手は１通りに決定される。そこで、生成部３１は、予選の６レースを生成対象とするとともに、選手情報ＤＢ４１中に含まれている出場選手のうち、得点の順位が８位〜４９位の選手を予選に出場する選手として認識する。
【００４８】
次に、生成部３１は、Ｘ個のレースに対する可能な割り振り情報をＹ通り作成する（ステップＳ２）。ここで、Ｙは実装に応じて設定される値であり、２以上の任意の値である。以下の例では、Ｘ個のレースに対する可能な割り振り情報の全てが生成部３１によって生成されるとする。
【００４９】
計算部３５は、変数ｙを１に設定する（ステップＳ３）。次に、ｙ番目の割り振り情報中の各レースが満たす生成ルールの設定値の合計値の計算が行われる（ステップＳ４）。ステップＳ４の処理は、検出部２２と計算部３５によって行われる。ステップＳ４の処理を行うにあたって、検出部２２は学習済みモデルを読み込む。なお、学習済みモデルとして使用されるパラメータが検出部２２に設定されるタイミングは、実装に応じて任意に変更され得る。検出部２２は、学習済みモデルを用いて、生成された割り振り情報の各々について、その割り振り情報に含まれているレースが満たしている生成ルールの各々に対応付けられた設定値を特定する。なお、ステップＳ４において、検出部２２は、選手情報ＤＢ４１を参照して各レースに割り振られた選手に関する情報を特定した上で、処理対象の割り振り情報が満たす生成ルールに対応する設定値を特定できる。その後、計算部３５は、検出部２２が特定した設定値を合計することにより、処理対象の割り振り情報に含まれているレースが満たしている生成ルールに対応付けられた点数の合計値を計算する。合計値の計算の詳細については図１０を参照しながら後述する。計算部３５は、処理対象の割り振り情報についての合計値の計算が終わると、変数ｙを１つインクリメントして、定数Ｙと比較する（ステップＳ５、Ｓ６）。変数ｙが定数Ｙを超えていない場合、生成部３１で生成された割り振り情報のうちで合計値を計算していない割り振り情報があるので、検出部２２と計算部３５は、ステップＳ４の処理を繰り返す（ステップＳ６でＮｏ）。
【００５０】
一方、変数ｙが定数Ｙを超えている場合、生成部３１で生成された全ての割り振り情報に対して合計値を計算している（ステップＳ６でＹｅｓ）。そこで、出力部３４は、生成部３１によって生成された割り振り情報のうちで、合計値が相対的に大きな順に所定数の割り振り情報を選択する（ステップＳ７）。出力部３４は、選択した割り振り情報の各々について、各レースの各選手に車番号を決定する（ステップＳ８）。車番号の割り当て方法は任意である。例えば、注目度の高い選手に特定の車番号が割り当てられても良く、また、ヨーロッパ方式が採用されても良い。車番号の決定が終わると、出力部３４は、選択した割り振り情報を番組の生成結果として出力する（ステップＳ９）。
【００５１】
図１０は、合計値の計算例を説明する図である。図１０を参照しながら、１つの割り振り情報に対して合計値を計算するために、図９のステップＳ４で行われる処理の例を説明する。
【００５２】
処理対象の割り振り情報には６つのレースが含まれているとする。図１０の例では、処理対象の割り振り情報に含まれている６つのレースのうち、第１レース、第２レース、第４レース、第５レースでは自力選手が３人である。第６レースでは自力選手が２人であり、第３レースでは自力選手が５人だとする。この場合、検出部２２は、処理対象の割り振り情報中の第１レース、第２レース、第４レース、第５レースの各々について、「自力選手数＝３」という生成ルールに対応付けられた設定値＝５を特定する。同様に、検出部２２は、第６レースについて「自力選手数＝２」という生成ルールに対応付けられている設定値＝２を特定する。さらに、検出部２２は、第３レースについて「自力選手数＝５」に対応付けられた設定値＝０を特定する。検出部２２は、処理対象の割り振り情報に含まれるレースが満たしているその他の生成ルールに関する設定値についても、同様に特定処理を行う。処理対象の割り振り情報に含まれる第４レースでは縁故選手同士が含まれるが、その他のレースには縁故選手同士が含まれていないとする。その場合、図１０に示すように、第４レースの縁故選手に関連したルールに対応付けて、設定値＝−１０が特定される。また、処理対象の割り振り情報中の第４レース以外のレースについては、縁故選手に関連したルールに対応付けて、設定値＝０が特定される。
【００５３】
計算部３５は、検出部２２によって特定された全ての設定値を割り振り情報ごとに合計することにより、合計値を求める。図１０の例では、第１レース、第２レース、第５レースについて特定された設定値の合計はいずれも５である。第３レースについて特定された設定値の合計は０であり、第４レースについて特定された設定値の合計は−５である。さらに、第６レースについて特定された設定値の合計は２である。処理対象の割り振り情報について特定された設定値の合計は、各レースでの設定値の合計の総和である。このため、処理対象の割り振り情報に対して得られる合計値は１２になる。
【００５４】
図１０を参照しながら説明した処理が、生成された割り振り情報の各々に対して行われる。このため、各割り振り情報に対して合計値が計算される。ここで、個々の設定値は、出力される番組情報が満たしていることが望ましい生成ルールに対しては正の値であり、出力される番組情報が満たしていることが望ましくない生成ルールに対しては負の値である。さらに、重要度の高い生成ルールほど大きな絶対値を有する設定値が設定され得る。このため、合計値が大きい割り振り情報ほど、番組の生成結果として使用しやすいように選手が各レースに割り振られていることになる。従って、生成装置１０は、合計値の高い割り振り情報から順に所定数を出力することにより、適切な番組の生成結果である可能性の高い割り振り情報をオペレータ等に提示することができる。
【００５５】
このように、第１の実施形態によると、番組中の各レースを生成ルールＤＢ４２中のルールに沿って自動生成することができる。このため、執務員は、自動生成された番組を確認し、適宜、修正するだけで番組の編成業務を行うことができ、番組編成業務が効率化される。また、執務員が人手で番組編成を行う際に考慮する条件が生成ルールＤＢ４２に登録されているので、自動生成された番組も、これまで経験豊かな執務員により生成された番組と同様に魅力のあるレースを含むことが期待される。さらに、執務員のノウハウが生成ルールＤＢ４２中に登録されるため、番組の生成を行うオペレータへのノウハウ継承も容易になる。
【００５６】
＜２日目以降のレースの生成＞
図１１は、２日目以降の番組の生成処理の例を説明するフローチャートである。生成部３１は、概定番組表を用いて、処理対象のレース種別のレース数（Ｘ）を特定する（ステップＳ２１）。次に、生成部３１は、勝ち上がり情報（図７のテーブルＴ１２）とレース結果（図６のテーブルＴ２）を用いて、処理対象のレースに出場する選手を特定する（ステップＳ２２）。なお、ステップＳ２２の処理は、出場選手の各々に対して、出場可能な翌日以降のレースの種類を判定する処理ともいえる。ステップＳ２３〜Ｓ２９の処理は、図９を参照しながら説明したステップＳ２〜Ｓ８の処理と同様である。
【００５７】
出力部３４は、選択した割り振り情報を、処理対象のレース種別についての番組の生成結果として出力する（ステップＳ３０）。ここで、図１１に示した処理は、レースの種類ごとの処理であるので、２日目以降に複数の種類のレースが行われる場合、各種類のレースについて図１１に示す処理が行われる。例えば、図７に示すように、２日目に、準決勝、選抜、一般の３種類のレースが行われるとする。また、各レースの数は、準決勝が３レース、選抜が２レース、一般が１レースである。この場合、生成部３１は、勝ち上がり情報とレース結果を用いて、準決勝に出場する選手を特定し、特定した選手を３レースに割り振ることで複数の割り振り情報を生成し、出力対象とする割り振り情報を選択する。さらに、選抜のレースや一般のレースについても同様に複数の割り振り情報を生成し、出力対象とする割り振り情報を選択する。従って、生成装置１０は、２日目以降に複数の種類のレースが行われる場合、個々のレース種別について生成された割り振り情報の組み合わせを、番組の生成情報として出力することができる。
【００５８】
このように、生成装置１０は、２日目以降の番組の自動生成処理も行うことができる。このため、生成装置１０を用いると、番組の編成に使用可能な時間が短い場合でも、効率的に番組を生成できる。
【００５９】
＜第２の実施形態＞
第２の実施形態では、生成ルールＤＢ４２に登録されているルールのうちでの優先度を生成対象の番組の種類や開催地などの条件に応じて調整するために重み付けを用いる場合について説明する。
【００６０】
図１２は、重み付け情報の例を説明する図である。図１２の例では、ルール名称で識別される各ルールに対して重み値が設定されている。ここで、ルール名称によって識別されるルールは、いずれも生成ルールＤＢ４２に登録されているか、生成ルールＤＢ４２に登録されているルールに関連付けられているものとする。設定値と同様に、重み値も数値が大きいほど優先度が高くなるように設定された数値である。図１２の例では、重みは、１０段階で設定されている。
【００６１】
ここで、重みはオペレータが番組生成のたびに設定してもよいが、図１２に示すように予め、各ルールに対する重みづけのパターンを生成装置１０に設定してもよい。図１２は、興行の行われる地域や観客の好む傾向などに合わせて、予め複数のパターンが登録されている場合の例である。図１２の例では、東北１、東北２、関東１、関東２、南関１、南関２、近畿１、近畿２の８つのパターンが登録されている。このようにパターンが登録されている場合、オペレータは、重みづけパターンを識別するパターン名（例えば、「関東１」など）を入力することにより、そのパターン名に対応付けられた重みづけの全てを指定することができる。
【００６２】
第２の実施形態では、計算部３５は、割り振り情報が満たしている生成ルールに対応付けられた点数として、設定値と重み値の積を用いる。以下、図１３と図１４を参照しながら、第２の実施形態での合計値の計算について説明する。
【００６３】
図１３は、図１２中の「南関２」の重み付けパターンが採用される場合についての合計値の計算例である。図１３において、処理対象の割り振り情報は図１０の計算に用いられた割り振り情報と同じであるとする。なお、図１２に記載されている重みづけパターンのうちのいずれを使用するかは、事前に設定されていても良く、また、オペレータが生成装置１０の入力装置１０３から重みづけパターンを入力しても良い。計算部３５は、重みづけパターンの入力などに応じて、使用する重み付けパターンを特定する。
【００６４】
計算部３５は、設定値に適用する重み値を、重み付けパターンを用いて特定する。「南関２」の重み付けパターンでは、「３分戦優先」に関する重み値が４であり、縁故選手に関する重み値が１０である。「３分戦優先」の場合、１つのレースに３つの異なるラインができることが望ましい。このため、自力選手数に関連する生成ルールに対して、「３分戦優先」に関する重み値が適用される。このため、図１３に示すように、各レースが満たす生成ルールのうち、自力選手数に関する生成ルールに対しては、重み値＝４が適用される。一方、縁故選手に関する重み値が１０であるので、各レースが満たす生成ルールのうち、縁故選手に関する生成ルールについては重み値＝１０が適用される。
【００６５】
各設定値に適用する重み値を特定すると、計算部３５は、処理対象の割り振り情報が満たしている生成ルールの各々について、設定値と重み値の積を求める。なお、処理対象の割り振り情報が満たしている生成ルールに対応付けられた設定値は、第１の実施形態と同様に、検出部２２によって特定される。計算部３５は、設定値と重み値の積を計算すると、各レースについて設定値と重み値の積の合計を求める。図１３の例では、第１レースについての設定値と重み値の積の合計は、５×４＋０×１０＝２０である。同様に、第２レース、第５レースについても、設定値と重み値の積の合計は２０である。第３レースについての設定値と重み値の積の合計は、０×４＋０×１０＝０である。第４レースについての設定値と重み値の積の合計は、５×４＋（−１０）×１０＝−８０である。第６レースについての設定値と重み値の積の合計は、２×４＋０×１０＝８である。処理対象の割り振り情報が満たしている生成ルールに対応付けられた点数は、各レースで得られた設定値と重み値の積の合計の総和であるので、２０×３＋０＋（−８０）＋８＝−１２となる。
【００６６】
図１４は、図１２中の「関東１」の重み付けパターンが採用される場合について合計値の計算例を説明する図である。図１４は、図１３と同じ割り振り情報に対して異なる重み付けパターンが用いられたときの例を示す。検出部２２による設定値の特定と計算部３５による重み値の特定が行われると、図１４に示すように、設定値と重み値に関する情報が得られる。そこで、図１３の場合と同様の計算処理により、計算部３５が計算を行うと、第１レース、第２レース、第５レースについて、設定値と重み値の積の合計として５０が得られる。第３レースでの設定値と重み値の積の合計は０であり、第４レースでの設定値と重み値の合計は−５０であり、第６レースでの設定値と重み値の積の合計は２０である。この結果、図１４の場合は、処理対象の割り振り情報が満たしている生成ルールに対応付けられた点数は１２０となる。
【００６７】
このように、第２の実施形態では、重み付けパターンによって各生成ルールの重要度が調整されているため、同じ割り振り情報を用いていても、生成対象として出力する割り振り情報を決定するための指標となる合計値が異なってくる。このため、第２の実施形態では、重み付けを用いることにより、地域の特性や番組の特性などに従って、生成ルール間の重要度の順序を調整することができる。
【００６８】
図１５は、第２の実施形態にかかる番組の生成処理の例を説明するフローチャートである。図１５のステップＳ４１〜Ｓ４３の処理は、図９を参照しながら説明したステップＳ１〜Ｓ３の処理と同様である。ステップＳ４４において、計算部３５は、ｙ番目の割り振り情報中の各レースが満たす生成ルールに対応付けられた点数の合計値を、重み付け情報を用いて計算する（ステップＳ４４）。ステップＳ４５〜Ｓ４９の処理は、図９を参照しながら説明したステップＳ５〜Ｓ９の処理と同様である。
【００６９】
図１６は、ｙ番目の割り振り情報に対する点数の合計値の計算方法の例を説明するフローチャートである。図１６は、図１５のステップＳ４４の詳細を示している。図１６において、合計値（ｙ）は、ｙ番目の割り振り情報中の各レースが満たす生成ルールに対応付けられた点数の合計値を計算するために使用される変数である。変数ｘは処理対象のレースを計数するために使用される。点数（ｘ）は、ｘ番目のレースが満たす生成ルールの設定値と重み値の積の合計を計算するために使用される変数である。変数ｔは処理対象とした生成ルールを計数するために使用される変数である。定数Ｘはｙ番目の割り振り情報に含まれるレースの総数である。定数Ｔは、番組情報の生成に使用される生成ルールの総数である。
【００７０】
計算部３５は、変数ｘを１に設定すると共に、合計値（ｙ）を０に初期化する（ステップＳ６１）。計算部３５は、変数ｔを１に設定すると共に、点数（ｘ）を０に初期化する（ステップＳ６２）。検出部２２は、ｙ番目の割り振り情報のうちのｘ番目のレースがｔ番目の生成ルールを満たすかを判定する（ステップＳ６３）。ｙ番目の割り振り情報のうちのｘ番目のレースがｔ番目の生成ルールを満たす場合、計算部３５は、ｔ番目の生成ルールの設定値とｔ番目の生成ルールに適用する重み値の積を、点数（ｘ）に加算する（ステップＳ６３でＹｅｓ、ステップＳ６４）。ステップＳ６３でＮｏと判定された場合と、ステップＳ６４の処理を行った場合、計算部３５は、変数ｔを１つインクリメントして、変数ｔを定数Ｔと比較する（ステップＳ６５、ステップＳ６６）。変数ｔが定数Ｔを超えていない場合、ｘ番目のレースについて処理対象としていない生成ルールが残っているので、検出部２２はステップＳ６３の処理を行う（ステップＳ６６でＮｏ）。
【００７１】
変数ｔが定数Ｔを超えた場合、ｘ番目のレースについて全ての生成ルールが処理対象となっているので、ｘ番目のレースで得られる点数は現在の点数（ｘ）の値である（ステップＳ６６でＹｅｓ）。そこで、計算部３５は、点数（ｘ）の値を合計値（ｙ）に加算し、変数ｘを１つインクリメントする（ステップＳ６７）。計算部３５は、変数ｘと定数Ｘを比較する（ステップＳ６８）。変数ｘが定数Ｘを超えていない場合、ｙ番目の割り振り情報について処理対象としていないレースが残っているので、計算部３５は、ステップＳ６２に戻る（ステップＳ６８でＮｏ）。
【００７２】
変数ｘが定数Ｘを超えた場合、ｙ番目の割り振り情報については全てのレースについての点数が計算され、各レースでの点数の総和が現在の合計値（ｙ）の値となっている（ステップＳ６８でＹｅｓ）。このため、計算部３５は、合計値（ｙ）をｙ番目の割り振り情報に対する合計値とする（ステップＳ６９）。ステップＳ６９の処理後、図１５に示すステップＳ４５以降の処理が行われる。
【００７３】
図１３〜図１６を参照しながら説明したように、生成ルールＤＢ４２中の生成ルールに対して重みづけをすることにより、生成ルールの優先度を重み値によって調整することができる。このため、第２の実施形態では、興行が行われる地域の特質などにあった番組を生成しやすくなる。さらに、重みづけをパターン化して図１２に示すような形式で記憶部４０に記憶させておくことで、オペレータの処理負担を軽減することもできる。
【００７４】
なお、図１２では、重みづけパターンとして８パターンが登録されている場合を例として説明したが、登録される重みづけパターンの数は任意である。さらに、重みづけパターンが登録されるタイミングも任意である。例えば、一部の重みづけパターンについては生成装置１０の出荷時に記憶部４０に記憶されていても良い。さらに、オペレータは、適宜、使用する重みづけのパターンを記憶部４０に登録しても良く、出荷時に登録されているパターンを変更しても良い。このように、オペレータは、重みづけのパターンの新規登録や変更を行うことにより、番組を生成する際の利便性をさらに向上することもできる。
【００７５】
＜第３の実施形態＞
生成された番組中には、投票券の購入金額が高くなるようなレースが含まれていることが望ましい。そこで、第３の実施形態では、ユーザの投票券の購入を促進しそうなレースを番組に含めやすくするための処理を行う場合について説明する。第３の実施形態で使用される生成装置１０は、通知情報処理部３２と判定部３３を備える。
【００７６】
判定部３３は、投票券の購入を促進する要因を予め記憶できる。投票券の購入を促進する要因は、投票券の売上高が比較的高かったレースにおいて、投票券の購入金額を増大させた要因である。投票券の購入を促進する要因は、過去のレースでの参加選手や過去のレースでの投票券の売上高などの情報を分析することで得られる。例えば、同期の選手同士が同じレースに参加していることや、賭けの際に使用されるオッズ比が所定の範囲内に含まれている選手の参加数が所定数以上であることなどが、投票券の購入を促進する要因として記憶され得る。
【００７７】
図１７は、第３の実施形態にかかる番組の生成処理の例を説明するフローチャートである。図１７の処理は、図９や図１５を参照しながら説明したように番組の生成結果として出力される対象の割り振り情報が決定された後に行われる処理である。図１７の例では、定数Ｐと変数ｐを用いる。定数Ｐは、番組の生成結果として出力される割り振り情報の総数である。変数ｐは処理対象とした割り振り情報の数の計数に使用される。閾値Ｔｈ３は、１つの番組に含めようとする投票券購入を促進するレースの数であり、実装に応じて設定され得る。
【００７８】
判定部３３は、番組の生成結果として出力する割り振り情報の数（Ｐ）を特定する（ステップＳ８１）。判定部３３は、変数ｐを１に設定する（ステップＳ８２）。判定部３３は、ｐ番目の割り振り情報に含まれている各レースについて、投票券の購入を促進する要因のいずれかが含まれているかを判定する。次に、判定部３３は、ｐ番目の割り振り情報に含まれるレース中で投票券購入を促進するレースの数（ｙ）を特定する（ステップＳ８３）。ここで、投票券購入を促進するレースは、投票券の購入を促進する要因のいずれかが含まれているレースである。判定部３３は、ｐ番目の割り振り情報に含まれるレース中で投票券購入を促進するレースの数（ｙ）が閾値Ｔｈ３以上であるかを判定する（ステップＳ８４）。投票券購入を促進するレースの数（ｙ）が閾値Ｔｈ３以上である場合、出力部３４は、ｐ番目の割り振り情報を生成結果として出力する（ステップＳ８４でＹｅｓ、ステップＳ８５）。
【００７９】
投票券購入を促進するレースの数（ｙ）が閾値Ｔｈ３未満である場合、通知情報処理部３２は、ｐ番目の割り振り情報に含まれるレースのうちで、投票券購入を促進しないレースを特定する情報を通知するための通知情報を生成する（ステップＳ８４でＮｏ）。ここで、投票券購入を促進しないレースは、投票券の購入を促進する要因を含まないレースである。出力部３４は、ｐ番目の割り振り情報と共に、ｐ番目の割り振り情報のうちで投票券購入を促進しないレースの情報を出力する（ステップＳ８６）。
【００８０】
ステップＳ８５かＳ８６の処理の後、計算部３５は、変数ｐを１つインクリメントし、変数ｐを定数Ｐと比較する（ステップＳ８７、Ｓ８８）。変数ｐが定数Ｐを超えていない場合、判定処理の対象としていない割り振り情報があるので、判定部３３はステップＳ８３に戻る（ステップＳ８８でＮｏ）。一方、変数ｐが定数Ｐを超えた場合、全ての割り振り情報についての処理が終わっているので、判定部３３は処理を終了する（ステップＳ８８でＹｅｓ）。
【００８１】
なお、判定部３３は、生成ルールＤＢ４２に含まれている情報から投票券の売上高が比較的高かったレースに含まれる条件を学習するための学習データを生成して、生成した学習データを機械学習しても良い。判定部３３は、機械学習によって生成したパラメータに基づいて、割り振り情報に含まれているレースの各々について、投票券の購入を促進するレースであるかを判定できる。
【００８２】
このように、第３の実施形態によると、番組中の各レースについて、投票券の購入を促進するレースであるかを判定することができる。さらに、自動生成される番組に含まれているレースのうち、所定の閾値Ｔｈ３以上の数のレースが投票券購入を促進できる可能性が高いものではない場合、生成装置１０は、オペレータに投票券購入を促進しない可能性が高いレースの情報を通知できる。このため、オペレータは、生成されたレースのうちで投票券購入を促進しない可能性が高いと判定されたレースを、そのレースの魅力を向上するために、適宜修正することができる。このため、オペレータは、第３に実施形態にかかる生成装置１０を用いると、投票券の購入を促進しやすい番組を効率的に生成することができる。
【００８３】
＜第４の実施形態＞
第１〜第３の実施形態では、生成可能な割り振り情報の全てについての処理を行っているため、最適な番組を生成しやすいが、生成装置１０の処理負荷が高くなる。第４の実施形態では、１つの割り振り情報を生成し、生成した割り振り情報を生成ルールに合わせて修正するアプローチをとる場合について説明する。なお、１つの割り振り情報を生成し、生成した割り振り情報を生成ルールに合わせて修正する場合、生成装置１０は計算部３５を備えていなくても良い。
【００８４】
図１８は、エラーの修正を伴う番組の生成方法の例を説明する図である。以下の例では、生成装置１０は、選手情報１と過去レース情報３を用いて、レース間で選手の実力の差が大きくならないように第１の割り振り情報（Ａ）を生成するものとする。ここで、第１の割り振り情報は、生成ルールに含まれるルールの１つ以上を満たしていなくても良い。生成装置は、第１の割り振り情報を生成した後で、第１の割り振り情報のうちで生成ルールに反している割り振りが行われている箇所をエラー６として検出する。
【００８５】
その後、生成装置は、検出したエラー６を修正するための処理を行う。例えば、第１の割り振り情報中の第１のレースにエラー６となる割り振りが含まれているとする。この場合、生成装置は、第１の割り振り情報中の第２のレース中の選手と第１のレース中の選手を交換することにより、第２の割り振り情報（Ｂ）を生成できる。生成装置は、第２の割り振り情報にエラーが含まれているかを、学習済みモデルを用いて判定することができる。第２の割り振り情報にエラーが含まれていない場合、生成装置は、第２の割り振り情報を、番組の生成結果として出力する。
【００８６】
このように変形すると、番組中の各レースを生成ルール２に沿って自動生成することができる上、生成する割り振り情報の数が少なくできるので、生成装置１０の処理負荷を第１〜第３の実施形態に比べて低くすることができる。
【００８７】
図１９は、第４の実施形態で使用される学習データの例を説明する図である。第４の実施形態では、第１の割り振り情報のうちで生成ルールに反している箇所を検出するので、学習データは、割り振り情報に発生しうる状態とその状態を有する割り振り情報に対する判定結果が対応付けられている。図１９は、レース中の自力選手の数に関するエラーが発生しているかを判定するための学習に使用され得る学習データの一部である。図１９に示す学習データを用いて、学習部２１は、レース中の自力選手の数が２〜４の場合は、自力選手数に関するエラーが発生していない（ＯＫ）と判定するように学習する。一方、学習部２１は、レース中の自力選手の数が１または５の場合は、自力選手数に関するエラーが発生している（ＮＧ）と判定するように学習する。自力選手数以外のルールについても、同様に、学習データが生成され、学習部２１での学習処理の対象とされる。学習部２１は、学習データを用いた機械学習の結果として、学習済みモデルを生成する。第４の実施形態において生成される学習済みモデルは、割り振り情報に含まれているエラーを検出する際に検出部２２が使用するパラメータである。
【００８８】
図２０は、第１の割り振り情報の生成例を説明する図である。図２０中の数字は、得点の順位である。生成部３１は、概定番組表ＤＢ４４や選手情報ＤＢ４１を用いて生成対象のレース数や各種類のレースに出場可能な選手等の情報を取得する。例えば、１つの初特選レースと６つの予選が生成対象であるとする。すると、生成部３１は、レースに参加する選手のうちで、得点の順位が１位〜７位の選手が初特選レースに参加可能であるというルールに基づいて、得点の順位が１位〜７位の選手を初特選レースの参加者とする。このため、生成部３１は、今回の選手情報ＤＢ４１中に含まれている出場選手のうち、得点の順位が８位〜４９位の選手を予選に出場する選手として認識する。
【００８９】
生成部３１は、生成対象の６つの予選の各レースに対して、参加者の順位をレース数（６）で割ったときに得られる剰余の値が同じ選手を割り振ることにより、レース間で参加者の実力差が大きくならないように第１の割り振り情報を生成する。図２０の例では、生成部３１は、順位をレース数で割ったときの剰余が２の選手は第１レースに割り振られている。同様に、順位をレース数で割ったときの剰余が３の選手は第２レース、順位をレース数で割ったときの剰余が４の選手は第３レース、順位をレース数で割ったときの剰余が５の選手は第４レースに割り振られている。さらに、順位をレース数で割ったときの剰余が０の選手は第５レースに割り振られ、順位をレース数で割ったときの剰余が１の選手は第６レースに割り振られている。
【００９０】
なお、生成部３１は、選手情報ＤＢ４１を参照することにより、各レースに割り振った順位を、その順位の選手の氏名や番号など、選手を一意に特定できる内容に変換したものを第１の割り振り情報として出力しても良い。例えば、図４に示す選手情報ＤＢ４１を用いて順位が選手名に変換される場合、初特選の順位＝３の選手の情報は、選手名＝ＣＣＣに置き換えられ得る。同様に、第５レース中の順位＝３６の選手の情報は、選手名＝ＡＡＡ、第４レース中の順位＝３５の選手の情報は、選手名＝ＢＢＢに置き換えられる。なお、順位は選手名の代わりに各選手に割り振られた番号に変換されても良い。
【００９１】
図２１は、第４の実施形態にかかる番組の生成処理の例を説明するフローチャートである。なお、図２１は生成処理の例の一例であり、例えば、ステップＳ１０１とＳ１０２の順序が変更されるなどの変更が実装に応じて行われ得る。
【００９２】
生成部３１は、概定番組表を用いて、設定するレース数（Ｘ）を特定する（ステップＳ１０１）。次に、生成部３１は、各選手の得点（競争得点）を用いて、各選手の順位を設定する（ステップＳ１０２）。なお、各選手の順位は、図４を参照しながら説明したように、予め選手情報ＤＢ４１に含まれていても良い。この場合、ステップＳ１０２の処理は省略され得る。その後、生成部３１は、順位を用いてＸ個のレースを含む割り振り情報を生成する（ステップＳ１０３）。ステップＳ１０３では、図２０を参照しながら説明したように第１の割り振り情報が生成される。
【００９３】
検出部２２は、割り振り情報中で番組の生成に使用する生成ルールに反している箇所をエラーとして検出するために、学習済みモデルを読み込む。なお、第４の実施形態においても、学習済みモデルとして使用されるパラメータが検出部２２に設定されるタイミングは、実装に応じて任意に変更され得る。検出部２２は、学習済みモデルを用いて、割り振り情報にエラーが含まれているかを判定する（ステップＳ１０４）。ステップＳ１０４において、検出部２２は、適宜、選手情報ＤＢ４１を参照して各レースに割り振られた選手に関する情報を特定できる。割り振り情報にエラーが含まれている場合、生成部３１は、割り振り情報中のエラー箇所を修正して、新たな割り振り情報を生成する（ステップＳ１０４でＹｅｓ、ステップＳ１０５）。エラー箇所の修正処理の例は図２２〜図２３Ｂを参照しながら後述する。生成部３１でのエラー箇所の修正が終わると、再度、ステップＳ１０４の判定処理が行われる。
【００９４】
一方、割り振り情報にエラーが含まれていない場合、出力部３４は、各レースに含まれる各選手に車番号を割り当て、得られた情報を番組の生成結果として出力する（ステップＳ１０６、Ｓ１０７）。
【００９５】
図２２は、エラーの発生例を説明する図である。以下、図２１を参照しながら説明した処理によって生成された第１の割り振り情報に対して、検出部２２が図２２に示すエラーを検出した場合を例として、生成部３１が行う修正処理の例を説明する。図２２の例では、第１レースでは、地域ごとのラインが不成立であるというエラーが指摘されている。この場合、第１レースに割り当てられた選手の出身地域が互いに異なっている。第３レースに対しては、縁故選手同士が含まれているというエラーが検出されている。さらに、第６レースに対して、自力選手数が不適切であるというエラーが検出されている。
【００９６】
図２３Ａおよび図２３Ｂは、エラー発生箇所の修正処理の例を説明するフローチャートである。図２３Ａおよび図２３Ｂでは、定数Ｎ、ｍと変数ｎを使用する。定数Ｎは修正するレース数を示し、定数ｍは処理対象のレース中に含まれる自力選手の数を示す。変数ｎは修正処理を行ったレースの数を計数するために使用される。閾値Ｔｈ１は、１レースに含まれる自力選手数として適切であると判定される値の最小値である。閾値Ｔｈ２は、１レースに含まれる自力選手数として適切であると判定される値の最大値である。閾値Ｔｈ１、Ｔｈ２は、実装に応じて設定され得る。
【００９７】
生成部３１は、検出部２２でのエラーの検出が終わると、修正するレース数（Ｎ）を特定する（ステップＳ１１１）。例えば、図２２に示すようなエラーが発生している場合、第１レース、第３レース、および、第６レースの３つが修正の対象となるため、Ｎ＝３となる。次に、生成部３１は、変数ｎを１に設定する（ステップＳ１１２）。生成部３１は、修正処理の対象となっているレース中でｎ番目のレースの自力選手数（ｍ）を特定する（ステップＳ１１３）。このとき、生成部３１は、適宜、生成ルールＤＢ４２を参照することにより自力選手の定義を取得した上で、各レース中に含まれる選手が自力選手であるかを判定しても良い。生成部３１は、ｎ番目のレースの自力選手数ｍが閾値Ｔｈ１以上かつ閾値Ｔｈ２以下であるかを判定する（ステップＳ１１４）。ｎ番目のレースの自力選手数ｍが閾値Ｔｈ１以上かつ閾値Ｔｈ２以下である場合、ｎ番目のレースには自力選手数に関するエラーが発生していないので、ステップＳ１２４以降の処理が行われる（ステップＳ１１４でＹｅｓ）。
【００９８】
一方、ｎ番目のレースの自力選手数ｍが閾値Ｔｈ１から閾値Ｔｈ２の間にない場合、ｎ番目のレースには自力選手数に関するエラーが発生している（ステップＳ１１４でＮｏ）。生成部３１は、ｎ番目のレースの自力選手数ｍが閾値Ｔｈ２を超えているかを判定する（ステップＳ１１５）。ｎ番目のレースの自力選手数ｍが閾値Ｔｈ２を超えている場合、生成部３１は、自力選手数が閾値Ｔｈ１以下のレースがあるかを判定する（ステップＳ１１５でＹｅｓ、ステップＳ１１６）。自力選手数が閾値Ｔｈ１以下のレースがある場合、生成部３１は、自力選手数が閾値Ｔｈ１以下のレース中の自力選手ではない選手と、ｎ番目のレースの自力選手を交換する（ステップＳ１１６でＹｅｓ、ステップＳ１１７）。自力選手数が閾値Ｔｈ１以下のレースがない場合、生成部３１は、自力選手数に関するエラーが出ていないレースを特定する（ステップＳ１１６でＮｏ）。生成部３１は、自力選手数に関するエラーが出ていないレースのうちで相対的に自力選手数が少ないレース中の自力選手ではない選手と、ｎ番目のレースの自力選手を交換する（ステップＳ１１８）。
【００９９】
ステップＳ１１５においてｎ番目のレースの自力選手数ｍが閾値Ｔｈ２を超えていないと判定した場合、ｎ番目のレースの自力選手数は閾値Ｔｈ１未満である（ステップＳ１１５でＮｏ）。そこで、生成部３１は、自力選手数が閾値Ｔｈ２以上のレースがあるかを判定する（ステップＳ１１９）。自力選手数が閾値Ｔｈ２以上のレースがある場合、生成部３１は、自力選手数が閾値Ｔｈ２以上のレース中の自力選手と、ｎ番目のレースの自力選手ではない選手を交換する（ステップＳ１１９でＹｅｓ、ステップＳ１２０）。自力選手数が閾値Ｔｈ２以上のレースがない場合、生成部３１は、自力選手数に関するエラーが出ていないレースを特定する（ステップＳ１１９でＮｏ）。生成部３１は、自力選手数に関するエラーが出ていないレースのうちで相対的に自力選手数が多いレース中の自力選手と、ｎ番目のレースの自力選手ではない選手を交換する（ステップＳ１２１）。
【０１００】
ステップＳ１１７、Ｓ１１８、Ｓ１２０、Ｓ１２１のいずれかの処理の後、生成部３１は変数ｎを１つインクリメントする（ステップＳ１２２）。生成部３１は、変数ｎが定数Ｎを超えているかを判定する（ステップＳ１２３）。変数ｎが定数Ｎを超えている場合、修正対象となっている全てのレースについてエラーを修正する処理を行ったので、生成部３１は処理を終了する（ステップＳ１２３でＹｅｓ）。一方、変数ｎが定数Ｎを超えていない場合、修正対象となっているレースのうちでエラーを修正していないレースがあるので、生成部３１はステップＳ１１４に戻る（ステップＳ１２３でＮｏ）。
【０１０１】
ステップＳ１１４において、ｎ番目のレースには自力選手数に関するエラーが発生していないと判定した場合、生成部３１はｎ番目のレースに縁故選手同士となる選手がいるかを判定する（ステップＳ１１４でＹｅｓ、ステップＳ１２４）。ｎ番目のレースに縁故選手同士となる選手がいる場合、生成部３１は、ｎ番目のレースで縁故選手としてのエラーが出た選手から、レースを変更する選手を選択する（ステップＳ１２４でＹｅｓ、ステップＳ１２５）。生成部３１は、選択した選手を、ｎ番目のレースとは別のレースに割り振られており、選択した選手と同じ地域に属する選手と交換する（ステップＳ１２６）。その後、生成部３１は変数ｎを１つインクリメントし、変数ｎが定数Ｎを超えているかを判定する（ステップＳ１３１、Ｓ１３２）。変数ｎが定数Ｎを超えている場合、生成部３１は処理を終了する（ステップＳ１３２でＹｅｓ）。一方、変数ｎが定数Ｎを超えていない場合、生成部３１はステップＳ１１４に戻る（ステップＳ１３２でＮｏ）。
【０１０２】
ステップＳ１２４において、ｎ番目のレースに縁故選手同士となる選手がいないと判定した場合、生成部３１は、ｎ番目のレースで地域ごとのラインができるかを判定する（ステップＳ１２４でＮｏ、ステップＳ１２７）。ｎ番目のレースで地域ごとのラインができると判定した場合、生成部３１は、ステップＳ１３１以降の処理を行う（ステップＳ１２７でＹｅｓ）。
【０１０３】
一方、ｎ番目のレースで地域ごとのラインが生成されない場合、生成部３１は、ｎ番目のレース中の自力選手ではない選手のうち、同じ地域の選手のいない選手を選択する（ステップＳ１２８）。生成部３１は、選択した選手と同じ地域の自力選手のいるレース（レースＡ）を選択する（ステップＳ１２９）。生成部３１は、レースＡの自力選手ではない選手と選択した選手を交換する（ステップＳ１３０）。ステップＳ１３０の処理の後、生成部３１はステップＳ１３１以降の処理を行う。
【０１０４】
なお、図２３Ａおよび図２３Ｂは、図２２に示すエラーの発生例のように、レース中の自力選手の数、縁故選手、ラインの不成立に関するエラーが発生している場合に行われる修正処理の例である。発生しているエラーの種類に応じて、異なる処理によって割り振り情報の修正が行われ得る。また、図２３Ａおよび図２３Ｂは、処理の一例であり、処理の順序等は実装に応じて変更され得る。例えば、ステップＳ１１４の判定処理の前にステップＳ１２４〜Ｓ１２６の処理が行われても良く、また、ステップＳ１１４の判定処理の前にステップＳ１２７〜Ｓ１３０の処理が行われても良い。
【０１０５】
このように、第４の実施形態によると、生成する割り振り情報の数を限定しつつも、生成ルールを満たすような番組を自動生成することができる。このため、第１〜第３の実施形態と同様に番組編成を短時間で効率的に行いつつ、生成装置１０の負荷を第１〜第３の実施形態より低く抑えることができる。
【０１０６】
なお、第４の実施形態においても、２日目以降に複数の種類のレースが行われる場合、レースの種類ごとに図２１で示す処理が行われ得る。なお、各レースに出場可能な選手を選択する処理は、第１の実施形態で図１１のステップＳ２２などを参照しながら説明した処理と同様である。その後、例えば、生成装置１０は、図２１のステップＳ１０１〜Ｓ１０３の処理で、第１の種類のレースに出場可能な選手を第１の種類のレース数に割り振った第３の割り振り情報を生成する。その後、第３の割り振り情報が生成ルールに反している場合、生成部３１は、図２２〜図２３Ａを参照しながら説明した処理と同様の処理により、第１の種類のレース間で割り振られた選手を交換する。生成部３１は、第２の種類のレースについても、第１の種類のレースについての処理と同様の処理を行う。このため、レースの種類ごとにエラーを含まない割り振り情報が自動生成され、自動生成された割り振り情報をあわせることにより、番組が自動生成される。従って、第４の実施形態に従っても、２日目以降の番組の自動生成処理も行うことができる。
【０１０７】
＜第５の実施形態＞
第５の実施形態では、図１２に示すような重み情報を、生成ルールＤＢ４２に登録されているルールのうちでの重要度として扱うことにより、重みの高いルールほど優先されるように番組を生成する場合について説明する。
【０１０８】
第５の実施形態では、生成部３１は、割り振り情報の修正の際などに、重みに設定された値が大きなルールほど優先する。例えば、縁故選手同士を同じレースに出場させない（ルール名称：縁故選手）というルールは、図１２において重み１０に設定されている。このため、いずれのレースも縁故選手同士となる複数の選手を含まないように生成される。
【０１０９】
第５の実施形態では、学習部２１は、指定された重みの値が所定以上の条件についての判定処理を行うように、重みの値が所定以上のルールに関する学習を行ってもよい。この場合、オペレータから指定される重みづけのパターンに応じた学習済みモデルが生成され得る。例えば、学習部２１が学習処理の際に重みが８以上のルールを用いるように設定されているとする。この場合、学習部２１は、重みづけパターン＝東北１を用いる場合の番組の生成のために、縁故選手、都道府県、登録期、脚力／脚質、競争得点順、地元選手優先、決まり手優先、３分戦優先、柱優先、新人優先、売上右肩上がり優先などのルールを学習する。一方、重みづけパターン＝近畿２を用いる場合の番組の生成のために、学習部２１は、縁故選手、脚力／脚質、先行選手優先、地元選手優先、売上右肩上がり優先などのルールを学習する。従って、重みづけパターンに応じて、生成された割り振り情報に対してエラーを検出するために使用される学習済みモデルも変更され得る。なお、学習部２１は、生成した学習済みモデルを、その学習済みモデルの生成に使用した重みづけのパターンを特定する情報と共に記憶部４０に格納できる。
【０１１０】
図２４は、第５の実施形態にかかる番組の生成処理の例を説明するフローチャートである。なお、図２４は、重みづけパターンに応じて学習済みモデルが生成される場合に行われる生成処理の例を示しているが、重みづけパターンが異なってもエラーの検出に使用される学習済みモデルは同じであってもよい。重みづけパターンが異なってもエラーの検出に使用される学習済みモデルが同じ場合には、ステップＳ１５２の処理は省略される。
【０１１１】
検出部２２は、重みづけパターンの入力を検出するまで待機する（ステップＳ１５１でＮｏ）。オペレータが生成装置１０の入力装置１０３から重みづけパターンを入力すると、検出部２２は、重みづけパターンの入力を検出し、入力されたパターンに応じた学習済みモデルを特定する（ステップＳ１５１でＹｅｓ、ステップＳ１５２）。
【０１１２】
生成部３１は、割り振り情報を生成する（ステップＳ１５３）。ステップＳ１５３の処理は、図２１のステップＳ１０１〜Ｓ１０３を参照しながら説明した処理と同様である。検出部２２は、特定した学習済みモデルを用いて、割り振り情報を評価する（ステップＳ１５４）。ステップＳ１５４での評価の際、検出部２２は、適宜、選手情報ＤＢ４１を参照して各レースに割り振られた選手に関する情報を特定できる。割り振り情報にエラーが含まれている場合、生成部３１は、割り振り情報中のエラー箇所を修正して、新たな割り振り情報を生成する（ステップＳ１５５でＹｅｓ、ステップＳ１５６）。エラー箇所の修正処理の例は図２５を参照しながら後述する。エラー箇所の修正が終わると、生成部３１は、ステップＳ１５５に戻る。
【０１１３】
割り振り情報にエラーが含まれていない場合に行われるステップＳ１５７、Ｓ１５８の処理は、図２１を参照しながら説明したステップＳ１０６、Ｓ１０７と同様である。
【０１１４】
なお、図２４は処理の一例であり、実装に応じて処理の手順は変更され得る。例えば、ステップＳ１５３の処理がステップＳ１５１、Ｓ１５２よりも前に行われてもよい。
【０１１５】
図２５は、エラー発生箇所の修正処理の例を説明するフローチャートである。図２５では、定数Ｎ、Ｚと、変数ｎ、ｚが使用される。定数Ｎはエラーが検出されたレースの数を表す。定数Ｚは処理対象のレースが満たしていないルールの数である。変数ｎはエラーを修正したレース数の計数に用いられ、変数ｚは修正処理に使用したルール数の計数に用いられる。
【０１１６】
生成部３１は、検出部２２でのエラーの検出が終わると、修正するレース数（Ｎ）を特定し、変数ｎを１に設定する（ステップＳ１６１、Ｓ１６２）。生成部３１は、ｎ番目のレースが満たしていないルールの数（Ｚ）を特定し、変数ｚを１に設定する（ステップＳ１６３、Ｓ１６４）。生成部３１は、ｎ番目のレースが満たしていない生成ルールのうち、ｚ番目に重みの軽いルールを選択する（ステップＳ１６５）。生成部３１は、選択したルールに沿って割り振り情報を修正する（ステップＳ１６６）。生成部３１は、変数ｚを１つインクリメントし、変数ｚが定数Ｚを超えたかを判定する（ステップＳ１６７、Ｓ１６８）。変数ｚが定数Ｚ以下の場合、全てのルールに対する修正が終わっていない（ステップＳ１６８でＮｏ）。そこで、ステップＳ１６５以降の処理が繰り返される。
【０１１７】
一方、変数ｚが定数Ｚを超えた場合、ｎ番目のレースに含まれている全てのエラーに対する修正処理が終わっている（ステップＳ１６８でＹｅｓ）。そこで、生成部３１は、変数ｎを１つインクリメントし、変数ｎが定数Ｎを超えたかを判定する（ステップＳ１６９、Ｓ１７０）。変数ｎが定数Ｎを超えている場合、修正対象となっている全てのレースについてエラーを修正する処理を行ったので、生成部３１は処理を終了する（ステップＳ１７０でＹｅｓ）。一方、変数ｎが定数Ｎを超えていない場合、修正対象となっているレースのうちでエラーを修正していないレースがあるので、生成部３１は、ステップＳ１６３に戻る（ステップＳ１７０でＮｏ）。
【０１１８】
なお、図２５では、各レースについて、重みの低いルールに沿った修正から行っている。これは、重みの高いルールに沿った修正処理をした後に、重みの低いルールに沿った修正処理を行うことで、重みの高いルールに反するような修正が行われることを防ぐためである。
【０１１９】
第５の実施形態で説明したように、生成ルールＤＢ４２中の生成ルールに対して重みづけをすることにより、興行が行われる地域の特質などにあった番組を生成しやすくなる。また、生成装置１０が生成する割り振り情報の数は第４の実施形態と同様に１つであるので、第２の実施形態よりも生成装置１０の処理負荷を低く抑えることができる。なお、第５の実施形態においても、重みづけをパターン化して図１２に示すような形式で記憶部４０に記憶させておくことで、オペレータの処理負担を軽減することもできる。
【０１２０】
＜第６の実施形態＞
第６の実施形態では、ルールの全てに沿うような修正が困難な場合に生成装置１０が未解決のエラーを通知する例を説明する。第６の実施形態では、生成ルールに対応付けられた重み値の大きさを優先度の指標として使用する。
【０１２１】
図２６Ａおよび図２６Ｂは、第６の実施形態にかかる番組の生成処理の例を説明するフローチャートである。図２６Ａおよび図２６Ｂでは、変数ｊ、閾値Ｔｈ４〜Ｔｈ６を使用する。変数ｊは修正処理の回数を計数するための変数である。閾値Ｔｈ４は、エラーとなっている項目の優先度が比較的低い場合に、番組の生成結果を出力するまでに行う修正回数の最大値である。閾値Ｔｈ５は、エラーとなっている項目の優先度が相対的に低いかを判定するために使用される値である。ある項目について指定された重みが閾値Ｔｈ５以上の場合、その項目は相対的に優先度が高いと判定されるものとする。換言すると、図２６Ａおよび図２６Ｂの例では、ある項目について指定された重みが閾値Ｔｈ５未満の場合、その項目は相対的に優先度が低いと判定される。閾値Ｔｈ６は、エラーとなっている項目の優先度が比較的高い場合に、番組の生成結果を出力するまでに行う修正回数の最大値である。閾値Ｔｈ６は、閾値Ｔｈ４よりも大きな値に設定されるものとする。なお、閾値Ｔｈ４〜Ｔｈ６の値は、実装に応じた任意の値に設定され得る。
【０１２２】
検出部２２は、重みづけのパターンの入力を検出するまで待機する（ステップＳ１８１でＮｏ）。検出部２２が重みづけのパターンの入力を検出すると、生成部３１は割り振り情報を生成する（ステップＳ１８２）。割り振り情報の生成の際に行われる処理は、第４および第５の実施形態と同様である。割り振り情報が生成されると、検出部２２は、学習済みモデルを用いて割り振り情報を評価する（ステップＳ１８３）。第４の実施形態などで説明したように、エラーの検出に使用する学習済みモデルが１種類の場合、ステップＳ１８１で入力された重みづけパターンにかかわらず、ステップＳ１８３では同じ学習済みモデルを用いた評価が行われる。一方、第５の実施形態で説明したように、重みづけパターンに応じた学習済みモデルが生成される場合、ステップＳ１８３で使用される学習済みモデルは入力された重みづけパターンに応じて選択され得る。
【０１２３】
生成部３１は、変数ｊを０に設定する（ステップＳ１８４）。割り振り情報にエラーが含まれていない場合、ステップＳ１９３、Ｓ１９４の処理が行われる。ステップＳ１９３、Ｓ１９４の処理は、図２１を参照しながら説明したステップＳ１０６、Ｓ１０７と同様である。
【０１２４】
一方、割り振り情報にエラーが含まれている場合、生成部３１は変数ｊの値を閾値Ｔｈ４と比較する（ステップＳ１８６）。変数ｊの値が閾値Ｔｈ４を超えていない場合、生成部３１は、エラー発生個所を修正して、新たな割り当て情報を生成する（ステップＳ１８６でＮｏ、ステップＳ１９１）。ステップＳ１９１での処理は、図２３Ａ、図２３Ｂ、図２５などを参照しながら説明した処理と同様である。その後、生成部３１は、変数ｊを１つインクリメントして、ステップＳ１８５に戻る（ステップＳ１９２）。
【０１２５】
変数ｊの値が閾値Ｔｈ４を超えている場合、生成部３１は、エラーとなっている項目の重みが閾値Ｔｈ５以上であるかを判定する（ステップＳ１８６でＹｅｓ、ステップＳ１８７）。エラーとなっている項目の重みが閾値Ｔｈ５以上である場合、閾値Ｔｈ４を超えてもエラーの修正を行う場合があるので、生成部３１は、変数ｊの値を閾値Ｔｈ６と比較する（ステップＳ１８７でＹｅｓ、ステップＳ１８８）。変数ｊの値が閾値Ｔｈ６を超えていない場合、生成部３１は、ステップＳ１９１以降の処理を行う（ステップＳ１８８でＮｏ、ステップＳ１９１）。このため、変数ｊの値が閾値Ｔｈ４を超えても、変数ｊの値が閾値Ｔｈ６以下であり、かつ、エラーとなっている項目の重みが閾値Ｔｈ５以上である場合には、エラーの修正が行われる。
【０１２６】
一方、変数ｊの値が閾値Ｔｈ６を超えている場合、生成部３１は、これ以上修正を繰り返してもエラーを回避することは困難であると判定する（ステップＳ１８８でＹｅｓ）。このため、生成部３１は、エラーを含んでいるレースがあっても、生成した各レースに割り当てた各選手に車番号を割り当てる（ステップＳ１８９）。一方、通知情報処理部３２は、未解決のエラーを通知するメッセージを生成する。出力部３４は、通知情報処理部３２で生成された未解決のエラーに関するメッセージと共に、割り振り情報を番組の生成結果として出力する（ステップＳ１９０）。
【０１２７】
ステップＳ１８７において、エラーが発生している項目の重みが閾値Ｔｈ５未満であると判定された場合も、生成部３１は更なる修正処理を行わないので、ステップＳ１８９、Ｓ１９０の処理が行われる（ステップＳ１８７でＮｏ）。
【０１２８】
なお、図２６Ａ、２６Ｂに示す処理は一例であり、実装に応じて処理の順序が変更され得る。例えば、ステップＳ１８４の処理はステップＳ１８５の処理より前の任意のタイミングに変更され得る。
【０１２９】
第６の実施形態においても、生成ルールＤＢ４２中の生成ルールに対して重みづけをすることにより、興行が行われる地域の特質などにあった番組を生成しやすくなる。さらに、エラーをすべて解消することが困難な場合に、優先度の高いルールに関するエラーを優先的に解決した上で、生成した割り振り情報を番組情報の生成結果とすることにより、生成装置１０が無駄に修正を繰り返す事態を避けることができる。さらに、未解決のエラーをエラーメッセージとして未解決のエラーをオペレータに通知することで、オペレータに注意喚起できる。オペレータは、未解決のエラーを認識した上で、適宜修正することもできるし、また、エラーの重要度に応じてはエラーを残したままとすることもできる。このため、番組情報の生成がさらに効率化される。
【０１３０】
＜変形例＞
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【０１３１】
第２の実施形態に従って２日目以降に行われるレースを含む番組を生成する場合も、図１１などを参照しながら説明した処理と同様の処理が行われる。ただし、この場合、図１１のステップＳ２５の代わりに、図１５のステップＳ４４や図１６を用いて説明した処理が行われる。
【０１３２】
テーブルやデータベース中の情報要素は一例であって、実装に応じて変更され得る。例えば、一部の情報がテーブルやデータベースに含まれていなくても良く、追加の情報がテーブルやデータベースに含まれていても良い。また、図６を用いて説明した情報の一部が過去レース情報ＤＢ４３とは別に格納されていても良い。例えば、テーブルＴ１が過去レース情報ＤＢ４３に含まれていて、テーブルＴ２やＴ３は過去レース情報ＤＢ４３とは別に記憶部４０に保持されていても良い。同様に、図７を用いて説明した情報のうちの一部は概定番組表ＤＢ４４とは別に格納されていても良い。
【０１３３】
第１〜第３の実施形態で使用されている設定値や、第２および第３の実施形態で使用される重み値は、オペレータが適宜変更可能であっても良い。例えば、オペレータは、影響を大きくしたい生成ルールに関する設定値の絶対値や重み値を大きくすることができる。同様に、オペレータは、影響を小さくしたい生成ルールに関する設定値の絶対値や重み値を小さくすることができる。
【０１３４】
第４の実施形態および第５の実施形態においても、第６の実施形態と同様に、割り振り情報の修正が所定の回数以上発生した場合には、生成部３１は、割り振り情報の修正を終了しても良い。また、生成装置１０が通知情報処理部３２を備える場合、通知情報処理部３２は、未解決のエラーを通知するメッセージを生成してもよい。出力部３４は、最新の割り振り情報を、エラーを通知するメッセージと共に、番組情報の生成結果として出力できる。
【０１３５】
第３の実施形態は、いずれの実施形態とも組み合わせることができる。すなわち、第１、第２、第４〜第６の実施形態のいずれかで番組の生成結果とすることが決定された割り振り情報について、図１７に示す処理が行われ得る。この処理により、番組中に投票券の購入を促進するレースが所定数だけ含まれていない場合には、生成装置１０は、オペレータに対して注意喚起することができる。
【０１３６】
さらに、第１〜第３の実施形態では、検出部２２は、所定の条件を満たした割り振り情報は処理の対象外に設定することもできる。例えば、縁故選手同士が含まれるレースを禁止するなど、生成ルールＤＢ４２に設定されているルールのうちで、全てのレースで遵守させたいルールがある。そこで、検出部２２は、全てのレースで遵守させたいルールを別に学習しておくことができる。検出部２２は、全てのレースで遵守させたいルールのうちのいずれかに反しているレースを含む割り振り情報については、設定値の特定を行わずに削除することで、処理の対象外にすることができる。換言すると、全てのレースで遵守させたいルールのうちのいずれかに反しているレースを含む割り振り情報は、番組の生成結果から除外される。このように変形すると、出力部３４での処理負荷が軽減できる。また、このように変形することにより、全てのレースで遵守させたいルールを、生成する番組の全てにおいて遵守することができる。
【０１３７】
以上の処理は、競輪レースの番組生成を例として説明したが、これは一例に過ぎない。生成装置１０が例えば、競艇レースなどの他の種類のレースの番組生成に使用されても良い。
【符号の説明】
【０１３８】
１  選手情報
２  生成ルール
３  過去レース情報
４  概定番組表
６  エラー
１０  生成装置
２０  学習処理部
２１  学習部
２２  検出部
３０  生成処理部
３１  生成部
３２  通知情報処理部
３３  判定部
３４  出力部
３５  計算部
４０  記憶部
４１  選手情報ＤＢ
４２  生成ルールＤＢ
４３  過去レース情報ＤＢ
４４  概定番組表ＤＢ
１０１  プロセッサ
１０２  メモリ
１０３  入力装置
１０４  出力装置
１０５  バス
１０６  記憶装置
１０７  可搬記憶媒体駆動装置
１０８  可搬記憶媒体
１０９  ネットワークインタフェース
【図１】
2020060875.tif 000003
【図２】
2020060875.tif 000004
【図３】
2020060875.tif 000005
【図４】
2020060875.tif 000006
【図５】
2020060875.tif 000007
【図６】
2020060875.tif 000008
【図７】
2020060875.tif 000009
【図８】
2020060875.tif 000010
【図９】
2020060875.tif 000011
【図１０】
2020060875.tif 000012
【図１１】
2020060875.tif 000013
【図１２】
2020060875.tif 000014
【図１３】
2020060875.tif 000015
【図１４】
2020060875.tif 000016
【図１５】
2020060875.tif 000017
【図１６】
2020060875.tif 000018
【図１７】
2020060875.tif 000019
【図１８】
2020060875.tif 000020
【図１９】
2020060875.tif 000021
【図２０】
2020060875.tif 000022
【図２１】
2020060875.tif 000023
【図２２】
2020060875.tif 000024
【図２３Ａ】
2020060875.tif 000025
【図２３Ｂ】
2020060875.tif 000026
【図２４】
2020060875.tif 000027
【図２５】
2020060875.tif 000028
【図２６Ａ】
2020060875.tif 000029
【図２６Ｂ】
2020060875.tif 000030