(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-15
(45)【発行日】2024-11-25
(54)【発明の名称】プログラム及び情報処理装置
(51)【国際特許分類】
G16H 20/60 20180101AFI20241118BHJP
【FI】
G16H20/60
(21)【出願番号】P 2020187209
(22)【出願日】2020-11-10
【審査請求日】2023-10-18
(73)【特許権者】
【識別番号】000150615
【氏名又は名称】株式会社長谷工コーポレーション
(73)【特許権者】
【識別番号】504137912
【氏名又は名称】国立大学法人 東京大学
(74)【代理人】
【識別番号】100147485
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100169823
【氏名又は名称】吉澤 雄郎
(72)【発明者】
【氏名】石川 達之
(72)【発明者】
【氏名】清水 陽介
(72)【発明者】
【氏名】河野 誠
(72)【発明者】
【氏名】矢部 晃子
(72)【発明者】
【氏名】遠藤 秀人
(72)【発明者】
【氏名】王 昭旭
(72)【発明者】
【氏名】陽 洪志
(72)【発明者】
【氏名】高瀬 麻以
【審査官】中元 淳二
(56)【参考文献】
【文献】特開平05-128126(JP,A)
【文献】特開2017-041217(JP,A)
【文献】特開2019-133624(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G16H 10/00-80/00
(57)【特許請求の範囲】
【請求項1】
記憶部に記憶されている料理データベースを参照して複数の料理を含む1食分の食事セットを複数個含む食事セット群を第1のアルゴリズムを用いて生成するステップと、
生成した前記食事セット群を前記記憶部に記憶するステップと、
前記記憶部に記憶した前記食事セット群に基づいて、ユーザに提案する所定期間分の献立を第2のアルゴリズムを用いて生成するステップと、
を含む動作をコンピュータに実行させ、
前記第1のアルゴリズムは、
前記記憶部に記憶されている前記料理データベースを参照して、ランダムに食事セットを生成するステップと、
生成した前記食事セットが所定条件を満たすか否かを判定し、前記所定条件を満たす場合は生成した前記食事セットを前記食事セット群に追加し、前記所定条件を満たさない場合は生成した前記食事セットを前記食事セット群に追加せずに破棄するステップとを実行し、
前記第2のアルゴリズムは、
線形計画法である、プログラム。
【請求項2】
請求項1に記載のプログラムにおいて、
前記所定期間分の前記献立を前記第2のアルゴリズムを用いて生成するステップは、ユーザ情報に基づいて設定された制約条件を満たし、前記ユーザ情報に基づいて設定された最適関数を最大化するように、前記献立を生成する、プログラム。
【請求項3】
請求項1又は2に記載のプログラムにおいて、
前記所定期間分の前記献立を前記第2のアルゴリズムを用いて生成するステップは、
前記第2のアルゴリズムを用いて、前記所定期間の間の食事回数分の前記食事セットを前記食事セット群から選択するステップと、
前記第2のアルゴリズムを用いて、選択した前記食事セットを食べる順番を決定するステップと、を含む、プログラム。
【請求項4】
請求項1から3のいずれか一項に記載のプログラムにおいて、
前記第1のアルゴリズムは、モンテカルロ法であ
り、
前記所定条件は、前記食事セットを構成する前記複数の料理について、料理のジャンルが統一されていることを含む、プログラム。
【請求項5】
請求項1から4のいずれか一項に記載のプログラムにおいて、
前記第1のアルゴリズムは、モンテカルロ法であり、
前記所定条件は、前記食事セットを構成する前記複数の料理について、調理方法が異なることを含む、プログラム。
【請求項6】
料理データベースを記憶している記憶部と、
制御部と、を備え、
前記制御部は、
前記記憶部に記憶されている前記料理データベースを参照して複数の料理を含む1食分の食事セットを複数個含む食事セット群を第1のアルゴリズムを用いて生成し、
生成した前記食事セット群を前記記憶部に記憶し、
前記記憶部に記憶した前記食事セット群に基づいて、ユーザに提案する所定期間分の献立を第2のアルゴリズムを用いて生成
し、
前記第1のアルゴリズムは、
前記記憶部に記憶されている前記料理データベースを参照して、ランダムに食事セットを生成するステップと、
生成した前記食事セットが所定条件を満たすか否かを判定し、前記所定条件を満たす場合は生成した前記食事セットを前記食事セット群に追加し、前記所定条件を満たさない場合は生成した前記食事セットを前記食事セット群に追加せずに破棄するステップとを実行し、
前記第2のアルゴリズムは、
線形計画法である、情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、プログラム及び情報処理装置に関する。
【背景技術】
【0002】
従来、ユーザの健康増進を目的とするヘルスケアアプリケーションが知られている。ヘルスケアアプリケーションには、食事メニューを提案するものがある。
【0003】
例えば特許文献1は、ユーザに食事提案を行うサーバ装置を開示している。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
食事提案を行う際、柔軟性の高いアルゴリズムで食事メニューを作成すると、計算速度が遅くなる場合がある。また、食事提案を行う際、計算速度が速いアルゴリズムで食事メニューを作成すると、柔軟性に欠ける場合がある。
【0006】
ユーザの健康増進に寄与する技術には改善の余地があった。
【0007】
上記のような課題に鑑みてなされた本開示の目的は、ユーザの健康増進に寄与する技術を改善することができるプログラム及び情報処理装置を提案することにある。
【課題を解決するための手段】
【0008】
本開示に係るプログラムは、
複数の料理を含む1食分の食事セットを複数個含む食事セット群を第1のアルゴリズムを用いて生成するステップと、
前記食事セット群に基づいて、ユーザに提案する所定期間分の献立を第2のアルゴリズムを用いて生成するステップと、
を含む動作をコンピュータに実行させ、
前記第1のアルゴリズムは、前記第2のアルゴリズムよりも柔軟性が高いアルゴリズムであり、
前記第2のアルゴリズムは、前記第1のアルゴリズムよりも計算速度が速いアルゴリズムである。
【0009】
本開示に係る情報処理装置は、
複数の料理を含む1食分の食事セットを複数個含む食事セット群を第1のアルゴリズムを用いて生成し、
前記食事セット群に基づいて、ユーザに提案する所定期間分の献立を第2のアルゴリズムを用いて生成するする、制御部、
を備え、
前記第1のアルゴリズムは、前記第2のアルゴリズムよりも柔軟性が高いアルゴリズムであり、
前記第2のアルゴリズムは、前記第1のアルゴリズムよりも計算速度が速いアルゴリズムである。
【発明の効果】
【0010】
本開示に係るプログラム及び情報処理装置によれば、ユーザの健康増進に寄与する技術を改善することができる。
【図面の簡単な説明】
【0011】
【
図1】本開示の一実施形態に係る情報処理システムの構成を示す図である。
【
図2】本開示の一実施形態に係る情報処理装置の構成を示すブロック図である。
【
図3】本開示の一実施形態に係る端末装置の構成を示すブロック図である。
【
図5】食事セット群のデータベースの一例を示す図である。
【
図6】本開示の一実施形態に係る情報処理システムの動作の一例を示すフローチャートである。
【
図7】
図6のステップS101の動作の詳細を示すフローチャートである。
【
図8】
図6のステップS102の動作の詳細を示すフローチャートである。
【
図9】本開示の一実施形態に係る情報処理システムの変形例に係る動作を示すフローチャートである。
【
図10】食事セットの順番を決める際に用いるマトリックスの一例を示す図である。
【
図11】食事セットの順番を決める際に用いる肉類ベクトル及び魚類ベクトルの一例を示す図である。
【発明を実施するための形態】
【0012】
以下、本開示の実施形態について図面を参照して説明する。
【0013】
図1は、本開示の一実施形態に係る情報処理システム1の構成を示す図である。
図1を参照して、本開示の一実施形態に係る情報処理システム1の構成及び概要を説明する。
【0014】
情報処理システム1は、情報処理装置10と、端末装置20とを備える。情報処理装置10と、端末装置20とは、ネットワーク30を介して通信可能に接続されている。ネットワーク30は移動体通信網及びインターネットなどを含むネットワークであってよい。
【0015】
図1では、情報処理装置10及び端末装置20をそれぞれ1台ずつ示しているが、情報処理装置10及び端末装置20は、それぞれ2台以上であってもよい。
【0016】
情報処理装置10は、例えば、サーバとして機能するように構成された専用のコンピュータである。情報処理装置10は、汎用のPC(Personal Computer)であってもよい。情報処理装置10は、端末装置20から取得した情報に基づいて、各種処理を実行する。
【0017】
端末装置20は、健康の維持又は増進を目的とするアプリケーションを実行するユーザが所有している端末装置である。端末装置20は、例えば、スマートフォン、携帯電話、タブレット端末、ノートPC又はデスクトップPCなどである。
【0018】
端末装置20は、ユーザからユーザ情報を取得する。端末装置20は、ユーザが食べた食事の記録である食事記録を取得する。端末装置20は、ユーザ情報及び食事記録を情報処理装置10に送信する。
【0019】
情報処理装置10は、ユーザに提案する所定期間分の献立を生成する。所定期間分の献立は、例えば、3日分、1週間分、1ヶ月分、3ヶ月分などの期間の献立であってよい。情報処理装置10が献立を生成する処理の詳細については後述する。情報処理装置10は、生成した所定期間分の献立を端末装置20に送信する。
【0020】
端末装置20は、情報処理装置10から取得した所定期間分の献立を出力してユーザに提示する。端末装置20は、献立を画面に表示してもよいし、音声として出力してもよい。端末装置20は、献立を、画面への表示と、音声による出力との双方で出力してもよい。
【0021】
ユーザは、端末装置20によって出力された献立に基づいて食事をとる。端末装置20は、献立を提示されたユーザが実際に食べた食事記録を取得する。端末装置20は、ユーザ情報に変更があると、変更後のユーザ情報をユーザからの入力などによって取得する。
【0022】
図2を参照して、本開示の一実施形態に係る情報処理装置10の構成を説明する。
【0023】
情報処理装置10は、通信部11と、記憶部12と、入力部13と、出力部14と、制御部15とを備える。
【0024】
通信部11は、ネットワーク30に接続する通信モジュールを含む。例えば、通信部11は、LAN(Local Area Network)に対応する通信モジュールを含んでもよい。情報処理装置10は、通信部11を介してネットワーク30に接続されている。通信部11は、ネットワーク30を介して多様な情報を送信及び受信する。通信部11は、ネットワーク30を介して、端末装置20と通信可能である。
【0025】
記憶部12は、例えば半導体メモリ、磁気メモリ、又は光メモリ等であるが、これらに限定されない。記憶部12は、例えば主記憶装置、補助記憶装置、又はキャッシュメモリとして機能してもよい。記憶部12は、情報処理装置10の動作に用いられる任意の情報を記憶する。例えば、記憶部12は、システムプログラム、アプリケーションプログラム、及び通信部11によって受信された各種情報等を記憶してもよい。記憶部12に記憶された情報は、例えば通信部11を介してネットワーク30から受信される情報で更新可能であってもよい。記憶部12の一部は、情報処理装置10の外部に設置されていてもよい。その場合、外部に設置されている記憶部12の一部は、任意のインタフェースを介して情報処理装置10と接続されてよい。
【0026】
入力部13は、ユーザ入力を検出して、ユーザの操作に基づく入力情報を取得する1つ以上の入力用インタフェースを含む。例えば、入力部13は、物理キー、静電容量キー、出力部14のディスプレイと一体的に設けられたタッチスクリーン、又は音声入力を受け付けるマイク等を含むが、これに限定されない。
【0027】
出力部14は、情報を出力してユーザに通知する1つ以上の出力用インタフェースを含む。例えば、出力部14は、情報を画像で出力するディスプレイ、情報を音声で出力するスピーカ等を含む。
【0028】
制御部15は、少なくとも1つのプロセッサ、少なくとも1つの専用回路、又はこれらの組み合わせを含む。プロセッサは、CPU(Central Processing Unit)若しくはGPU(Graphics Processing Unit)などの汎用プロセッサ、又は特定の処理に特化した専用プロセッサである。専用回路は、例えば、FPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit)である。制御部15は、情報処理装置10の各部を制御しながら、情報処理装置10の動作に関わる処理を実行する。
【0029】
図3を参照して、本開示の実施形態に係る端末装置20の構成を説明する。
【0030】
端末装置20は、通信部21と、記憶部22と、入力部23と、出力部24と、カメラ25と、制御部26とを備える。
【0031】
通信部21は、ネットワーク30に接続する通信モジュールを含む。例えば、通信部21は、LTE(Long Term Evolution)、4G(4th Generation)及び5G(5th Generation)等の移動体通信規格に対応する通信モジュールを含んでもよい。端末装置20は、通信部21を介してネットワーク30に接続されている。通信部21は、ネットワーク30を介して多様な情報を送信及び受信する。通信部21は、ネットワーク30を介して、情報処理装置10と通信可能である。
【0032】
記憶部22は、例えば半導体メモリ、磁気メモリ、又は光メモリ等であるが、これらに限定されない。記憶部22は、例えば主記憶装置、補助記憶装置、又はキャッシュメモリとして機能してもよい。記憶部22は、端末装置20の動作に用いられる任意の情報を記憶する。例えば、記憶部22は、システムプログラム、アプリケーションプログラム、及び通信部21によって受信された各種情報等を記憶してもよい。記憶部22に記憶された情報は、例えば通信部21を介してネットワーク30から受信される情報で更新可能であってもよい。記憶部22の一部は、端末装置20の外部に設置されていてもよい。その場合、外部に設置されている記憶部22の一部は、任意のインタフェースを介して端末装置20と接続されてよい。
【0033】
入力部23は、ユーザ入力を検出して、ユーザの操作に基づく入力情報を取得する1つ以上の入力用インタフェースを含む。例えば、入力部23は、物理キー、静電容量キー、出力部24のディスプレイと一体的に設けられたタッチスクリーン、又は音声入力を受け付けるマイク等を含むが、これに限定されない。
【0034】
出力部24は、情報を出力してユーザに通知する1つ以上の出力用インタフェースを含む。例えば、出力部24は、情報を画像で出力するディスプレイ、情報を音声で出力するスピーカ等を含む。
【0035】
カメラ25は、レンズ及び撮像素子を含む。カメラ25は、ユーザが食べた食事を撮影可能である。
【0036】
制御部26は、少なくとも1つのプロセッサ、少なくとも1つの専用回路、又はこれらの組み合わせを含む。プロセッサは、CPU若しくはGPUなどの汎用プロセッサ、又は特定の処理に特化した専用プロセッサである。専用回路は、例えば、FPGA又はASICである。制御部26は、端末装置20の各部を制御しながら、端末装置20の動作に関わる処理を実行する。
【0037】
続いて、情報処理システム1の動作について説明する。
【0038】
端末装置20の入力部23は、ユーザ情報の入力を受け付ける。ユーザ情報は、ユーザの属性及びユーザが抱える症状などを含む情報である。端末装置20は、例えば、出力部24にユーザ情報の入力画面を表示させて、ユーザ情報の入力を受け付けてよい。入力部23は、ユーザの操作に応じて、任意のタイミングで、ユーザ情報の入力を受け付けてよい。
【0039】
ユーザ情報は、ユーザの属性として、身長、体重、性別、年齢、体脂肪率、腹囲、家族の状況、好みの食事などの情報を含んでよい。また、ユーザ情報は、ユーザが抱える症状として、冷え性、便秘、高血圧、貧血、アレルギーなどの症状があるかの情報を含んでよい。また、ユーザ情報は、ユーザの目標の情報として、ユーザが目指す生活力、ユーザが目指す体力などの情報を含んでよい。
【0040】
端末装置20の制御部26は、入力部23が受け付けたユーザ情報を、通信部21を介して情報処理装置10に送信する。
【0041】
情報処理装置10の制御部15は、端末装置20が送信したユーザ情報を、通信部11を介して取得する。制御部15は、取得したユーザ情報を、記憶部12に記憶する。
【0042】
端末装置20の入力部23は、ユーザが食べた食事の記録である食事記録の入力を受け付ける。入力部23は、例えば、ユーザの入力部23に対する入力操作に基づいて、食事記録の入力を受け付ける。
【0043】
端末装置20の制御部26は、入力部23が受け付けた食事記録を、通信部21を介して情報処理装置10に送信する。
【0044】
情報処理装置10の制御部15は、端末装置20が送信した食事記録を、通信部11を介して取得する。制御部15は、取得した食事記録を、記憶部12に記憶する。
【0045】
端末装置20は、食事記録を、ユーザが食べた食事をユーザがカメラ25によって撮影することによって取得してもよい。この場合、制御部26は、カメラ25が撮影した画像を、通信部21を介して情報処理装置10に送信する。
【0046】
情報処理装置10の制御部15は、端末装置20から取得したユーザ情報に基づいて、ユーザに提案する献立を生成する際の制約条件を生成する。
【0047】
ユーザに提案する献立を生成する際の制約条件は、例えば、取得すべきカロリー、栄養素の上限下限、食品群のバランス、料理の組合せの適切性、ユーザの好みなどの情報を含む。栄養素の種類には、例えば、食塩、たんぱく質、脂質、炭水化物、カルシウム、リン、鉄、マグネシウム、レチノール、ビタミンE、ビタミンD、ビタミンB1、ビタミンB2、ビタミンC、食物繊維などがある。
【0048】
情報処理装置10の記憶部12は、様々な料理についての料理データベースを記憶している。
図4に、記憶部12に記憶されている料理データベースの一例を示す。
図4に示す例では、料理データベースは、料理ID及び料理名に関連づけて、種別、ジャンル、カロリー、塩分、効果のある症状などの情報を記憶している。種別の欄には、主食、主菜、副菜、副々菜などの情報が記憶されていてよい。ジャンルの欄には、和食、洋食、中華などの情報が記憶されていてよい。
【0049】
なお、
図4に示す料理データベースは一例であり、料理データベースは、料理ID及び料理名に関連づけて、更に他の情報を記憶していてもよい。料理データベースは、例えば、料理ID及び料理名に関連づけて、調理方法、食事の時間などの情報を記憶していてもよい。調理方法の欄には、揚げ物、焼き物などの情報が記憶されていてよい。食事の時間の欄には、朝食、昼食、夕食などの情報が記憶されていてよい。
【0050】
記憶部12は、例えば、数万~数10万種類程度の料理の情報を、料理データベースに記憶していてよい。
【0051】
情報処理装置10の制御部15は、記憶部12に記憶されている料理データベースを参照して、複数の料理を含む1食分の食事セットを複数個含む食事セット群を生成する。ここで、「食事セット」とは、1食分の食事を意味し、例えば、主食、主菜、副菜、副々菜などについて、それぞれ1つずつの料理を含むセットである。また、ここで、「食事セット群」とは、複数の食事セットを含むデータである。
【0052】
図5に、食事セット群のデータベースの一例を示す。
図5に示す例では、1つの行が1つの食事セットに対応する。例えば、食事セットIDが「0001」である食事セットは、主食として料理IDが「0005」である料理を含み、主菜として料理IDが「0203」である料理を含み、副菜として料理IDが「1871」である料理を含み、副々菜として料理IDが「0692」である料理を含む。
【0053】
食事セット群のデータベースは、食事セットの情報として、合計の栄養素、食事セットに含まれているアレルギー食品などの情報を含んでいてもよい。
【0054】
図6のフローチャートを参照して、一実施形態に係る情報処理システム1の動作の一例について説明する。
【0055】
情報処理装置10の制御部15は、第1のアルゴリズムとして例えばモンテカルロ法を用いて、食事セット群を生成する(ステップS101)。
【0056】
制御部15は、ステップS101において生成された食事セット群に基づいて、第2のアルゴリズムとして例えば線形計画法を用いて、ユーザに提案する所定期間分の献立を生成する(ステップS102)。
【0057】
このように、制御部15は、ユーザに提案する所定期間分の献立を生成する際、2種類のアルゴリズムを用いて、ステップS101及びステップS102の2段階のステップでユーザに提案する所定期間分の献立を生成する。
【0058】
第1のアルゴリズムは、第2のアルゴリズムよりも満たすべき条件を記述する際の柔軟性が高いアルゴリズムである。第2のアルゴリズムは、第1のアルゴリズムよりも計算速度が速いアルゴリズムである。
【0059】
第1のアルゴリズムは、これに限定されないが、例えばモンテカルロ法であってよい。第2のアルゴリズムは、これに限定されないが、例えば線形計画法であってよい。
【0060】
モンテカルロ法は、満たすべき条件をプログラムとして記述すればよいアルゴリズムであるため柔軟性が高い。ただし、モンテカルロ法は、線形計画法よりも計算速度は遅い。
【0061】
線形計画法は、問題の条件を全て数式で記述する必要があるため柔軟性に欠ける。ただし、線形計画法は、モンテカルロ法よりも計算速度は速い。
【0062】
以後、本実施形態においては、第1のアルゴリズムがモンテカルロ法であり、第2のアルゴリズムが線形計画法であるものとして説明する。
【0063】
制御部15は、柔軟性が高いアルゴリズであるモンテカルロ法を用いて食事セット群を生成することにより、例えば栄養士によって定められたきめ細やかなルール設定に基づいて食事セット群を生成することができる。また、制御部15は、柔軟性が高いアルゴリズであるモンテカルロ法を用いて食事セット群を生成することにより、豊富で多様な食事セットを含む食事セット群を生成することができる。
【0064】
制御部15は、計算速度が速いアルゴリズムである線形計画法を用いて各ユーザに提案する所定期間分の献立を生成することにより、迅速に各ユーザに提案する所定期間分の献立を生成することができる。
【0065】
制御部15は、モンテカルロ法を用いて生成した食事セット群を予め記憶部12に記憶しておくことができる。制御部15は、記憶部12に予め記憶されている食事セット群を参照して、線形計画法を用いて各ユーザに提案する所定期間分の献立を生成することにより、豊富で多様な食事セットを含む献立を提案することと、迅速に献立を提案することとを両立することができる。
【0066】
図6に示すステップS101において、制御部15は、記憶部12に記憶されている料理データベースを参照して、モンテカルロ法を用いて食事セット群を生成する。
【0067】
図7は、
図6に示すステップS101を詳細に説明するフローチャートを示す。
図7のフローチャートを参照して、
図6に示すステップS101の処理の詳細を説明する。
【0068】
情報処理装置10の制御部15は、記憶部12に記憶されている料理データベースを参照して、ランダムに食事セットを生成する(ステップS201)。この際、制御部15は、主食、主菜、副菜及び副々菜のそれぞれについて、料理データベースからランダムに料理を選択して、食事セットを生成する。すなわち、制御部15は、食事セットの主食には、料理データベースに記憶されている料理のうち種別が主食である料理から1つの料理を選択する。また、制御部15は、食事セットの主菜には、料理データベースに記憶されている料理のうち種別が主菜である料理から1つの料理を選択する。また、制御部15は、食事セットの副菜には、料理データベースに記憶されている料理のうち種別が副菜である料理から1つの料理を選択する。また、制御部15は、食事セットの副々菜には、料理データベースに記憶されている料理のうち種別が副々菜である料理から1つの料理を選択する。
【0069】
制御部15は、ステップS201において生成した食事セットが所定条件を満たすか否かを判定する(ステップS202)。所定条件は、例えば以下のような条件を全て満たすことであってよい。
・料理のジャンルが、和食、洋食、中華などのいずれかに統一されていること。
・調理方法が重複しないこと。すなわち、揚げ物の料理を複数含むこと、焼き物の料理を複数含むことなどがないこと。
・食事の時間が、朝食、昼食、夕食などのいずれかに統一されていること。すなわち、朝食向きの料理と夕食向きの料理が混在しているというようなことがないこと。
【0070】
なお、上記の所定条件はあくまで一例である。所定条件は、上記の条件の一部を含まなくてもよいし、他の条件を含んでもよい。
【0071】
食事セットが所定条件を満たす場合(ステップS202のYes)、制御部15は、生成した食事セットを、記憶部12に記憶されている食事セット群のデータベースに追加する(ステップS203)。
【0072】
食事セットが所定条件を満たさない場合(ステップS202のNo)、制御部15は、生成した食事セットを、記憶部12に記憶されている食事セット群のデータベースに追加せずに破棄する(ステップS204)。
【0073】
制御部15は、ステップS201~S204の処理を所定回数繰り返したか否か判定する(ステップS205)。所定回数は、食事セット群に含ませたい食事セットの個数に応じて設定された回数であってよい。所定回数を増やすことで、食事セット群に含まれる食事セットの個数を増やすことができる。
【0074】
所定回数繰り返していないと判定した場合(ステップS205のNo)、制御部15は、ステップS201に戻る。
【0075】
所定回数繰り返したと判定した場合(ステップS205のNo)、制御部15は、処理を終了する。
【0076】
図8は、
図6に示すステップS102を詳細に説明するフローチャートを示す。
図8のフローチャートを参照して、
図6に示すステップS102の処理の詳細を説明する。
【0077】
情報処理装置10の制御部15は、ユーザに提案する所定期間分の献立を、線形計画法を用いて生成する際の制約条件を設定する(ステップS301)。この際、制御部15は、端末装置20から取得して記憶部12に記憶しているユーザ情報に基づいて、制約条件を設定する。このようにユーザ情報に基づいて制約条件を設定することで、制御部15は、ユーザの体調、健康状態、好みなどに基づく制約条件を設定することができる。所定期間分の献立が例えば1週間分の献立である場合、制御部15は、制約条件として、例えば、1週間で取得する21セット分の食事セットの栄養素の合計が、取得すべき栄養素の上限下限に収まることを制約条件として設定してよい。制御部15は、制約条件を1次不等式として記述してよい。
【0078】
制御部15は、ユーザに提案する所定期間分の献立を、線形計画法を用いて生成する際の最適関数を設定する(ステップS302)。この際、制御部15は、端末装置20から取得して記憶部12に記憶しているユーザ情報に基づいて、最適関数を設定する。制御部15は、例えば、好み関数及び栄養関数を用いて、最適関数を設定してよい。
【0079】
好み関数は、例えば、以下の式(1)によって定義されるUCBの値を採用してよい。
【数1】
【0080】
式(1)において、成功率は、以前にユーザに提案した料理をユーザが実際に食べた確率であってよい。提案した料理をユーザが実際に食べたかどうかは、制御部15が、端末装置20から取得した食事記録に基づいて判定してよい。あるいは、成功率は、以前にユーザに提案した料理に対し、ユーザが「いいね」ボタンを押した確率で判定してもよい。総プレイアウト数は、これまでにユーザが食べた全ての食事の回数である。プレイアウト数は、その料理が提案された回数である。すなわち、式(1)によって定義されるUCBの値で好み関数を定義する場合、好み関数は、成功率が高いほど大きくなり、また、プレイアウト数が少ないほど大きくなる。
【0081】
栄養関数は、例えば、21食分の食事セットで取得すべき理想的な栄養素と、21食分の食事セットの栄養素の合計との差分で定義してもよい。この際、21食分の食事セットで取得すべき理想的な栄養素は、例えば、21食分の食事セットで取得すべき栄養素の上限と下限との中央値であってよい。このように栄養関数を定義した場合、栄養関数は、栄養素の合計が栄養素の理想的な値に近いほど小さくなる。
【0082】
制御部15は、最適関数を、以下の式(2)のように、好み関数と栄養関数との差分で設定してよい。
最適関数=好み関数-栄養関数 (2)
【0083】
式(2)で定義される最適関数は、値が大きいほど最適な食事セットが選択されていることを意味する。
【0084】
制御部15は、ステップS301において設定した制約条件と、ステップS302において設定した最適関数とに基づいて、1週間分の献立を生成する(ステップS303)。より具体的には、制御部15は、制約条件を満たし、最適関数を最大化するように、1週間分の献立を生成する。制御部15は、最適関数を最大化する計算をする際、例えば、シンプレックス法又は内点法などのアルゴリズムを用いてよい。1週間分の献立は、21食分の食事セットを含む。21食分の食事セットは、例えば、21食分の食事セットの食事セットIDを含むデータとして記憶部12に記憶されてよい。
【0085】
(変形例)
続いて、
図9のフローチャートを参照して、一実施形態に係る情報処理システム1の変形例に係る動作について説明する。
【0086】
情報処理システム1の変形例に係る動作は、
図6のフローチャートのステップS102で示した処理が2段階の処理になっているという点で、
図6に示すフローチャートで説明した動作と相違する。
図9に示すフローチャートでは、
図6のフローチャートのステップS102の処理が、ステップS402とステップS403の2段階の処理となっている。
【0087】
図9に示すフローチャートのステップS401は、
図6に示すフローチャートのステップS101と同様の処理であるため説明を省略する。
【0088】
情報処理装置10の制御部15は、第2のアルゴリズムとして例えば線形計画法を用いて、ユーザに提案する所定期間の間の食事回数分の食事セットを、記憶部12に記憶されている食事セット群から選択する(ステップS402)。制御部15は、
図8のフローチャートに示した処理と同様に、制約条件を満たし、最適関数を最大化するように、1週間分の食事セットを選択してよい。ユーザに提案する献立が1週間分の献立である場合、制御部15は、21食分の食事セットを選択する。
【0089】
制御部15は、第2のアルゴリズムとして例えば線形計画法を用いて、選択した食事セットを食べる順番を決定する(ステップS403)。食事セットを食べる順番とは、どの食事セットをどの日時に食べるかの順番である。すなわち、食事セットを食べる順番を決定することは、どの曜日のどの時間帯に食事セットを食べるかを決定することを意味する。
【0090】
制御部15は、例えば、
図10に示すようなマトリックスの形式で、食事セットを食べる順番を決定してよい。
図10のマトリックスは、列1~列21までが、食事セットを食べる日時に対応する。例えば、列1は月曜日の朝食に対応し、列2は月曜日の昼食に対応し、列3は月曜日の夕食に対応し、列4は火曜日の朝食に対応するというように、列1~列21がそれぞれ順に食事セットを食べる日時に対応する。
【0091】
また、
図10のマトリックスは、行1~行21までが、
図9に示すフローチャートのステップS402において選択された21食分の食事セットに対応する。
図10では、21食分の食事セットに1~21の番号が対応づけられているものとする。
【0092】
図10に示すマトリックスは、各列に対応する日時において「1」となっている食事セットを食べることを示している。例えば、列1と行14が交差するセルが「1」となっているが、これは、月曜日の朝食に14番の食事セットを食べることを意味する。
【0093】
制御部15は、いくつかのルールに基づいて、食事セットを食べる順番を決定する。いくつかのルールは、例えば、基本ルール、食品群バランスルール、固定メニュールールなどを含んでよい。
【0094】
基本ルールは、例えば、
図10に示すマトリックスにおいて、全マトリックスの合計が21となること、各列の合計が1となること、各行の合計が1となること、などであってよい。
【0095】
食品群バランスルールは、例えば、2日に1回以上は肉類を食べること、2日に1回以上は魚類を食べること、丼物と麺類は1日に多くても1回までであること、などであってよい。例えば肉類については、
図10に示すマトリックスと、
図11に示す肉類ベクトルとの内積をとり、2日に1回以上は肉類を食べるというルールを満たしているかを判定してよい。例えば魚類については、
図10に示すマトリックスと、
図11に示す魚類ベクトルとの内積をとり、2日に1回以上は魚類を食べるというルールを満たしているかを判定してよい。
【0096】
固定メニュールールは、例えば、火曜日の朝食はバナナを食べることなどであってよい。
【0097】
上述のように、本実施形態に係る情報処理装置10は、複数の食事セットを含む食事セット群を第1のアルゴリズムを用いて生成する。また、情報処理装置10は、生成した食事セット群に基づいて、ユーザに提案する所定期間分の献立を第2のアルゴリズムを用いて生成する。ここで、第1のアルゴリズムは第2のアルゴリズムよりも柔軟性が高いアルゴリズムであり、第2のアルゴリズムは第1のアルゴリズムよりも計算速度が速いアルゴリズムである。したがって、情報処理装置10は、柔軟性が高い第1のアルゴリズムを用いることによって、柔軟なルールに基づいて生成された豊富な食事セットを含む食事セット群を生成することができる。また、情報処理装置10は、計算速度が速い第2のアルゴリズムを用いることによって、ユーザに提案する所定期間分の献立を迅速に生成することができる。すなわち、情報処理装置10は、ユーザに提案する所定期間分の献立に豊富な食事セットを含ませることと、ユーザに提案する所定期間分の献立を迅速に生成することとを両立することができる。したがって、本実施形態に係る情報処理装置10は、ユーザの健康増進に寄与する技術を改善することができる。
【0098】
例えば、より品質が高く、より多くの条件に適合したきめ細かい献立を提案するためには、様々な条件に適合する料理のバリエーションと、より多品種の料理レシピとを準備する必要がある。その場合、料理の検索には大量のCPU負荷がかかるため、同時に処理できるユーザ数に制限が出たり、それぞれのユーザーへの情報提供に時間を要するようになったりする。しかしながら、本実施形態に係る情報処理装置10は、第1のアルゴリズムと第2のアルゴリズムという2つのアルゴリズムを組み合わせているため、短時間での情報提供をすることが可能となる。
【0099】
本開示は上述の実施形態に限定されるものではない。例えば、ブロック図に記載の複数のブロックを統合してもよいし、又は1つのブロックを分割してもよい。フローチャートに記載の複数のステップを記述に従って時系列に実行する代わりに、各ステップを実行する装置の処理能力に応じて、又は必要に応じて、並列的に又は異なる順序で実行してもよい。その他、本開示の趣旨を逸脱しない範囲での変更が可能である。
【0100】
例えば、上述した実施形態において、情報処理装置10の構成及び動作を、互いに通信可能な複数の情報処理装置に分散させる実施形態も可能である。
【0101】
例えば、上述した実施形態において情報処理装置10において実行される一部の処理動作が端末装置20において実行されてもよい。また、端末装置20において実行される少なくとも一部の処理動作が情報処理装置10において実行されてもよい。
【0102】
例えば、汎用のコンピュータを、上述した実施形態に係る情報処理装置10として機能させる実施形態も可能である。具体的には、上述した実施形態に係る情報処理装置10の各機能を実現する処理内容を記述したプログラムを、汎用のコンピュータのメモリに格納し、プロセッサによって当該プログラムを読み出して実行させる。したがって、本実施形態に係る発明は、プロセッサが実行可能なプログラム、又は当該プログラムを記憶する非一時的なコンピュータ可読媒体としても実現可能である。
【符号の説明】
【0103】
1 情報処理システム
10 情報処理装置
11 通信部
12 記憶部
13 入力部
14 出力部
15 制御部
20 端末装置
21 通信部
22 記憶部
23 入力部
24 出力部
25 カメラ
26 制御部
30 ネットワーク