JP4005984B2 - プラン実行方法とそのシステム、プログラム - Google Patents

プラン実行方法とそのシステム、プログラム Download PDF

Info

Publication number
JP4005984B2
JP4005984B2 JP2004191756A JP2004191756A JP4005984B2 JP 4005984 B2 JP4005984 B2 JP 4005984B2 JP 2004191756 A JP2004191756 A JP 2004191756A JP 2004191756 A JP2004191756 A JP 2004191756A JP 4005984 B2 JP4005984 B2 JP 4005984B2
Authority
JP
Japan
Prior art keywords
task
plan
execution
tasks
condition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004191756A
Other languages
English (en)
Other versions
JP2006012072A (ja
Inventor
久志 林
晃嗣 上野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2004191756A priority Critical patent/JP4005984B2/ja
Publication of JP2006012072A publication Critical patent/JP2006012072A/ja
Application granted granted Critical
Publication of JP4005984B2 publication Critical patent/JP4005984B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は、コンピュータ上でタスクの実行要求に基づいてプランを作成し、作成したプランを実行するプラン実行技術に関し、特に、プラン実行中における他の要求の割込みに応じて実行中のプランを柔軟に変更可能とするための改良に関する。
近年のコンピュータ技術の著しい発展に伴い、多種多様な分野における各種の装置やシステムを制御対象としてコンピュータ制御が広く活用されるに至っている。特に、現実空間でロボットを自立的に活動させる場合や、コンピュータネットワーク上を移動しながら自立的に活動する移動エージェントにより移動先のコンピュータを制御する場合等の、状況に応じて変化する複雑な動作の制御においては、ユーザの要求に応じたリアルタイムな制御が要求される。
例えば、特許文献1においては、ユーザの要求に応じてプランを作成し、この作成したプランに基づいてネットワーク上を移動しながら活動する移動エージェントのシステムが記載されている。このシステムにおいては、ユーザの要求に応じたプランをリアルタイムに動的に作成して実行することで、移動エージェントのリアルタイム制御を実現している。
一方で、このようなリアルタイム制御に限らず、ユーザの要求に応じて作成したプランを実行する各種のコンピュータ制御においては、本質的に、プラン実行中にユーザから他の要求が割込みとして与えられる場合がある。従来、このようなプラン実行中の割込みを処理する技術としては、特許文献2に記載されているような、複数のプロセッサ中からその割込みを処理可能なプロセッサを選択して割込み処理を行わせる技術や、特許文献3に記載されているような、複数の割込みに対してその処理を実行するための優先順位を付与する技術等が存在している。
特開平10−149287号公報 特開平9−282188号公報 特開平6−187171号公報
しかしながら、上記のような従来技術には、次のような問題点がある。まず、特許文献1においては、プラン実行中にユーザから他の要求が与えられた場合でも、その要求の割込みを受け付けることはできない。また、特許文献2においては、割込みを受け付けても処理するプロセッサを選択するだけであり、受け付けた割込みに応じて現在実行中のプランを変更することはできない。また、特許文献3においては、複数の割込みを受け付けても処理するための優先順位を付与するだけであり、受け付けた割込みに応じて現在実行中のプランを変更することはできない。
本発明は、上記のような従来技術の問題点を解決するために提案されたものであり、その目的は、プラン実行中における他の要求の割込みを受け付けて、その割込み要求に応じて現在実行中のプランを柔軟に変更可能な、ユーザ満足度の高いコンピュータ制御を実現するプラン実行方法とそのシステム、プログラムを提供することである。
本発明は、プランの実行中に他の要求が与えられた場合に、この要求を受け付けて現在実行中のプランに挿入し、実行可能なタスクに分解することによって、新たな要求に応じてプランを柔軟に変更できるようにしたものである。すなわち、実行中のプランであっても、ユーザから新たな要求が与えられる毎にこの与えられた要求を実現するための最適プランへと動的に変更可能であるため、ユーザ満足度の高いコンピュータ制御を実現することができる。
本発明のプラン実行方法は、ユーザインタフェース部、データ処理部、データ格納部を備えたコンピュータを利用して、タスクの実行要求に基づいてプランを作成し、この作成したプランを実行するプラン実行方法において、要求受付ステップ、プラン作成ステップ、プラン格納ステップ、プラン実行管理ステップ、タスク実行ステップ、を有することを特徴としている。
ここで、要求受付ステップは、ユーザインタフェース部により、タスクの実行要求を要求タスクとして受け付けるステップである。プラン作成ステップは、データ処理部により、データ格納部に予め格納されたタスク分解ルールに従って、要求タスクをより具体的なタスクに分解するタスク分解処理を行い、1つ以上のそのまま実行可能なタスクの実行順序を表現するプランを作成するステップである。このプラン作成ステップによって作成されるプランは、複数個のタスクの並び順でこれらのタスクの実行順序を表現すると共に、連続して並ぶ2個のタスクをタスクペアと定義した場合に、各タスクペア中の2個のタスク間に、他のタスクを挿入可能な弱結合と、他のタスクの挿入を不可とする強結合、という2つの結合のいずれか一方が存在することを表現するものである。プラン格納ステップは、データ処理部により、データ格納部にプランを格納するステップである。プラン実行管理ステップは、データ処理部により、プランに従って、当該プラン中のタスクの実行順序を決定し、この実行順序でタスク実行の指示を行うステップである。タスク実行ステップは、データ処理部またはユーザインタフェース部により、タスク実行の指示に従って、プラン中の各タスクを順次実行するステップである。
さらに、プラン作成ステップは、プラン中の各タスクの実行時に他の要求タスクが受け付けられた場合に、当該要求タスクを実行中の当該プランの弱結合により結合された2つのタスクの間に挿入するタスク挿入処理を行い、この挿入した当該要求タスクに対してタスク分解処理を行うことで当該プランを修正するステップを含む。また、プラン実行管理ステップは、実行中の前記プランが修正された場合に、修正後の当該プランに従ってタスク実行の指示を行うステップを含む。
また、本発明のプラン実行システムおよびプラン実行プログラムは、上記のプラン実行方法の特徴を、システムおよびコンピュータプログラムの観点からそれぞれ表現したものである。
なお、本明細書中で重要な用語の定義は次の通りである。
「タスク」は、コンピュータのオペレーティングシステムで処理する単位を意味しているが、本明細書中における「タスク」は、それ以上具体化できないそのまま実行可能な処理単位としてのタスクだけでなく、それ自体が複数個のタスクの実行順序を表現するプランをも含む。また、「タスク」は、上記したような処理単位となるタスクまたはプランに置換可能なより抽象的なタスク、あるいは、実行すべき処理内容として与えられたより抽象的な要求をも含む広い概念である。
「要求タスク」は、タスクのうち、実行すべき処理内容として与えられた要求を意味しており、一般的には、さらに具体化可能な抽象的な要求であるが、それ以上具体化できないそのまま実行可能な最小処理単位のタスクが要求タスクとして与えられる場合もある。
以上のような本発明によれば、プラン実行中における他の要求の割込みを受け付けて、この割込み要求に応じて現在実行中のプランを柔軟に変更可能な、ユーザ満足度の高いコンピュータ制御を実現するプラン実行方法とそのシステム、プログラムを提供することができる。
[1.システム構成]
図1は、本発明を適用したプラン実行システムの構成の概略を示すブロック図である。この図1に示すように、プラン実行システムは、要求受付部110、プラン作成部120、ルール格納部130、プラン格納部140、プラン実行管理部150、タスク実行部160、等を備えている。各部の機能は次の通りである。
要求受付部110は、ユーザから与えられたタスクの実行要求を要求タスクとして受け付ける。プラン作成部120は、予め設定されたタスク分解ルールに従って、要求タスクをより具体的なタスクに分解するタスク分解処理を行い、要求タスクを具体的に実行するためのプランとして、1つ以上のそのまま実行可能なタスクの実行順序を表現するプランを作成する。プラン作成部120はまた、プラン中の各タスクの実行時に他の要求タスクが受け付けられた場合に、当該要求タスクを実行中の当該プランに挿入するタスク挿入処理を行い、挿入した当該要求タスクに対してタスク分解処理を行うことで、当該プランを修正する。
ルール格納部130には、プラン作成部120によるタスク分解処理に使用されるタスク分解ルールが予め格納される。プラン格納部140には、プラン作成部120で作成されたプランが格納される。
プラン実行管理部150は、作成されたプランに従って、当該プラン中のタスクの実行順序を決定し、この実行順序でタスク実行の指示を行うことにより、タスクの実行を管理する。プラン実行管理部150はまた、実行中のプランが修正された場合に、この修正後の当該プランに従ってタスク実行の指示を行う。タスク実行部160は、タスク実行の指示に従って、プラン中の各タスクを順次実行する。
なお、このようなプラン実行システムは、具体的には、コンピュータのメインメモリとそれに記憶されたプラン実行用として特化されたプログラム、そのプログラムによって制御されるCPUなどのデータ処理部、必要なデータを格納する補助記憶装置などのデータ格納部、マウスやキーボード、ディスプレイなどのユーザインタフェース部、等により実現される。ここで挙げたハードウェア資源は、コンピュータが一般的に備えている基本的な構成要素であるため、これ以上の説明は省略する。
[2.プランの表現形式]
本実施形態において、プラン作成部120により作成されるプランは、複数個のタスクの並び順でこれらのタスクの実行順序を表現すると共に、各タスクペア(連続して並ぶ各2個のタスク)について、このタスクペア中における2個のタスク間の結合が強結合と弱結合のいずれであるかを表現するものである。
ここで、プラン中の「複数個のタスク」の各々は、一般的にタスクと称されるそのまま実行可能な処理単位としてのタスク、あるいは、それ自体が複数個のタスクの実行順序を表現するプランである。また、作成中のプランにおいては、さらに分解可能なより抽象的なタスクが一時的に含まれる場合もある。以下では、説明の明瞭化の観点から、作成されるプラン全体とこのプラン中における1個のタスクとして存在する下位のプランの両方に言及する場合に、当該下位のプランを、「サブプラン」と呼ぶ。
また、「強結合」は、当該タスクペア中の2個のタスク間への他のタスクの挿入を不可とする比較的強い結合を意味しており、「弱結合」は、当該タスクペア中の2個のタスク間に他のタスクを挿入可能な比較的弱い結合を意味している。以下では、説明の簡略化の観点から、2個のタスク間が強結合のタスクペアを「強結合タスクペア」と呼び、2個のタスク間が弱結合のタスクペアを「弱結合タスクペア」と呼ぶ。
本実施形態においては、このような「複数個のタスク」と、各タスクペア間の「強結合」と「弱結合」を表現するために、次の表1に示すような表現形式を採用する。
Figure 0004005984
この表1において、強結合記述と弱結合記述のいずれも、同じ種別の結合で連続する複数個のタスクを特定するタスク特定記述([task1, ..., taskn])を含む。このタスク特定記述([task1, ..., taskn])は、複数個(n個、nは2以上の整数)のタスクの並び順でこれらのタスクの実行順序を表現するタスク列記述task1, ..., tasknと、複数個のタスクの始点と終点を示す範囲区分記述([ ])を組み合わせたものである。ここでは、範囲区分記述の一例として、小括弧( )と大括弧[ ]という二種類の括弧を組み合わせた記述([ ])を使用しているが、範囲区分記述として他の形式の記述を使用してもよい。
強結合記述strong([task1, ..., taskn])は、強結合を表現する強結合種別記述strongと、タスク特定記述([task1, ..., taskn])を組み合わせたものである。この強結合記述strong([task1, ..., taskn])は、複数個のタスクtask1, ..., tasknの全てが強結合で連続しており、したがって、複数個のタスクtask1, ..., taskn中の全てのタスクペアに強結合が存在することを表現している。より詳細に説明すれば、この強結合記述strong([task1, ..., taskn])は、n個のタスクtask1, ..., tasknにおいて、kを1からn−1までのいずれかの整数とした場合に、全てのkについて、タスクペア(taskk, taskk+1)の2個のタスクtaskk, taskk+1の間に、他のタスクを挿入してはならないことを表現している。
弱結合記述weak([task1, ..., taskn])は、弱結合を表現する弱結合種別記述weakと、タスク特定記述([task1, ..., taskn])を組み合わせたものである。この弱結合記述weak ([task1, ..., taskn])は、複数個のタスクtask1, ..., tasknの全てが弱結合で連続しており、したがって、複数個のタスクtask1, ..., taskn中の全てのタスクペアに弱結合が存在することを表現している。より詳細に説明すれば、この弱結合記述weak([task1, ..., taskn])は、n個のタスクtask1, ..., tasknにおいて、kを1からn−1までのいずれかの整数とした場合に、全てのkについて、タスクペア(taskk, taskk+1)の2個のタスクtaskk, taskk+1の間に、他のタスクを挿入可能であることを表現している。
プラン実行中に他のタスクの実行要求を要求タスクとして受け付けた場合には、現在実行中のプラン中において、弱結合記述で表現される弱結合の部分に、当該要求タスクを割り込ませることが可能である。
なお、実際のプランは、概して強結合と弱結合の両方を含み、この場合の記述は、弱結合記述中のタスク列の一部に強結合記述が含まれる形となる。例えば、図2に示すように、順次実行される4個のタスクtask1, task2, task3, task4について、第1と第2のタスクtask1, task2間が強結合、第2と第3のタスクtask2, task3間が弱結合、第3と第4のタスクtask3, task4間が強結合、である場合に、このプランは、weak([strong([task1, task2]), strong([task3, task4])])と記述される。
この図2に示すプランweak([strong([task1, task2]), strong([task3, task4])])においては、タスクペア(task1, task2)とタスクペア(task3, task4)は、強結合タスクペアであり、タスクペア(task2, task3)は、弱結合タスクペアである。このため、弱結合タスクペア(task2, task3)における第2と第3のタスクtask2, task3間の弱結合の部分に他のタスクtaskを挿入することができる。
このように新たなタスクtaskを第2と第3のタスクtask2, task3間に弱結合挿入方式で挿入した場合に、プランweak([strong([task1, task2]), strong([task3, task4])])は、プランweak([strong([task1, task2]), task, strong([task3, task4])])に変更される。
なお、この場合、プランの記述上では、強結合タスクペアを表現する強結合記述strong([task1, task2])と強結合記述strong([task3, task4])]は、プラン全体に対するサブプランである。すなわち、サブプランstrong([task1, task2])とサブプランstrong([task3, task4])]は、各サブプランの途中にタスクを挿入できないことから、プラン全体を構成する個々のタスクに相当し、かつ、これらのサブプラン間は弱結合であるため、この意味で、サブプランstrong([task1, task2])とサブプランstrong([task3, task4])]は、弱結合タスクペアである。このため、プランの記述上では、弱結合タスクペアであるサブプランstrong([task1, task2])とサブプランstrong([task3, task4])]の間に、新たなタスクtaskが挿入されたとみなすことができる。
[3.処理手順の概要]
図3は、図1に示すプラン実行システムにおける全体的な処理手順の概要を示すフローチャートである。この図3に示すように、まず、要求受付部110により、ユーザから与えられたタスクの実行要求を要求タスクとして受け付ける(S1)。次に、プラン作成部120により、タスク分解処理として、ルール格納部130に格納されたタスク分解ルールに従って要求タスクを分解し、実行可能なタスクからなるプランを作成し、プラン格納部140に格納する(S2)。次に、プラン実行管理部150により、プラン格納部140に格納されているプランに従って1つのタスクの実行指示を行い、タスク実行部160により、当該タスクを実行する(S3)。
この後、非同期的に別のタスクの実行要求がなされ、要求受付部110により、この要求タスクを受け付けた場合(S4のYES)には、プラン作成部120により、タスク挿入処理としてこの要求タスクを実行中のプランに挿入し(S5)、挿入された要求タスクのタスク分解処理を行い、実行可能なタスクからなる新たなプランを作成する(S2)。非同期的な別のタスクの実行要求がない場合(S4のNO)には、プラン中に未実行のタスクがある限り(S6のNO)、プランに従って次のタスクを実行する(ステップ3)。そして、プラン中のタスクを全て実行した時点(S6のYES)で、当該プランに関する処理を終了する。
[4.タスク挿入処理]
[4−1.基本的な処理手順]
図4は、図3に示す処理手順のうち、タスク挿入処理(S5)の基本的な処理手順を示すフローチャートである。この図4に示すように、タスク挿入処理においてはまず、挿入位置判定処理として、要求タスクに対し、当該プラン中において予め設定された挿入位置条件を満足する部分の有無について挿入位置判定を行い(S501)、次に、挿入実行処理として、この挿入位置判定の結果に応じて挿入位置を決定して当該要求タスクを挿入する(S502)。
この場合、「挿入位置条件」は、要求タスクの挿入位置を判定するために予め設定された条件であり、次の表2に示すように、少なくとも「基本条件」を含み、選択的に「付加条件」が追加される。この表2に示すように、「基本条件」は、「弱結合タスクペア中の後タスクが未実行である」という内容の条件であり、挿入位置判定処理(S501)においては、少なくとも「基本条件を満足するタスクペア」が存在するか否かの判定を行うことになる。
Figure 0004005984
また、挿入実行処理(S502)においては、挿入位置を決定して要求タスクを挿入するためのタスク挿入方式として、「弱結合挿入方式」、「強結合挿入方式」、「末尾挿入方式」、という3つの方式の中から選択された方式により要求タスクの挿入を実行する。次の表3は、これらの3つの方式の内容として、挿入位置、および挿入先との結合関係をそれぞれ示している。
Figure 0004005984
この表3に示すように、「弱結合挿入方式」と「強結合挿入方式」はいずれも、「挿入位置条件を満足するタスクペア中の2個のタスク間」を挿入位置としており、挿入先との結合関係のみが異なる。すなわち、「弱結合挿入方式」は、挿入先の2個のタスクとそれぞれ弱結合となるようにタスクを挿入する方式であるが、「強結合挿入方式」は、挿入先の少なくとも一方のタスクと強結合となるようにタスクを挿入する方式である。なお、ここでは、説明の簡略化の観点から、挿入位置条件が、基本条件のみを含む場合、すなわち、「挿入位置条件を満足するタスクペア」が「基本条件を満足するタスクペア」である場合について説明する。
より詳細に説明すれば、「基本条件を満足するタスクペア」は、当該プラン中のn個のタスクtask1, ..., tasknにおいて、kを1からn−1までのいずれかの整数とした場合に、タスクペア(taskk, taskk+1)の2個のタスクtaskk, taskk+1の間が弱結合であり、当該タスクペア中の後タスクtaskk+1が未実行であるような、弱結合タスクペア(taskk, taskk+1)である。したがって、「弱結合挿入方式」と「強結合挿入方式」による挿入位置は、この弱結合タスクペア(taskk, taskk+1)中の2個のタスクtaskk, taskk+1の間となる。
このような挿入位置に対して、「弱結合挿入方式」により新たなタスクtaskを弱結合で挿入する処理は、プランの記述上では、弱結合記述で記述されるプランweak(..., taskk, task+1, ...)をプランweak(..., taskk, task, task+1, ...)に置換する処理として実現できる。
これに対して、「強結合挿入方式」により新たなタスクtaskを強結合で挿入する処理は、プランの記述上では、例えば、新たなtaskを挿入先の弱結合タスクペア(taskk, taskk+1)の前タスクtaskkと強結合となるように挿入する場合であれば、当該前タスクtaskkを強結合記述のサブプランstrong(taskk, task)に置換する処理として実現できる。同様にして、後タスクと強結合となるように挿入したり、あるいは、両方のタスクと強結合となるように挿入することも可能である。
図2のプランの例で説明すれば、プランweak([strong([task1, task2]), strong([task3, task4])])中のサブプランstrong([task1, task2])とサブプランstrong([task3, task4])の間は弱結合であるため、前者のサブプランstrong([task1, task2])を実行中であり、後者のサブプランstrong([task3, task4])をまだ実行していなければ(つまり、task3をまだ実行していなければ)、これら2個のサブプランstrong([task1, task2]), strong([task3, task4])は、「基本条件を満足するタスクペア」である。したがって、これらのサブプランstrong([task1, task2])と, strong([task3, task4])との間が挿入位置となる。
このようなサブプランstrong([task1, task2])とサブプランstrong([task3, task4])の間を挿入位置として、「弱結合挿入方式」により新たなタスクtaskを挿入する場合には、プランweak([strong([task1, task2]), strong([task3, task4])])は、プランweak([strong([task1, task2]), task, strong([task3, task4])])に変更される。
これに対して、サブプランstrong([task1, task2])とサブプランstrong([task3, task4])の間を挿入位置として、「強結合挿入方式」により、前者のサブプランと強結合となるように新たなタスクtaskを挿入する場合には、strong([task1, task2])をstrong([task1, task2, task])に置換することにより、プランweak([strong([task1, task2]), strong([task3, task4])])は、プランweak([strong([task1, task2, task]), strong([task3, task4])])に変更される。
このような「強結合挿入方式」は、挿入先のタスクと挿入するタスクとの間に関連性がある場合等に有効な方式である。すなわち、例えば、タスク「A地点に行く」とタスク「B地点に行く」の間に、別のタスク「A地点でCを行う」を、タスク「A地点に行く」と強結合となるように挿入することにより、タスクの実行を合理的に実現できる。
一方、「末尾挿入方式」は、現在実行中のプランの末尾を挿入位置として、末尾のタスクと弱結合となるようにタスクを挿入する方式である。より詳細に説明すれば、「末尾挿入方式」による挿入位置は、当該プラン中のn個のタスクtask1, ..., tasknの末尾のタスクtasknの後である。このような挿入位置に対して、「末尾挿入方式」により新たなタスクtaskを弱結合で挿入する処理は、プランの記述上では、弱結合記述で記述されるプランweak(task1, ..., taskn)をプランweak(task1, ..., taskn, task)に置換する処理として実現できる。この処理は、プラン全体をplanと記述した場合には、このプランplanをプランweak(plan, task)に変更する処理となる。
このような「末尾挿入方式」は、実行中のプランの実行時間が比較的短く、要求タスクをプラン中に挿入しなくてもすぐに実行可能である場合や、プランに比べて挿入しようとするタスクの優先度が低い場合等に有効な方式である。
[4−2.関連性と優先度を考慮した処理手順]
図5は、タスク挿入処理(S5)のより応用的な処理手順として、関連性と優先度を考慮した場合の処理手順の一例を示すフローチャートである。
この図5に示すタスク挿入処理においては、「基本的な挿入位置判定処理」(S510)、「関連性を考慮した挿入位置判定処理」(S520)、「優先度を考慮した挿入位置判定処理」(S530)、を行い、挿入位置判定の結果に応じて、「関連性条件該当時の挿入実行処理」(S540)、「優先度条件該当時の挿入実行処理」(S550)、「挿入位置条件非該当時の挿入実行処理」(S560)、を行う。以下には、この処理手順の詳細について順次説明する。
まず、「基本的な挿入位置判定処理」(S510)においては、「基本条件を満足するタスクペア」が存在するか否かを判定する。「基本条件を満足するタスクペア」が存在しない場合(S510のNO)には、「挿入位置条件非該当時の挿入実行処理」(S560)において、当該プランの末尾に、「末尾挿入方式」により要求タスクを挿入する。
また、「基本条件を満足するタスクペア」が存在する場合(S510のYES)には、「関連性を考慮した挿入位置判定処理」(S520)において、「関連性条件を満足するタスクペア」が存在するか否かを判定する。この判定の結果、「関連性条件を満足するタスクペア」が存在しない場合(S520のNO)には、続いて、「優先度を考慮した挿入位置判定処理」(S530)において、「優先度条件を満足するタスクペア」が存在するか否かを判定する。
ここで、「関連性条件」と「優先度条件」は、関連性と優先度を考慮して要求タスクの挿入位置を判定するために予め設定された挿入位置条件であり、「基本条件」との関係では、前記表2に示した「付加条件」に相当するものである。すなわち、図5に示すタスク挿入処理において使用される「挿入位置条件」は、次の表4に示すように、「基本条件」、「関連性条件」、「優先度条件」、から構成される。
Figure 0004005984
この表4に示すように、「基本条件」は、前記表2に示した「基本条件」と同様である。したがって、「基本的な挿入位置判定処理」(S510)の処理手順は、図4における「挿入位置判定処理」について説明した処理手順と同様である。
また、「関連性条件」は、前記表2に示した付加条件に相当するものであり、「基本条件を満足するタスクペア中の前タスクと要求タスクとの間に関連性がある」という内容の条件である。したがって、「関連性を考慮した挿入位置判定処理」(S520)における「関連性条件を満足するタスクペア」の有無の判定は、「基本条件を満足するタスクペア」が「関連性条件」を満足するか否かを判定することになる。
より詳細に説明すれば、「基本条件を満足するタスクペア」は、前述したとおり、当該プラン中において、タスクペア(taskk, taskk+1)の2個のタスクtaskk, taskk+1の間が弱結合であり、当該タスクペア中の後タスクtaskk+1が未実行であるような、弱結合タスクペア(taskk, taskk+1)である。
したがって、「関連性を考慮した挿入位置判定処理」(S520)においては、上記のような「基本条件を満足するタスクペア」(taskk, taskk+1)が存在する場合に、このタスクペア(taskk, taskk+1)が「関連性条件」を満足するか否か、すなわち、タスクペア(taskk, taskk+1)の前タスクtaskkが挿入しようとするタスクtaskと関連性があるか否かを判定することになる。この場合、前タスクtaskkがサブプランである場合には、このサブプラン中の最後に実行されるタスクがタスクtaskと関連性があるか否かを判定することになる。
図2のプランの例で説明すれば、前述したとおり、2個のサブプランstrong([task1, task2]), strong([task3, task4])のうち、前者のサブプランstrong([task1, task2])を実行中であり、サブプランstrong([task3, task4])をまだ実行していなければ、「基本条件を満足するタスクペア」は、これら2個のサブプランstrong([task1, task2]), strong([task3, task4])である。
そして、このような「基本条件を満足するタスクペア」(strong([task1, task2]), strong([task3, task4]))中の前タスクであるサブプランstrong([task1, task2])と要求タスクtaskとの間、したがって、サブプランstrong([task1, task2])中のタスクtask2と要求タスクtaskとの間に関連性があるか否かを判定し、関連性がある場合には、このタスクペア(strong([task1, task2]), strong([task3, task4]))は、「関連性条件を満足するタスクペア」である。
「関連性を考慮した挿入位置判定処理」(S520)において、「関連性条件を満足するタスクペア」が存在する場合(S520のYES)には、「関連性条件該当時の挿入実行処理」(S540)において、当該タスクペア中の2個のタスク間に「弱結合挿入方式」または「強結合挿入方式」により要求タスクを挿入する。
この場合、「弱結合挿入方式」または「強結合挿入方式」の選択法としては、例えば、関連性が予め設定されたレベルより高いか低いかに応じて、関連性が高い場合には「強結合挿入方式」を選択し、関連性が低い場合には「弱結合挿入方式」を選択することが考えられるが、これに限定されるものではない。
別の選択法として、例えば、現在実行中のプランの実行時間が予め設定された時間より長いか短いかに応じて、実行時間が長い場合には「強結合挿入方式」を選択し、実行時間が短い場合には「弱結合挿入方式」を選択してもよい。あるいはまた、関連性の程度と関係なく、予め設定されたいずれか一方の方式を選択したり、要求タスクに関するユーザからの指示に応じた方式を選択したりすることも可能である。
一方「優先度条件」は、前記表2に示した付加条件に相当するものであり、「基本条件を満足するタスクペア中の後タスク以降に要求タスクより優先度の高いタスクが存在しない」という内容の条件である。したがって、「優先度を考慮した挿入位置判定処理」(S530)における「優先度条件を満足するタスクペア」の有無の判定は、「基本条件を満足するタスクペア」が「優先度条件」を満足するか否かを判定することになる。
より詳細に説明すれば、「基本条件を満足するタスクペア」は、前述したとおり、当該プラン中において、タスクペア(taskk, taskk+1)の2個のタスクtaskk, taskk+1の間が弱結合であり、当該タスクペア中の後タスクtaskk+1が未実行であるような、弱結合タスクペア(taskk, taskk+1)である。
したがって、「優先度を考慮した挿入位置判定処理」(S530)においては、このような「基本条件を満足するタスクペア」(taskk, taskk+1)が存在する場合に、このタスクペア(taskk, taskk+1)が「優先度条件」を満足するか否か、すなわち、タスクペア(taskk, taskk+1)の後タスクtaskk+1以降に挿入しようとするタスクtaskより優先度の高いタスクが存在しないか否かを判定することになる。
図2のプランの例で説明すれば、前述したとおり、2個のサブプランstrong([task1, task2]), strong([task3, task4])のうち、前者のサブプランstrong([task1, task2])を実行中であり、サブプランstrong([task3, task4])をまだ実行していなければ、「基本条件を満足するタスクペア」は、これら2個のサブプランstrong([task1, task2]), strong([task3, task4])である。
そして、このような「基本条件を満足するタスクペア」(strong([task1, task2]), strong([task3, task4]))中の後タスクであるサブプランstrong([task3, task4]))以降のタスク、したがって、サブプランstrong([task3, task4])中のタスクtask3, task4と要求タスクtaskとの間で優先度を比較し、要求タスクtask の優先度が、task3, task4の優先度以上である場合には、このタスクペア(strong([task1, task2]), strong([task3, task4]))は、「優先度条件を満足するタスクペア」である。
「優先度を考慮した挿入位置判定処理」(S530)において、「優先度条件を満足するタスクペア」が存在する場合(S530のYES)には、「優先度条件該当時の挿入実行処理」(S550)において、当該タスクペア中の2個のタスク間に「弱結合挿入方式」により要求タスクを挿入する。
なお、「関連性を考慮した挿入位置判定処理」(S520)において、「関連性条件を満足するタスクペア」が存在する場合(S520のYES)、あるいは、「優先度を考慮した挿入位置判定処理」(S530)において、「優先度条件を満足するタスクペア」が存在する場合(S530のYES)に、該当するタスクペアが複数存在する可能性がある。このような場合には、「関連性条件該当時の挿入実行処理」(S540)あるいは「優先度条件該当時の挿入実行処理」(S550)において、該当する複数のタスクペアのうち、実行順序が最先となる1つのタスクペアを挿入先のタスクペアとして選択すればよい。
あるいはまた、関連性条件を満足する複数のタスクペアについては、前述したような、関連性のレベル、プランの実行時間、等の選択基準に基づいて1つのタスクペアを選択してもよい。
「基本的な挿入位置判定処理」(S510)において「基本条件を満足するタスクペア」が存在しない場合(S510のNO)、および、「優先度を考慮した挿入位置判定処理」(S530)において「優先度条件を満足するタスクペア」が存在しない場合(S530のNO)には、「挿入位置条件非該当時の挿入実行処理」(S560)において、当該プランの末尾に、「末尾挿入方式」により要求タスクを挿入する。
なお、図5の処理手順は、優先度よりも関連性を優先させた場合の処理手順を示しているが、逆に、関連性よりも優先度を優先させる処理手順も可能である。図6は、このような関連性よりも優先度を優先させる場合の処理手順の一例を示すフローチャートである。この図6の処理手順における各処理は、図5に示した各処理と同様であり、処理の流れのみが異なるため、同じ処理については同じ符号で示し、個々の処理の説明は省略する。
[5.タスク分解処理]
ルール格納部130には、タスク分解処理(S2)に使用されるタスク分解ルールとして、分解対象のタスクをより具体的なタスクに分解するための「通常のタスク分解ルール」と、分解対象のタスクが、実行不要なタスクであることを示す「実行不要ルール」という2種類のルールが格納されている。本実施形態においては、このような「通常のタスク分解ルール」と「実行不要ルール」を表現するために、次の表5に示すような表現形式を採用する。
Figure 0004005984
この表5において、taskは分解対象のタスクを表現する対象タスク記述である。また、planは、タスクtaskの分解の詳細な内容を表現する分解詳細記述である。この分解詳細記述によって表現される内容は、「タスクtaskより具体的なタスク」の実行順序を表現する「プラン」である。「通常のタスク分解ルール」と「実行不要ルール」の両方において、末尾のドット「.」は、各ルールの終点を示すルール区分記述である。
「通常のタスク分解ルール」においては、コロン「:」とマイナス「−」の組み合わせ「:−」により、その前後の記述を関連付けると共に、前方の記述が対象タスク記述であり、後方の記述が分解詳細記述であることを示している。また、「実行不要ルール」においては、対象タスク記述とルール区分記述との組み合わせにより、当該タスクtaskが何も実行しなくてもよいタスクであることを示している。
ルール格納部130には、受付が想定される全ての要求タスクに応じて、想定される全てのタスク分解処理に必要なタスク分解ルールが予め格納されている。したがって、受付可能な要求タスクが増える毎に、この増えた要求タスクに応じたタスク分解ルールが随時追加されることになる。
図7は、表5に示すようなタスク分解ルールを使用した場合における、タスク分解処理(S2)の基本的な処理手順を示すフローチャートである。この図7に示すように、まず、当該プラン中のタスクのうち、直接実行することが不可能な抽象的なタスクtaskを1つ選択する(S201)。次に、ルール格納部130を参照して、タスクtaskのタスク分解ルールを取得する(S202)。ここでは、説明の簡略化の観点から、同一のタスクに対しては、1つのタスク分解ルールのみが格納されているものとする。しかし、別の方法として、同一のタスクに対して、複数のタスク分解ルールを格納しておき、各種の条件に応じて1つのタスク分解ルールを選択するようにしてもよい。
取得したタスク分解ルールが実行不要ルールである場合(S203のYES)には、当該プランの中からステップS201で選択したタスクtaskを消去する(S204)。これに対して、取得したタスク分解ルールが通常のタスク分解ルールである場合(S203のNO)、当該タスク分解ルールに従って当該プラン中のステップS201で選択したタスクtaskを分解し、当該タスク分解ルールの分解詳細記述により表現されるより具体的なタスクまたはプランplanに変更する(S205)。プラン内に抽象的なタスクが存在する限り(S206のYES)、一連の処理(S201〜S205)を繰り返し、プラン内のタスクが全て実行可能な具体的なタスクとなった段階(S206のNO)で、タスク分解処理を終了する。
[6.実施例]
[6−1.タスクの抽象度とタスク分解ルールの定義]
上記のようなプラン実行システムによる具体的な実施例を説明するために、前提として、タスクの抽象度とタスク分解ルールについて次のように定義する。
まず、図8に示すように、タスクの抽象度に応じて、最も抽象的な抽象レベルタスク、そのまま実行可能な最も具体的な実行レベルタスク、前記2つのタスク間の中間のレベルにある中間レベルタスク、という3段階のタスクが存在するものとする。なお、実際のタスク分解においては、最も抽象的なレベルから実行可能な具体的なレベルまで、より多段階のレベルのタスクが存在する場合もある。
また、このような3段階のタスクに応じて、タスク分解ルールについても、次の表6に示すように、抽象レベルタスクを中間レベルタスクに分解するための「基本分解ルール」と中間レベルタスクを実行レベルタスクに分解するための「最終分解ルール」という2種類のルールを定義している。
Figure 0004005984
[6−2.ロボットのタスク実行処理例]
以下には、具体的な実施例として、プラン実行システムを実現するコンピュータを搭載したロボットのコンピュータ制御を行う場合におけるタスク実行処理の一例について説明する。
ここでは、ユーザからの、「ロボットがtomとbobの2人にhelloと言う」ことを実行させる内容のタスクgoAroundAndSayHello(tom, bob)が受付可能であるとし、この場合に、ルール格納部130には、次の表7に示すような具体的なタスク分解ルールが予め格納されているとする。
Figure 0004005984
[6−2−1.プラン作成]
初めに、ユーザからロボットに、優先度「5」のタスクgoAroundAndSayHello(tom, bob)の実行が要求されたとする。ロボットは、このタスクを、要求タスクとして受け付け、「ルール1」を使って分解し、次のプランに詳細化する。
weak([goAndSayHello(tom), goAndSayHello(bob)])
このプランは、さらに分解可能であるため、以下には、「作成途中プラン1」と呼ぶ。
このタスク分解処理は、「ルール1」という「基本分解ルール」により、「抽象レベルタスク」をより具体的な「中間レベルタスク」に分解したことを意味する。すなわち、ここで得られた「作成途中プラン1」は、「中間レベルタスク」に相当する。
この「作成途中プラン1」に出現する2つのタスクgoAndSayHello(tom)とgoAndSayHello(bob)は、優先度「5」のタスクgoAroundAndSayHello(tom, bob)を分解して作成されているので、これらのタスクの優先度もまた「5」である。ここで、タスクgoAndSayHello(tom)はキーワードtomに関連し、タスクgoAndSayHello(bob)はキーワードbobに関連するということがわかっていることとする。
次に、ロボットは、「ルール2」を使って、この「作成途中プラン1」の中に出現する優先度「5」のタスクgoAndSayHello(tom)をさらに分解し、次のプランに詳細化する。
weak([strong([goto(tom), say(hello)]), goAndSayHello(bob)])
このプランは、さらに分解可能であるため、以下には、「作成途中プラン2」と呼ぶ。
このタスク分解処理は、「ルール2」という「最終分解ルール」により、「中間レベルタスク」をより具体的な「実行レベルタスク」に分解したことを意味する。すなわち、ここで得られた「作成途中プラン2」中のサブプランstrong([goto(tom), say(hello)])は、「実行レベルタスク」に相当する。
「作成途中プラン2」の中に出現する3つのタスクgoto(tom), say(hello), goAndSayHello(bob)は、優先度「5」のタスクを分解して作成されているので、これらのタスクgoto(tom), say(hello), goAndSayHello(bob)の優先度は全て「5」である。また、goto(tom)と say(hello)は、キーワードtomに関連するタスクを分解して作成されているので、キーワードtomに関連する。ここで、タスクgoto(tom)とタスクsay(hello)の間は、強結合であるが、サブプランstrong([goto(tom), say(hello)])とタスクgoAndSayHello(bob)の間、つまり、タスクsay(hello)とタスクgoAndSayHello(bob)の間は、弱結合である。
同様にして、「ルール3」を使って、この「作成途中プラン2」の中のタスクgoAndSayHello(bob)をさらに分解し、次のプランに詳細化する。
weak([strong([goto(tom), say(hello)]), strong([goto(bob), say(hello)])])
このプランは、そのまま実行可能なプランであるため、以下には、「実行プラン1」と呼ぶ。
このタスク分解処理は、「ルール3」という「最終分解ルール」により、「中間レベルタスク」をより具体的な「実行レベルタスク」に分解したことを意味する。すなわち、ここで得られた「実行プラン1」中のサブプランstrong([goto(bob), say(hello)])は、「実行レベルタスク」に相当する。
「実行プラン1」の中に出現する4つのタスクgoto(tom), say(hello), goto(bob), say(hello)は、優先度「5」のタスクを分解して作られているので、これらのタスクgoto(tom), say(hello), goto(bob), say(hello)の優先度は全て「5」である。また、3番目のタスクgoto(bob)と4番目のタスクsay(hello)は、キーワードbobに関連するタスクを分解して作成されているので、キーワードbobに関連する。一方、1番目のタスクgoto(tom)と2番目のタスクsay(hello)は、前述したとおり、キーワードtomに関連する。ここで、タスクgoto(tom)とタスクsay(hello)の間は強結合であり、タスクsay(hello)とタスクgoto(bob)の間は弱結合であり、タスクgoto(bob)とタスクsay(hello)の間は強結合である。
[6−2−2.動的なプラン修正の詳細]
ここでは、以上のようにして作成された実行可能なプランを新たなタスクの挿入により別の実行可能なプランに修正することを「プラン修正」と定義し、以上のようにして作成された「実行プラン1」の実行を開始した後のプラン修正の例について説明する。
まず、「実行プラン1」の実行を開始して、1番目のタスクgoto(tom)を実行した直後(または1番目のタスクを実行中)に、優先度「10」のタスクgoAndSayHello(mary)の実行要求をユーザから受け取ったとする。また、タスクgoAndSayHello(mary)はキーワードmaryに関連することがわかっていることとする。この場合に、タスクgoAndSayHello(mary)の優先度「10」は、現在実行中の「実行プラン1」の優先度「5」よりも高いため、ロボットは、できるだけ早くこの優先度の高い新たなタスクを実行しなければならない。
この場合、「実行プラン1」中の1番目のタスクgoto(tom)と2番目のタスクsay(hello)の間は、強結合なので、タスクの挿入は無理である。実際に、この位置にタスクgoAndSayHello(mary)を挿入してしまうと、tomにhelloと言う前にtomから離れてしまうことになり、不都合である。これに対して、「実行プラン1」中の2番目のタスクsay(hello)と3番目のタスクgoto(bob)の間、つまり、サブプランstrong([goto(tom), say(hello)])とタスクgoto(bob)の間は、弱結合なので、この位置には、タスクを挿入できる。
そして、サブプランstrong([goto(tom), say(hello)])とタスクgoto(bob)の間に新たなタスクgoAndSayHello(mary)を弱結合挿入方式で挿入すると、「実行プラン1」は、次のプランに変更される。
weak([strong([goto(tom), say(hello)]), goAndSayHello(mary), strong([goto(bob), say(hello)])])
このプランは、さらに分解可能であるため、以下には、「修正途中プラン1」と呼ぶ。
この「修正途中プラン1」の中で、既存の4つのタスクgoto(tom), say(hello), goto(bob), say(hello)の優先度は「5」であるが、新たに挿入されたタスクgoAndSayHello(mary)の優先度は「10」である。
次に、「ルール4」を使って、この「修正途中プラン1」中の新たなタスクgoAndSayHello(mary)を分解し、次のプランに詳細化する。
weak([strong([goto(tom), say(hello)]), strong([goto(mary), say(hello)]), strong([goto(bob), say(hello)])])
このプランは、そのまま実行可能なプランであるため、以下には、「実行プラン2」と呼ぶ。
この「実行プラン2」の中で、キーワードmaryに関連する優先度「10」のタスクを分解して作成された3番目のタスクgoto(mary)と4番目のタスクsay(hello)は、いずれも、優先度「10」であり、キーワードmaryに関連する。1番目のタスクgoto(tom)と2番目のタスクsay(hello)は、プラン修正前と同様に、優先度「5」であり、キーワードtomに関連する。5番目のタスクgoto(bob)と6番目のタスクsay(hello)もまた、プラン修正前と同様に、優先度「5」であり、キーワードbobに関連する。
プラン修正前の「実行プラン1」の段階で、すでに1番目のタスクgoto(tom)を実行しているので、この「実行プラン2」の実行において、順調にいけば、ロボットは、say(hello)、goto(mary)、say(hello)、 goto(bob)、say(hello)の順にタスクを実行していくことになる。つまり、tomにhelloと言い、次に、maryのところへ行き、maryにhelloと言い、続いて、bobのところへ行き、bobにhelloと言うことになる。
[6−2−3.優先度と関連性に応じたタスク挿入例]
以下には、上記のようにプラン修正された「実行プラン2」の実行中において、タスクの優先度と関連性に応じて新たなタスクを挿入する場合の例について説明する。なお、プラン中に挿入されたタスクは、実際には、上記のように実行レベルタスクまで分解されるが、以下の説明中では、説明の簡略化の観点から、便宜上、挿入時のタスクを抽象的な形でそのまま示している。
まず、「実行プラン2」について、2番目のタスクsay(hello)を実行した直後(または2番目のタスクの実行中)に、優先度「3」のタスクgoAndSayHello(taro)の実行要求をユーザから受け取ったとする。また、タスクgoAndSayHello(taro)はキーワードtaroに関連することがわかっていることとする。この場合に、タスクgoAndSayHello(taro)の優先度「3」は、「実行プラン2」中のタスクの優先度「5」、「10」に比べて低いため、このタスクgoAndSayHello(taro)は、末尾挿入方式により「実行プラン2」の末尾に弱結合で挿入される。
この結果、「実行プラン2」は、次のプランに変更される。
weak([weak([strong([goto(tom), say(hello)]), strong([goto(mary), say(hello)]), strong([goto(bob), say(hello)])]), goAndSayHello(taro)])
このプラン中において、挿入されたタスクgoAndSayHello(taro)は、さらに分解可能であるが、前述したように、説明の簡略化の観点から、このプランをそのまま実行可能なプランとみなし、「実行プラン3」と呼ぶ。
この「実行プラン3」の中で、1番目のタスクgoto(tom)と2番目のタスクsay(hello)は、優先度「5」であり、キーワードtomに関連する。3番目のタスクgoto(mary)と4番目のタスクsay(hello)は、優先度「10」であり、キーワードmaryに関連する。5番目のタスクgoto(bob)と6番目のタスクsay(hello)は、優先度「5」であり、キーワードbobに関連する。7番目のタスクgoAndSayHello(taro)は、優先度「3」であり、キーワードtaroに関連する。
次に、この「実行プラン3」について、3番目のタスクgoto(mary)を実行した直後(または3番目のタスクの実行中)に、優先度「7」のタスクgoAndSayHello(hanako)の実行要求をユーザから受け取ったとする。また、タスクgoAndSayHello(hanako)はキーワードhanakoに関連することがわかっていることとする。この場合に、タスクgoAndSayHello(hanako)の優先度「7」は、「実行プラン3」中の3番目のタスクgoto(mary)と4番目のタスク say(hello)の優先度「10」より低いが、5番目のタスク以降のタスクの優先度「5」よりは高い。このため、このタスクgoAndSayHello(hanako)は、4番目のタスクsay(hello)と5番目のタスクgoto(bob)の間、つまり、サブプランstrong([goto(mary), say(hello)])とサブプランstrong([goto(bob), say(hello)])の間に挿入される。
この結果、「実行プラン3」は、次のプランに変更される。
weak([weak([strong([goto(tom), say(hello)]), strong([goto(mary), say(hello)]), goAndSayHello(hanako), strong([goto(bob), say(hello)])]), goAndSayHello(taro)])
このプラン中において、挿入されたタスクgoAndSayHello(hanako)は、さらに分解可能であるが、前述したように、説明の簡略化の観点から、このプランをそのまま実行可能なプランとみなし、「実行プラン4」と呼ぶ。
この「実行プラン4」の中で、1番目のタスクgoto(tom)と2番目のタスクsay(hello)は、優先度「5」であり、キーワードtomに関連する。3番目のタスクgoto(mary)と4番目のタスクsay(hello)は、優先度「10」であり、キーワードmaryに関連する。5番目のタスクgoAndSayHello(hanako)は、優先度「7」であり、キーワードhanakoに関連する。6番目のタスクgoto(bob)と7番目のタスクsay(hello)は、優先度「5」であり、キーワードbobに関連する。8番目のタスクgoAndSayHello(taro)は、優先度「3」であり、キーワードtaroに関連する。
次に、この「実行プラン4」について、4番目のタスクsay(hello)を実行した直後(または4番目のタスクの実行中)に、優先度「15」のタスクshakeHandsWith(bob)の実行要求をユーザから受け取ったとする。また、タスクshakeHandsWith(bob)はキーワードbobに関連することがわかっていることとする。
この場合に、図5に示すように、関連性よりも優先度を優先すれば、新たなタスクshakeHandsWith(bob)の優先度「15」は、未実行の5番目以降の全てのタスクの優先度より高いため、4番目のタスクsay(hello)と5番目のタスクgoAndSayHello(hanako)の間、つまり、サブプランstrong([goto(mary), say(hello)])とタスクgoAndSayHello(hanako)の間に挿入することになる。
この挿入処理については、4番目のタスクの実行中に平行して処理を行っても良い。
この場合に、「実行プラン4」は、次のプランに変更される。
weak([weak([strong([goto(tom), say(hello)]), strong([goto(mary), say(hello)]), shakeHandsWith(bob), goAndSayHello(hanako), strong([goto(bob), say(hello)])]), goAndSayHello(taro)])
このプランにおいて、新たなタスクshakeHandsWith(bob)は、優先度が「15」と、最も高いために、実行されたタスクの直後で最も早く実行される弱結合の位置に挿入されている。
このプランの実行においては、bobと握手し、次に、hanakoのところへ行き、hanakoにhelloと言い、さらに、maryのところへ行き、maryにhelloと言った後に、再び、bobのところへ行き、bobにhelloと言うことになり、実際の動作としては、非合理的かつ非効率的である。
これに対して、図6に示すように、優先度よりも関連性を優先させれば、新たなタスクshakeHandsWith(bob)は、キーワードbobに関連するため、同じキーワードに関連する7番目のタスクsay(hello)と8番目のタスクgoAndSayHello(taro)の間、つまり、サブプランstrong([goto(bob), say(hello)])とタスクgoAndSayHello(taro)の間に、7番目のタスクsay(hello)と強結合となるようにして挿入することになる。
この場合に、「実行プラン4」は、次のプランに変更される。
weak([weak([strong([goto(tom), say(hello)]), strong([goto(mary), say(hello)]), goAndSayHello(hanako), strong([strong([goto(bob), say(hello)])]), shakeHandsWith(bob)]), goAndSayHello(taro)])
このプランにおいては、キーワードbobに関連する7番目のタスクsay(hello)とこの直後に挿入されたタスクshakeHandsWith(mary)の間を強結合とすることで、この部分に他のタスクは挿入不可となっている。
これにより、bobに関連するgoto(bob)とsay(hello)と shakeHandsWith(bob)をまとめて実行することができる。すなわち、このプランの実行においては、bobのところへ行き、bobにhelloと言い、さらに、bobと握手することになり、実際の動作として、合理的かつ効率的である。
なお、上記の説明では、優先度よりも関連性を優先させた場合の方が合理的かつ効率的となる場合について説明したが、優先度と関連性のいずれを優先することが有効であるかは、制御対象となる動作主体や実際に取り扱うタスクによって異なるため、プラン実行の用途や状況等の諸条件に応じて適宜選択すればよい。
また、上記の説明では、ロボットが動き回って、いろいろな人にhelloと言う場合のプランを実行しているが、このプラン実行処理は、ネットワークで繋がれた複数のコンピュータ上を移動しながら活動する「移動エージェント」が、いろいろな人のパーソナルコンピュータ上に移動し、これらのコンピュータのスピーカーや画面にhelloと出力するための処理にそのまま適用可能である。
[7.効果]
以上述べたように、本実施形態によれば、プランの実行中に他の要求が与えられた場合に、その要求を受け付けて現在実行中のプランに挿入し、実行可能なタスクに分解することによって、新たな要求に応じてプランを柔軟に変更できる。したがって、実行中のプランであっても、ユーザから新たな要求が与えられる毎にそれを実現するための最適プランへと動的に変更可能であるため、ユーザ満足度の高いコンピュータ制御を実現することができる。
[8.他の実施形態]
なお、本発明は、前述した実施形態に限定されるものではなく、本発明の範囲内で他にも多種多様な変形例が実施可能である。例えば、図面に示したシステム構成や使用するプランの表現形式等は、一例にすぎず、具体的なシステム構成や表現形式は適宜選択可能である。また、図面に示したフローチャートは、一例にすぎず、具体的な動作手順や各処理の詳細は適宜選択可能である。
さらに、本発明は、ロボットやネットワーク上の移動エージェントのリアルタイム制御に好適であるが、本発明の適用対象はこれらに限定されるものではなく、ユーザの要求に応じてプランを作成、実行する各種の分野におけるリアルタイム制御に同様に適用可能であり、同様に優れた効果が得られるものである。
本発明を適用したプラン実行システムの構成の概略を示すブロック図。 図1に示すプラン実行システムで作成されるプランにおけるタスク間の結合を説明する説明図。 図1に示すプラン実行システムにおける全体的な処理手順の概要を示すフローチャート。 図3に示す処理手順のうち、タスク挿入処理の基本的な処理手順を示すフローチャート。 図3に示すタスク挿入処理のより応用的な処理手順として、関連性と優先度を考慮した場合における処理手順の一例を示すフローチャート。 図3に示すタスク挿入処理のより応用的な処理手順として、関連性と優先度を考慮した場合における処理手順の別の一例を示すフローチャート。 図3に示すタスク分解処理の基本的な処理手順を示すフローチャート。 図1に示すプラン実行システムで使用するタスクの抽象度とタスク分解ルールの定義の一例を示す説明図。
符号の説明
110…要求受付部
120…プラン作成部
130…ルール格納部
140…プラン格納部
150…プラン実行管理部
160…タスク実行部

Claims (15)

  1. ユーザインタフェース部、データ処理部、データ格納部を備えたコンピュータを利用して、タスクの実行要求に基づいてプランを作成し、この作成したプランを実行するプラン実行方法において、
    前記ユーザインタフェース部により、前記タスクの実行要求を要求タスクとして受け付ける要求受付ステップと、
    前記データ処理部により、前記データ格納部に予め格納されたタスク分解ルールに従って、前記要求タスクをより具体的なタスクに分解するタスク分解処理を行い、1つ以上のそのまま実行可能なタスクの実行順序を表現するプランであって、且つ、複数個のタスクの並び順でこれらのタスクの実行順序を表現すると共に、連続して並ぶ2個のタスクをタスクペアと定義した場合に、各タスクペア中の2個のタスク間に、他のタスクを挿入可能な弱結合と、他のタスクの挿入を不可とする強結合、という2つの結合のいずれか一方が存在することを表現するプランを作成するプラン作成ステップと、
    前記データ処理部により、前記データ格納部に前記プランを格納するプラン格納ステップと、
    前記データ処理部により、前記プランに従って、当該プラン中の前記タスクの実行順序を決定し、この実行順序でタスク実行の指示を行うプラン実行管理ステップと、
    前記データ処理部または前記ユーザインタフェース部により、前記タスク実行の指示に従って、前記プラン中の各タスクを順次実行するタスク実行ステップを有し、
    前記プラン作成ステップは、前記プラン中の各タスクの実行時に他の要求タスクが受け付けられた場合に、当該要求タスクを実行中の当該プランの弱結合により結合された2つのタスクの間に挿入するタスク挿入処理を行い、この挿入した当該要求タスクに対して前記タスク分解処理を行うことで当該プランを修正するステップを含み、
    前記プラン実行管理ステップは、実行中の前記プランが修正された場合に、修正後の当該プランに従って前記タスク実行の指示を行うステップを含むことを特徴とするプラン実行方法。
  2. 前記タスク挿入処理は、前記要求タスクに対して前記プラン中において予め設定された挿入位置条件を満足する部分の有無について挿入位置判定を行う挿入位置判定処理と、当該挿入位置判定の結果に応じて挿入位置を決定して当該要求タスクを挿入する挿入実行処理を含み、
    前記挿入位置条件は、タスクペア中の2個のタスク間が弱結合でありかつ後タスクが未実行であるという内容の基本条件を含み、
    前記挿入位置判定処理は、少なくとも前記基本条件を満足する前記タスクペアが存在するか否かの判定を行うことを特徴とする請求項1に記載のプラン実行方法。
  3. 前記挿入実行処理は、前記挿入位置を決定して前記要求タスクを挿入するタスク挿入方式として、前記挿入位置条件を満足するタスクペア中の2個のタスク間に当該要求タスクを当該2個のタスクと前記弱結合となるように挿入する弱結合挿入方式、当該2個のタスク間にそれらの少なくとも一方と前記強結合となるように挿入する強結合挿入方式、実行中の前記プランの末尾に当該要求タスクを挿入する末尾挿入方式、という3つの方式の中から選択された方式により当該要求タスクの挿入を実行することを特徴とする請求項2に記載のプラン実行方法。
  4. 前記挿入位置条件は、前記基本条件に加えて、当該基本条件を満足するタスクペア中のタスクと前記要求タスクとの優先度の高低に関する優先度条件、または、当該基本条件を満足するタスクペア中のタスクと当該要求タスクとの関連性の有無に関する関連性条件を含み、
    前記挿入位置判定処理は、前記基本条件を満足する前記タスクペアが存在する場合に、このタスクペアが前記優先度条件または前記関連性条件を満足するか否かの判定を行うことを特徴とする請求項3に記載のプラン実行方法。
  5. 前記優先度条件は、「基本条件を満足するタスクペア中の後タスク以降に要求タスクより優先度の高いタスクが存在しない」という内容を含む条件であり、
    前記挿入実行処理は、前記優先度条件を満足する前記タスクペアが存在する場合に、前記弱結合挿入方式により当該タスクペア中の2個のタスク間に前記要求タスクを挿入することを特徴とする請求項4に記載のプラン実行方法。
  6. 前記関連性条件は、「基本条件を満足するタスクペア中の前タスクが要求タスクと関連性がある」という内容を含む条件であり、
    前記挿入実行処理は、前記関連性条件を満足する前記タスクペアが存在する場合に、前記弱結合挿入方式または前記強結合挿入方式により当該タスクペア中の2個のタスク間に前記要求タスクを挿入することを特徴とする請求項4または請求項5に記載のプラン実行方法。
  7. 前記挿入位置判定処理は、前記優先度条件および前記関連性条件のいずれか一方の条件を第1条件、他方の条件を第2条件とした場合に、当該第1条件を満足する前記タスクペアが存在するか否かの判定を行う第1の判定処理と、当該第1条件を満足する当該タスクペアが存在しない場合に、当該第2条件を満足する当該タスクペアが存在するか否かの判定を行う第2の判定処理を含むことを特徴とする請求項4乃至請求項6のいずれか1項に記載のプラン実行方法。
  8. 前記挿入実行処理は、前記挿入位置条件を満足する前記タスクペアが複数存在する場合に、前記実行順序が最先となる1つのタスクペアを選択し、このタスクペア中の2個のタスク間を前記挿入位置に決定して前記要求タスクを挿入することを特徴とする請求項2乃至請求項7のいずれか1項に記載のプラン実行方法。
  9. 前記タスクの具体化のレベルにより、前記要求タスクとして受け付け可能な最も抽象的なタスクを抽象レベルタスク、それ以上具体化できないそのまま実行可能な最小処理単位としてのタスクを実行レベルタスク、と定義した場合に、前記ルール格納部には、要求タスクとして受け付け可能な全てのタスクを最終的に実行レベルタスクに分解するために必要なルールが前記タスク分解ルールとして予め格納されていることを特徴とする請求項1乃至請求項8のいずれか1項に記載のプラン実行方法。
  10. 前記抽象レベルタスクよりも具体的で、かつ、前記実行レベルタスクよりも抽象的なタスクを中間レベルタスクと定義した場合に、前記ルール格納部には、抽象レベルタスクを中間レベルタスクに分解するために必要な基本分解ルールと、中間レベルタスクを実行レベルタスクに分解するために必要な最終分解ルールという少なくとも2段階のレベルのルールが前記タスク分解ルールとして予め格納されていることを特徴とする請求項9に記載のプラン実行方法。
  11. 前記ルール格納部には、前記タスク分解処理による分解対象となる前記タスクが何も実行する必要のないタスクであることを示す実行不要ルールが、タスク分解ルールの一部として予め格納され、
    前記タスク分解処理は、前記分解対象となるタスクについて前記実行不要ルールが存在する場合に当該タスクを消去することを特徴とする請求項9または請求項10に記載のプラン実行方法。
  12. 前記プランは、前記強結合を表現する強結合種別記述または前記弱結合を表現する弱結合種別記述に対して、同じ種別の結合で連続する複数個のタスクを特定するタスク特定記述を組み合わせることにより、当該複数のタスクについて全てのタスクペアに前記強結合が存在することを表現する強結合記述、および、当該複数のタスクについて全てのタスクペアに前記弱結合が存在することを表現する弱結合記述、という2つの結合記述のいずれか一方を表現するものであることを特徴とする請求項1乃至請求項11のいずれか1項に記載のプラン実行方法。
  13. 前記タスク分解ルールは、前記タスク分解処理による分解対象となるタスクを分解元タスク、結果として得られるタスクを分解先タスクと定義した場合に、分解元タスクと分解先タスクの関係を表現する分解関係記述の前後に、分解元タスクを表現する分解元タスク記述と分解先タスクを表現する分解先タスク記述を組み合わせることにより、当該分解元タスクが当該分解先タスクに分解可能であることを表現するものであることを特徴とする請求項1乃至請求項12のいずれか1項に記載のプラン実行方法。
  14. タスクの実行要求に基づいてプランを作成し、この作成したプランを実行するプラン実行システムにおいて、
    前記タスクの実行要求を要求タスクとして受け付ける要求受付部と、
    予め設定されたタスク分解ルールに従って、前記要求タスクをより具体的なタスクに分解するタスク分解処理を行い、1つ以上のそのまま実行可能なタスクの実行順序を表現するプランであって、且つ、複数個のタスクの並び順でこれらのタスクの実行順序を表現すると共に、連続して並ぶ2個のタスクをタスクペアと定義した場合に、各タスクペア中の2個のタスク間に、他のタスクを挿入可能な弱結合と、他のタスクの挿入を不可とする強結合、という2つの結合のいずれか一方が存在することを表現するプランを作成するプラン作成部と、
    前記タスク分解ルールを格納するルール格納部と、
    前記プランを格納するプラン格納部と、
    前記プランに従って、当該プラン中の前記タスクの実行順序を決定し、この実行順序でタスク実行の指示を行うプラン実行管理部と、
    前記タスク実行の指示に従って、前記プラン中の各タスクを順次実行するタスク実行部を備え、
    前記プラン作成部は、前記プラン中の各タスクの実行時に他の要求タスクが受け付けられた場合に、当該要求タスクを実行中の当該プランの弱結合により結合された2つのタスクの間に挿入するタスク挿入処理を行い、この挿入した当該要求タスクに対して前記タスク分解処理を行うことで、当該プランを修正するように構成され、
    前記プラン実行管理部は、実行中の前記プランが修正された場合に、修正後の当該プランに従って前記タスク実行の指示を行うように構成されていることを特徴とするプラン実行システム。
  15. ユーザインタフェース部、データ処理部、データ格納部を備えたコンピュータを利用して、タスクの実行要求に基づいてプランを作成し、この作成したプランを前記コンピュータに実行させるプラン実行プログラムにおいて、
    前記ユーザインタフェース部により、前記タスクの実行要求を要求タスクとして受け付ける要求受付機能と、
    前記データ処理部により、前記データ格納部に予め格納されたタスク分解ルールに従って、前記要求タスクをより具体的なタスクに分解するタスク分解処理を行い、1つ以上のそのまま実行可能なタスクの実行順序を表現するプランであって、且つ、複数個のタスクの並び順でこれらのタスクの実行順序を表現すると共に、連続して並ぶ2個のタスクをタスクペアと定義した場合に、各タスクペア中の2個のタスク間に、他のタスクを挿入可能な弱結合と、他のタスクの挿入を不可とする強結合、という2つの結合のいずれか一方が存在することを表現するプランを作成するプラン作成機能と、
    前記データ処理部により、前記データ格納部に前記プランを格納するプラン格納機能と、
    前記データ処理部により、前記プランに従って、当該プラン中の前記タスクの実行順序を決定し、この実行順序でタスク実行の指示を行うプラン実行管理機能と、
    前記データ処理部または前記ユーザインタフェース部により、前記タスク実行の指示に従って、前記プラン中の各タスクを順次実行するタスク実行機能、
    を前記コンピュータに実現させ、
    前記プラン作成機能は、前記プラン中の各タスクの実行時に他の要求タスクが受け付けられた場合に、当該要求タスクを実行中の当該プランの弱結合により結合された2つのタスクの間に挿入するタスク挿入処理を行い、この挿入した当該要求タスクに対して前記タスク分解処理を行うことで、当該プランを修正する機能を含み、
    前記プラン実行管理機能は、実行中の前記プランが修正された場合に、修正後の当該プランに従って前記タスク実行の指示を行う機能を含むことを特徴とするプラン実行プログラム。
JP2004191756A 2004-06-29 2004-06-29 プラン実行方法とそのシステム、プログラム Expired - Fee Related JP4005984B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004191756A JP4005984B2 (ja) 2004-06-29 2004-06-29 プラン実行方法とそのシステム、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004191756A JP4005984B2 (ja) 2004-06-29 2004-06-29 プラン実行方法とそのシステム、プログラム

Publications (2)

Publication Number Publication Date
JP2006012072A JP2006012072A (ja) 2006-01-12
JP4005984B2 true JP4005984B2 (ja) 2007-11-14

Family

ID=35779232

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004191756A Expired - Fee Related JP4005984B2 (ja) 2004-06-29 2004-06-29 プラン実行方法とそのシステム、プログラム

Country Status (1)

Country Link
JP (1) JP4005984B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6484915B2 (ja) * 2014-01-17 2019-03-20 株式会社リコー 情報処理システム及び情報処理方法
CN116719629B (zh) * 2023-08-10 2023-10-31 华能信息技术有限公司 一种基于工业互联网的任务分解方法

Also Published As

Publication number Publication date
JP2006012072A (ja) 2006-01-12

Similar Documents

Publication Publication Date Title
US10078882B2 (en) Priority-based command execution
WO2019237586A1 (zh) 定时任务管理方法、装置、计算机设备及存储介质
US7441240B2 (en) Process scheduling apparatus, process scheduling method, program for process scheduling, and storage medium recording a program for process scheduling
KR101618476B1 (ko) 휴대용 컴퓨팅 디바이스에서 분산 리소스 관리
US8990820B2 (en) Runtime task with inherited dependencies for batch processing
JPH05265975A (ja) 並列計算処理装置
CN110806923A (zh) 一种区块链任务的并行处理方法、装置、电子设备和介质
US20240126596A1 (en) Scheduling operations on a computation graph
WO2021088964A1 (zh) 推理系统、推理方法、电子设备及计算机存储介质
KR20140070231A (ko) 맵리듀스 워크플로우 처리 장치와 방법 및 이를 저장한 기록 매체
US9880860B2 (en) Automatic return to synchronization context for asynchronous computations
CN108829415A (zh) 模型加载方法、服务器及计算机可读存储介质
JP4005984B2 (ja) プラン実行方法とそのシステム、プログラム
Vakhania Single-machine scheduling with release times and tails
CN111260193B (zh) 车货匹配搜索系统、方法、计算机设备和存储介质
JP2005092780A (ja) リアルタイムプロセッサシステム及び制御方法
JP5045576B2 (ja) マルチプロセッサシステム及びプログラム実行方法
US20170269968A1 (en) Operating system support for game mode
CN113626164A (zh) 一种监控平台作业调度方法、装置、终端及存储介质
CN111431892A (zh) 一种加速器管理架构、方法及加速器接口控制器
JP2001331485A (ja) 分散データベース演算処理装置
WO2023116312A1 (zh) 数据处理方法、装置、计算机设备及存储介质
JP5283675B2 (ja) データベース管理システム及び方法
JP2004234643A (ja) プロセススケジューリング装置、プロセススケジューリング方法、プロセススケジューリングのためのプログラム、及びプロセススケジューリングのためのプログラムを記録した記録媒体
JP3931883B2 (ja) ジョブスケジューリング方法、計算機システムおよびジョブスケジューリングプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070306

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070427

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070821

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070824

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100831

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100831

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110831

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees