以下、図1〜図15を用いて本発明の実施形態を説明する。以下の説明では、実施形態に係る印刷制御システム100を例に挙げて説明する。但し、本実施の形態に記載されている構成、配置等の各要素は、発明の範囲を限定するものではなく単なる説明例にすぎない。
(印刷制御システム100の概要)
まず、図1を用いて、実施形態に係る印刷制御システム100の一例を説明する。図1は、実施形態に係る印刷制御システム100の一例の概要を示す図である。
印刷制御システム100は、指揮装置1(第1の画像形成装置)と従属装置2(第2の画像形成装置)を含む。指揮装置1と従属装置2は何れも印刷を行える。従属装置2は複数でもよい。
指揮装置1は、指揮装置1が行う印刷ジョブの実行順を調整する。指揮装置1は、第1ニューラルネットワーク7を用いて、印刷ジョブの実行順を調整する。また、指揮装置1は、従属装置2と通信する。指揮装置1は、第2ニューラルネットワーク8を用いて、従属装置2の印刷ジョブの実行順を調整する。指揮装置1は印刷ジョブの実行順を従属装置2に指示する。
第1ニューラルネットワーク7は第1確率を求めるためのものである。第1確率は、全ての蓄積ジョブの実行に要する第1全体時間が、第1全体時間の標準値と予め定められた許容値とを加算した値よりも長くなる確率である。第1確率は、蓄積ジョブの印刷が遅くなる確率といえる。
第2ニューラルネットワーク8は第2確率を求めるためのものである。第2確率は、従属装置2において、全ての蓄積ジョブの実行に要する第2全体時間が、第2全体時間の標準値と予め定められた許容値とを加算した値よりも長くなる確率である。第2確率は、蓄積ジョブの印刷が遅くなる確率といえる。
第1ニューラルネットワーク7と第2ニューラルネットワーク8は、畳み込みニューラルネットワークである。指揮装置1は、第1ニューラルネットワーク7を構築するための第1ニューラルネットワークデータ7dと、第2ニューラルネットワーク8を構築するための第2ニューラルネットワークデータ8dを、不揮発的に記憶する。
(指揮装置1)
次に、図2に基づき、実施形態に係る指揮装置1(第1の画像形成装置)の一例を説明する。図2は、実施形態に係る指揮装置1の一例を示す図である。本説明では、指揮装置1が複合機である場合を説明する。なお、指揮装置1は、プリンターのような複合機以外の画像形成装置でもよい。
指揮装置1は第1制御部10(制御部に相当)、第1記憶部11(記憶部に相当)、第1画像読取部12(入力部に相当)、第1操作パネル13、第1印刷部14(印刷部に相当)、第1通信部15(入力部に相当)を含む。第1制御部10は指揮装置1の動作を制御する。第1制御部10は第1制御回路10a、第1画像処理回路10b、第1計時回路10c、演算処理装置3を含む。第1制御回路10aは、指揮装置1に関する制御、演算を行う集積回路である。第1制御回路10aは、例えば、CPUである。第1記憶部11は制御用のプログラム、データを記憶する。第1記憶部11は第1ROM11a、第1RAM11b、第1ストレージ11c(HDD)を含む。第1記憶部11のプログラムやデータに基づき、第1制御回路10aは指揮装置1の制御、演算を行う。第1計時回路10cは時間を測る回路である。第1計時回路10cのかわりに第1制御回路10aが時間を測ってもよい。
演算処理装置3は第1確率を求めるための演算を行う。また、演算処理装置3は第2確率を求めるための演算を行う。つまり、演算処理装置3は、ニューラルネットワークを用いた推測値を求めるための演算を行う。演算処理装置3は、第1ニューラルネットワーク7の学習のための演算を行う。演算処理装置3は、第2ニューラルネットワーク8の学習のための演算も行う。ニューラルネットワーク(ディープラーニング)の学習、推測では、行列計算が行われる。演算処理装置3は、高速に行列計算を行うための回路(基板)である。例えば、演算処理装置3は、第1制御回路10aよりも単精度浮動小数点演算を高速に行える。演算処理装置3には、市販されるGPU(Graphics Processing Unit)を流用することができる。
コピージョブ(印刷ジョブ)のとき、第1制御部10は、搬送原稿、又は、載置読取用コンタクトガラスにセットされた原稿を第1画像読取部12に読み取らせる(スキャンさせる)。第1画像読取部12は読み取った原稿の画像データを生成する。第1画像読取部12は、コピージョブの実行に用いる画像データ(ジョブデータ)を取得する。第1画像処理回路10bは、原稿の画像データを処理する。第1画像処理回路10bは、印刷に用いる画像データを生成する。
第1操作パネル13は、第1表示パネル13a、第1タッチパネル13bを含む。第1制御部10は、各種設定画面、操作用画像を第1表示パネル13aに表示させる。操作用画像は、例えば、ボタン、キー、タブである。第1表示パネル13aに第1タッチパネル13bが取り付けられる。第1タッチパネル13bはタッチ位置を検知する。第1タッチパネル13bの出力に基づき、第1制御部10は操作された操作用画像を認識する。第1操作パネル13を操作することにより、コピージョブに関する各種設定を行うことができる。例えば、第1操作パネル13は、印刷に用いる用紙のサイズ、向き、種類の設定を受け付ける。また、例えば、第1操作パネル13は、印刷色(モノクロ、カラー)の設定を受け付ける。
第1印刷部14は、第1給紙部14a、第1搬送部14b、第1画像形成部14c、第1定着部14dを含む。指揮装置1は複数の第1給紙部14aを含む。第1制御部10は、給紙、用紙搬送、トナー像の形成、転写、定着のような印刷関連処理を制御する。印刷ジョブのとき、第1制御部10は、用紙を1枚ずつ何れかの第1給紙部14aに供給させる。第1制御部10は、供給された用紙を第1搬送部14bに搬送させる。第1制御部10は、画像データに基づくトナー像を第1画像形成部14cに形成させる。第1画像形成部14cは、カラーのトナー像を形成できる。また、第1画像形成部14cは、モノクロのトナー像も形成できる。第1制御部10は、搬送される用紙へのトナー像の転写を第1画像形成部14cに行わせる。第1制御部10は用紙のトナー像を第1定着部14dに定着させる。第1搬送部14bは定着後の用紙を機外に排出する。印刷済の用紙は排出トレイ(不図示)に排出される。
第1通信部15は通信用の各種ソケット、通信用回路、通信用ソフトウェアを備える。第1通信部15は、ネットワークを介して、コンピューター200と通信する。コンピューター200は、例えば、PCやサーバーである。第1通信部15は、コンピューター200から送信された印刷用データを受信する。第1通信部15は、プリントジョブに用いるデータ(プリントジョブデータ)を取得する。プリントジョブデータはページ記述言語で記述されたデータを含む。第1画像処理回路10bはページ記述言語で記述されたデータから画像データを生成する。第1画像処理回路10bは、印刷に用いる画像データを生成する。第1制御部10は、受信したプリントジョブデータに基づく印刷を第1印刷部14に行わせる。
また、指揮装置1は第1温度センサー16と第1湿度センサー17を含む。第1温度センサー16と第1湿度センサー17は温湿度センサーとして一体化されたものでもよい。第1温度センサー16は指揮装置1の機内の温度に応じた電圧を出力する。例えば、第1温度センサー16は、第1画像形成部14cに含まれる部材の近傍に設けられる。第1温度センサー16の出力は、第1制御部10に入力される。第1温度センサー16の出力に基づき、第1制御部10は、指揮装置1の機内温度を認識する。第1湿度センサー17は指揮装置1の機内の湿度に応じた電圧を出力する。例えば、第1湿度センサー17は、第1画像形成部14cに含まれる部材の近傍に設けられる。第1湿度センサー17の出力は、第1制御部10に入力される。第1湿度センサー17の出力に基づき、第1制御部10は、指揮装置1の機内湿度を認識する。
(従属装置2)
次に、図3に基づき、実施形態に係る従属装置2(第2の画像形成装置)の一例を説明する。図3は、実施形態に係る従属装置2の一例を示す図である。本説明では、従属装置2が複合機である場合を説明する。なお、従属装置2は、プリンターのような複合機以外の画像形成装置でもよい。
従属装置2は、第2制御部20、第2記憶部21、第2画像読取部22、第2操作パネル23、第2印刷部24、第2通信部25を含む。第2制御部20は従属装置2の動作を制御する。第2制御部20は第2制御回路20a、第2画像処理回路20b、第2計時回路20cを含む。第2制御回路20aは、従属装置2に関する制御、演算を行う集積回路である。第2制御回路20aは、例えば、CPUである。第2記憶部21は制御用のプログラム、データを記憶する。第2記憶部21は第2ROM21a、第2RAM21b、第2ストレージ21c(HDD)を含む。第2記憶部21のプログラムやデータに基づき、第2制御回路20aは従属装置2に関する制御、演算を行う。第2計時回路20cは時間を測る回路である。第2計時回路20cのかわりに第2制御回路20aが時間を測ってもよい。なお、ニューラルネットワークに関する演算は指揮装置1が行う。そのため、従属装置2には、演算処理装置3は搭載されない。
コピージョブのとき、第2制御部20は、搬送原稿、又は、載置読取用コンタクトガラスにセットされた原稿を第2画像読取部22に読み取らせる(スキャンさせる)。第2画像読取部22は読み取った原稿の画像データを生成する。第2画像読取部22は、印刷ジョブ(コピージョブ)の実行に用いる画像データ(ジョブデータ)を取得する。第2画像処理回路20bは、原稿の画像データを処理する。第2画像処理回路20bは、印刷に用いる画像データを生成する。
第2操作パネル23は、第2表示パネル23a、第2タッチパネル23bを含む。第2制御部20は、各種設定画面、操作用画像を第2表示パネル23aに表示させる。操作用画像は、例えば、ボタン、キー、タブである。第2表示パネル23aに第2タッチパネル23bが取り付けられる。第2タッチパネル23bはタッチ位置を検知する。第2タッチパネル23bの出力に基づき、第2制御部20は操作された操作用画像を認識する。第2操作パネル23を操作することにより、コピージョブに関する各種設定を行うことができる。例えば、第2操作パネル23は、印刷に用いる用紙のサイズ、向き、種類の設定を受け付ける。また、例えば、第2操作パネル23は、印刷色(モノクロ、カラー)の設定を受け付ける。
第2印刷部24は、第2給紙部24a、第2搬送部24b、第2画像形成部24c、第2定着部24dを含む。従属装置2は複数の第2給紙部24aを含む。第2制御部20は、給紙、用紙搬送、トナー像の形成、転写、定着のような印刷関連処理を制御する。印刷ジョブのとき、第2制御部20は、用紙を1枚ずつ何れかの第2給紙部24aに供給させる。制御部1は、供給された用紙を第2搬送部24bに搬送させる。制御部1は、画像データに基づくトナー像を第2画像形成部24cに形成させる。第2画像形成部24cは、カラーのトナー像を形成できる。また、第2画像形成部24cは、モノクロのトナーも形成できる。第2制御部20は、搬送される用紙へのトナー像の転写を第2画像形成部24cに行わせる。第2制御部20は用紙のトナー像を第2定着部24dに定着させる。第2搬送部24bは定着後の用紙を機外に排出する。印刷済の用紙は排出トレイ(不図示)に排出される。
第2通信部25は通信用の各種ソケット、通信用回路、通信用ソフトウェアを備える。第2通信部25は、ネットワークを介して、コンピューター200と通信する。コンピューター200は、例えば、PCやサーバーである。第2通信部25は、コンピューター200から送信された印刷用データを受信する。第2通信部25は、印刷ジョブ(プリントジョブ)に用いるデータ(プリントジョブデータ)を取得する。プリントジョブデータはページ記述言語で記述されたデータを含む。第2画像処理回路20bはページ記述言語で記述されたデータから画像データを生成する。第2画像処理回路20bは、印刷に用いる画像データを生成する。第2制御部20は、受信したプリントジョブデータに基づく印刷を第2印刷部24に行わせる。
また、従属装置2は第2温度センサー26と第2湿度センサー27を含む。第2温度センサー26と第2湿度センサー27は、温湿度センサーとして一体化されたものでもよい。第2温度センサー26は従属装置2の機内の温度に応じた電圧を出力する。例えば、第2温度センサー26は、第2画像形成部24cに含まれる部材の近傍に設けられる。第2温度センサー26の出力は、第2制御部20に入力される。第2温度センサー26の出力に基づき、第2制御部20は、従属装置2の機内温度を認識する。第2湿度センサー27は従属装置2の機内の湿度に応じた電圧を出力する。例えば、第2湿度センサー27は、第2画像形成部24cに含まれる部材の近傍に設けられる。第2湿度センサー27の出力は、第2制御部20に入力される。第2湿度センサー27の出力に基づき、第2制御部20は、従属装置2の機内湿度を認識する。
(指揮装置1のジョブ実行順の調整)
次に、図4〜図8を用いて、実施形態に係る指揮装置1でのジョブ実行順の調整の一例を説明する。図4は、実施形態に係る指揮装置1でのジョブ実行順の調整の流れの一例を示す図である。図5は、実施形態に係る第1記憶部11の記憶内容の一例を示す図である。図6は、実施形態に係る第1リスト41の一例を示す図である。図7は、実施形態に係る第1入力データ51の一例を示す図である。図8は、実施形態に係る畳み込みニューラルネットワークの一例を示す図である。
ある印刷ジョブの実行中に、新たなジョブが指揮装置1に入力されることがある。例えば、コピージョブのため、第1画像読取部12が原稿の読み取りを開始することがある。プリントジョブデータが第1通信部15に入力されることがある。印刷ジョブの実行中なので、新たに入力されたデータに基づいて印刷ジョブを開始することができない。
未実行(実行待ち)の印刷ジョブのジョブデータは第1記憶部11に蓄積(保存、保持)される。以下の説明では、実行待ちの印刷ジョブを蓄積ジョブと称する。第1記憶部11はジョブ保持領域61を含む。第1制御部10は、蓄積ジョブのジョブデータをジョブ保持領域61に記憶させる。蓄積ジョブの開始待ちの間、第1制御部10は、蓄積ジョブのジョブデータを第1記憶部11に保持させる。蓄積ジョブの個数は複数に及ぶことがある。例えば、連続的に複数のプリントジョブデータを受信したとき、蓄積ジョブが複数に及ぶことがある。
図4のスタートは、所定個数の蓄積ジョブが第1記憶部11に蓄積された時点である。所定個数は適宜定められる。所定個数は3以上とできる。本実施形態の説明では、所定個数が5である場合を説明する。所定個数は、4以下でもよいし、5より多くてもよい。
まず、第1制御部10は、それぞれの蓄積ジョブのジョブデータに基づき、複数の所定項目の値(第1項目値41a)を定める(ステップ♯11)。所定項目は、複数の印刷に関する項目のなかから、予め選ばれる。例えば、用紙サイズ、用紙の向き、用紙の種別、印刷色(カラー、モノクロ)、機内温度、機内湿度が所定項目とされる。第1温度センサー16と第1湿度センサー17の出力に基づき、第1制御部10は現在の機内温度と機内湿度を認識する。第1制御部10は現在の機内温度と機内湿度を第1項目値41aとする。なお、所定項目はこれらに限られない。印刷解像度のような他の項目が所定項目に含まれてもよい。
次に、第1制御部10は第1リスト41を生成する(ステップ♯12)。第1リスト41は蓄積ジョブ単位で第1項目値41aを並べたものである。また、第1リスト41は予め定められた項目順で第1項目値41aを並べたものである。最初に第1リスト41を生成するとき、第1制御部10は、受付順(入力順)で蓄積ジョブの順番を並べる。図6は第1リスト41の一例を示す。図6の第1リスト41のジョブIDは、蓄積ジョブの受付順(入力順)を示す。図6は、最初に生成される第1リスト41の一例を示す。第1リスト41では、1列に1つの蓄積ジョブの各第1項目値41aが並べられている。
次に、第1制御部10は第1入力データ51を生成する(ステップ♯13)。第1制御部10は、第1リスト41に含まれる第1項目値41aに基づき、第1入力データ51を生成する。第1入力データ51は第1ニューラルネットワーク7に入力するデータである。第1制御部10は、各第1項目値41aを数値化する。第1項目値41aに対応する数値は予め定められる。第1記憶部11は第1生成用データ62を記憶する(図5参照)。第1生成用データ62は各第1項目値41aと数値の対応関係を示すデータである。第1生成用データ62では、第1リスト41に含まれ得る第1項目値41aに対応する数値が定義される。例えば、印刷色の場合、モノクロに対応する数値は0と定義される。カラーに対応する数値は1とされる。図7は、第1入力データ51の一例を示す。第1入力データ51の大きさ(マトリクスのサイズ)は予め定められる。第1制御部10は縦と横のサイズが一定の第1入力データ51を生成する。例えば、第1制御部10はマトリクス状のデータを生成する。画像データのように、第1入力データ51には、蓄積ジョブの特徴を示す値が格納される。
そして、第1制御部10は、生成した第1入力データ51を第1ニューラルネットワーク7に入力する(ステップ♯14)。図8は、実施形態にかかるニューラルネットワーク(第1ニューラルネットワーク7、第2ニューラルネットワーク8)の一例を示す。第1ニューラルネットワーク7は、入力層91、複数の隠れ層92、出力層93を含む。各層は複数のユニット(図8における○印)を含む。入力層91内の各ユニットには、第1入力データ51がセットされる。ユニットとユニットを繋ぐ破線は前段のユニットから後段のユニットへの関数を示す。
各隠れ層92は畳み込み層を含む。各隠れ層92はプーリング層を含んでもよいし、含まなくてもよい。畳み込み層では、畳み込みの演算が関数として行われる。第1制御部10は、入力されたデータにフィルターによる畳み込み処理を行う。隠れ層92の各ユニットのフィルターはそれぞれ異なる。1つの隠れ層92に、十数〜数十のフィルター(ユニット)を含めてもよい。畳み込み処理により、第1制御部10は特徴マップを生成する。
フィルターは所定のサイズとされる(例えば、3×3)。第1制御部10は第1入力データ51にフィルターを重ねる。第1入力データ51の各要素とフィルターの各要素の積の和が特徴マップの1つのセルの値となる。フィルターの位置を1又は複数個ずらして、畳み込み処理が行われる。第1制御部10は、得られた特徴マップの周りにゼロを付し、特徴マップのサイズを調整してもよい(ゼロパディング)。
第1ニューラルネットワークデータ7dは、例えば、層数、各層(各ユニット)の入力サイズ、各層(各ユニット)の出力サイズ、各ユニットの活性化関数、損失関数、重みの更新方法、学習係数を定義したデータを含む。また、第1ニューラルネットワークデータ7dは、各フィルターの重み(フィルター内の数値)を含む。各ユニットの演算結果に活性化関数を乗じた値がユニットの出力となる。活性化関数は適宜設定される。例えば、活性化関数にReLU関数、恒等写像、シグモイド関数、tanh関数、Leaky ReLU関数を用いることができる。また、出力層93には、ソフトマックス関数を用いることができる。
第1制御部10は、第1ニューラルネットワーク7を用いて第1確率を求める(ステップ♯15)。第1確率は、第1全体時間(所定個数の蓄積ジョブの実行に要する時間)が、第1全体時間の標準値と許容値の合計よりも長くなる確率である。1から第1確率を減ずることで、第1制御部10は長くならない確率を求めることもできる。出力クラス数は1である(図8参照)。第1ニューラルネットワーク7を用いることにより、第1入力データ51のうち、ジョブを遅らせる要素が特徴として抽出される。抽出された特徴に基づき、第1確率が求められる。
第1制御部10は、第1全体時間の標準値を求めることができる。指揮装置1の全体時間の標準値を求めるため、第1記憶部11は、第1標準決定用データ63を記憶する。第1標準決定用データ63は、用紙サイズ、用紙の向き、用紙の種類ごとに、指揮装置1で1ページの印刷に要する時間を定義したデータである。指揮装置1の仕様上の1ページあたりの印刷時間に基づき、第1標準決定用データ63は定められる。第1制御部10は第1標準決定用データ63を参照する。第1制御部10は、各蓄積ジョブの各ページの印刷に必要な時間を認識する。第1制御部10は認識した時間を合計して、第1全体時間の標準値を求める。許容値は適宜定められる。実際の印刷時の第1全体時間と許容値を考慮して、第1ニューラルネットワーク7の学習が行われる(詳細は後述)。
第1制御部10は、第1確率が予め定められた閾値以下であるか否かを確認する(ステップ♯16)。閾値は適宜定められる。閾値は、例えば、50%以下とされる。なお、操作パネルは閾値の設定を受け付けてもよい。第1制御部10は、設定された閾値を用いる。第1確率が閾値以下のとき(ステップ♯16のYes)、第1リスト41の順でジョブを行っても、第1全体時間は長くなりにくいと判断できる。そこで、第1制御部10は、第1リスト41での蓄積ジョブの並び順に沿って、印刷部に蓄積ジョブを行わせる(ステップ♯17)。そして、本フローは終了する(エンド)。
一方、第1確率が閾値を超えているとき(ステップ♯16のNo)、今の第1リスト41の順でジョブを行うと、第1全体時間(所定個数の蓄積ジョブの実行に必要な時間)は長くなる可能性が高い。そこで、求めた第1確率が閾値を超えているとき(ステップ♯16のYes)、第1制御部10は生成し得る全てのパターンについて、第1リスト41を生成済か否かを確認する(ステップ♯18)。
まだ全パターンを生成していないとき(ステップ♯18のNo)、第1制御部10は、新たな第1リスト41を生成する(ステップ♯19)。新たな第1リスト41を生成するとき、第1制御部10は、同じ蓄積ジョブについて、前に生成した第1リスト41と蓄積ジョブの並び順が異なるように、新たな第1リスト41を生成する。つまり、第1リスト41ごとに蓄積ジョブの並び順を異ならせる。
そして、フローは、ステップ♯13に戻る。新たな第1リスト41を生成したとき、第1制御部10は、新たな第1リスト41に含まれる第1項目値41aに基づき、新たな第1入力データ51を生成する。新たな第1入力データ51を生成したとき、第1制御部10は、新たな第1入力データ51を第1ニューラルネットワーク7に入力する。従って、第1確率が閾値以下となるまで、新たな第1リスト41の生成が繰り返される。
ここで、第1制御部10は、予め定められた規則に反しないように、新たな第1リスト41を生成する。規則に反しないように、第1制御部10は、蓄積ジョブの並び順を替える。第1記憶部11は規則情報64を記憶する。規則情報64は、蓄積ジョブの並び替えの規則を定めたデータである。例えば、規則情報64は、許可する並べ方や禁止される並べ方が定義されたデータである。操作パネルは、規則の設定を受け付ける。例えば、カラーとモノクロを交互にする並べ方を禁止することができる。第1制御部10は、設定された規則を規則情報64として第1記憶部11に記憶させる。
全パターンを生成済のとき(ステップ♯18のYes)、第1制御部10は、他の画像形成装置に向けて、第1リスト41に含まれる蓄積ジョブのジョブデータを転送させる(ステップ♯110)。他の画像形成装置に蓄積ジョブを実行させることができる。具体的に、第1制御部10は、所定個数の蓄積ジョブのジョブデータを第1通信部15に送信させる。これにより、指揮装置1ではジョブ間の準備時間が長くなる複数の印刷ジョブ(不得意な複数の印刷ジョブ)を他の画像形成装置に行わせることができる。そして、第1制御部10は、他の画像形成装置に蓄積ジョブを実行させる(ステップ♯111)。他の画像形成装置は、従属装置2でもよい。他の画像形成装置は、従属装置2以外の画像形成装置でもよい。そして、本フローは終了する(エンド)。操作パネルは、ジョブデータの転送先を予め受け付けてもよい。この場合、第1制御部10は、予め設定された転送先(画像形成装置)にジョブデータを転送する。
(第1ニューラルネットワーク7の学習)
次に、図9、図10を用いて、実施形態に係る第1ニューラルネットワーク7の学習の一例を説明する。図9は、実施形態に係る第1トレーニングデータセット67の生成の流れの一例を示す図である。図10は、実施形態に係る第1ニューラルネットワーク7の学習の流れの一例を示す図である。
第1制御部10は、学習により第1ニューラルネットワーク7に含まれる各フィルターの重み(係数)を更新する。これにより、第1確率の正確性を高めることができる。つまり、学習により、第1制御部10は、第1ニューラルネットワークデータ7dを更新する。第1ニューラルネットワーク7の各フィルターの係数(重み)の初期値は、ランダムに設定してもよい。第1記憶部11は、ランダムに各フィルターの係数を定めるアルゴリズム(プログラム)を記憶する。第1制御部10は、アルゴリズムを用いて、フィルターの各セルの値を決定する。なお、使用当初から第1確率の正確性を高くするため、ある程度学習を進めた第1ニューラルネットワークデータ7dを第1記憶部11にインストールしてもよい。
第1制御部10は、学習のため、第1トレーニングデータセット67を生成する。第1制御部10は、実際の印刷結果に基づき、第1トレーニングデータセット67を生成する。生成した第1トレーニングデータセット67を第1記憶部11に不揮発的に記憶させる。図9を用いて、第1トレーニングデータセット67の生成の流れの一例を説明する。図9のスタートは、第1記憶部11が蓄積ジョブを所定個数蓄積した時点である。以下の説明では、所定個数連続して実行する蓄積ジョブを学習連続ジョブと称する。
まず、第1制御部10は第1実測時間を測る(ステップ♯21)。第1実測時間は、学習連続ジョブの実行開始から終了までの時間である。例えば、実行開始時点は、学習連続ジョブの最初の蓄積ジョブの実行を開始した時点である。例えば、実行終了時点は、最後の蓄積ジョブの用紙の後処理や排出が完了した時点である。
第1制御部10は第1項目値41aを定める(ステップ♯22)。第1項目値41aは、各蓄積ジョブにおける複数の所定項目の値である。第1制御部10は、学習連続ジョブに含まれるそれぞれの蓄積ジョブのジョブデータに基づき、第1項目値41aを定める。温度、湿度のパラメーターについては、第1制御部10は、各蓄積ジョブの開始時の温度と湿度を第1項目値41aとする。
次に、第1制御部10は第1学習用リストを生成する(ステップ♯23)。第1制御部10は、蓄積ジョブ単位、かつ、実行順に第1項目値41aを並べる。第1制御部10は、予め定められた項目順で第1項目値41aを並べる。第1リスト41と第1学習用リストとでの第1項目値41aの並べ方は同じである。図6と同様のリストが生成される。
第1学習用リストに基づき、第1制御部10は、第1学習用入力データ65を生成する(ステップ♯24)。第1制御部10は各第1項目値41aを数値化する。第1入力データ51と同様に、第1制御部10は、第1生成用データ62に基づき、各第1項目値41aを数値化する。第1制御部10はマトリクス状の第1学習用入力データ65を生成する。第1学習用入力データ65は、学習用の第1入力データ51である。第1学習用入力データ65は第1入力データ51と同じ大きさ(マトリクスのサイズ)である。第1制御部10は縦横のサイズが第1入力データ51と同じデータを生成する。第1制御部10は、第1入力データ51と同じ規則で第1学習用入力データ65を生成する。第1学習用入力データ65は、画像データのように、学習連続ジョブの特徴を示す値を格納する。
また、第1制御部10は第1標準時間を定める(ステップ♯25)。第1標準時間は学習連続ジョブの実行に要する時間(全体時間)の標準値である。第1制御部10は、第1標準決定用データ63を参照する。第1制御部10は、学習連続ジョブの各蓄積ジョブの各ページの印刷に必要な時間を認識する。第1制御部10は認識した時間を合計して第1標準時間を求める。
そして、第1制御部10は、第1実測時間が第1標準時間と許容値とを加算した値よりも長いか否かを判定する(ステップ♯26)。つまり、第1制御部10は、学習連続ジョブに要した時間が第1標準時間を超え、かつ、超えた時間が、許容値よりも長いか否かを確認する。実際に学習連続ジョブに要した時間に基づき、第1制御部10は、第1教師データ66(正しい答え、判定の結果)を得る。第1教師データ66は、第1実測時間が第1標準時間と許容値とを加算した値よりも長いか否かを示す。第1教師データ66は1ビット(1又はゼロ)のデータである。第1制御部10は第1トレーニングデータセット67を生成する(ステップ♯27)。第1トレーニングデータセット67は、第1学習用入力データ65と第1教師データ66(当該判定の結果)を含む。第1制御部10は、生成した第1トレーニングデータセット67を第1記憶部11に記憶させる(ステップ♯28)。そして、本フローは終了する(エンド)。
次に、図10を用いて、第1ニューラルネットワーク7の学習の流れの一例を説明する。図10のスタートは、未学習の第1トレーニングデータセット67が一定個数になった時点である。一定個数は複数である。
まず、第1制御部10は、誤差逆伝搬法を用いて、学習(重みの更新、フィルターの係数の更新)を行う。第1制御部10は、未学習の第1トレーニングデータセット67を読み出す(ステップ♯31)。第1制御部10は、読み出したデータのうち、第1学習用入力データ65を第1ニューラルネットワーク7に入力する(ステップ♯32)。第1制御部10は第1学習用入力データ65に対応する第1確率を求める(ステップ♯33)。
次に、第1制御部10は、求めた第1確率と第1学習用入力データ65に基づき、各ユニットの重みを更新する(ステップ♯34)。言い換えると、学習により、第1制御部10は、各ユニットのフィルターの係数を更新する。確率的勾配降下法と誤差逆伝搬法に基づき、第1制御部10は学習を行う。誤差逆伝搬法では、出力層93側から入力層91側に向けて誤差を求めていく。言い換えると、逆向きに誤差を伝搬してゆく。そこで、最初に、第1制御部10は、第1確率と正しいと判定結果(教師データ)の誤差Eを求める。
第1制御部10は、損失関数を用いて、誤差Eを求める。損失関数には、二乗誤差を用いてもよい。二乗誤差を用いて、1つのサンプルデータ(第1トレーニングデータセット67)の誤差Eは、以下の(式1)で求めることができる。
(式1) En=1/2(Yn−Tn)2
n:サンプル番号
Yn:出力データ(0〜1)
Tn:教師データ(0または1)
また、第1教師データ66は、第1実測時間>(第1標準時間+許容値)がYesかNo(1又はゼロ)を示す。つまり、教師データは1又はゼロである。そのため、損失関数には、2値クロスエントロピー関数を用いてもよい。
次に、第1制御部10は、重みwに対する誤差Eの勾配ΔE(誤差Eのwでの微分)を求める。勾配ΔEが正のとき、第1制御部10は、重みwを負の方向に更新する。勾配ΔEが負のとき、第1制御部10は、重みwを正の方向に更新する。重みwの更新式を(式2)に示す。
(式2) w ← w−εΔE
εは学習係数である。1回の重みの更新幅は大きすぎないことが好ましい。学習係数は、例えば、0.1〜0.001のような値が設定される。第1制御部10は繰り返し、少しずつ重みwを更新する。
誤差Eは、重み(関数)、活性化関数、損失関数に基づき求まる。従って、勾配ΔEは、合成関数の微分により求められる。重みは行列で表現できるので、勾配ΔEも行列で求められる。第1制御部10は、出力層93とその前段の隠れ層92(n層目)の重みに対する勾配ΔEを求める。第1制御部10は、ΔEと学習係数を乗じた値を、n層目の隠れ層92の現在の重みに加える、又は、減じる。これにより、出力層93の前段の隠れ層92の重みの更新が完了する。
次に、第1制御部10は、(n−1)番目の隠れ層92とn番目の隠れ層92の間の重みを更新する。第1制御部10は、n番目の隠れ層92の正しい出力と、n番目の隠れ層92の実際の出力の誤差Eを求める。このとき、n番目の隠れ層92の重み更新の計算結果の一部を用いて、誤差Eを求めることができる。第1制御部10は、(n−1)番目の隠れ層92の重みの勾配ΔEを求める。求めた勾配ΔEに基づき、(n−1)番目の隠れ層92の重みを更新する。
第1制御部10は、最も出力層93に近い隠れ層92から先頭の(最も入力側の)隠れ層92まで、勾配ΔEに基づく更新を繰り返す。第1制御部10は、第1ニューラルネットワークデータ7d内のフィルターの係数の更新を繰り返す。最終的に、第1ニューラルネットワークデータ7dの更新が完了する(ステップ♯35)。これにより、第1ニューラルネットワーク7の1回の学習が終了する(エンド)。
(従属装置2のジョブ実行順の調整)
次に、図11〜図13を用いて、実施形態に係る従属装置2のジョブ実行順の調整の一例を説明する。図11は、実施形態に係る従属装置2のジョブ実行順の調整の流れの一例を示す図である。図12は、実施形態に係る第2リスト42の一例を示す図である。図13は実施形態に係る第2入力データ52の一例を示す図である。
ある印刷ジョブの実行中に、新たなジョブが従属装置2に入力されることがある。例えば、コピージョブのため、第2画像読取部22が原稿の読み取りを開始することがある。プリントジョブデータが第2通信部25に入力されることがある。印刷ジョブの実行中なので、新たに入力されたデータに基づく印刷ジョブを開始することができない。
従属装置2でも、未実行(実行待ち)の印刷ジョブのジョブデータは第2記憶部21に蓄積(保存、保持)される。蓄積ジョブの開始待ちの間、第2制御部20は蓄積ジョブのジョブデータを第2記憶部21に保持させる。蓄積ジョブの個数は複数に及ぶことがある。例えば、連続的に複数のプリントジョブデータを受信したとき、蓄積ジョブが複数に及ぶことがある。
ここで、ニューラルネットワークに関する演算は、演算量が多くなることがある。従属装置2では、演算能力が足りない場合がある(例えば、従属装置2が低価格帯のプリンターの場合)。そこで、指揮装置1(第1制御部10)が従属装置2用のニューラルネットワークに関する演算を代行する。そして、第1制御部10は、従属装置2の蓄積ジョブの実行順を定める。従属装置2(第2制御部20)は、指揮装置1が定めた実行順で蓄積ジョブを第2印刷部24に印刷させる。
図11のスタートは、所定個数の蓄積ジョブが第2記憶部21に蓄積された時点である。以下の説明では、所定個数は指揮装置1と同じ数(5個)である場合を説明する。所定個数は、4以下でもよいし、5より多くてもよい。
まず、第2制御部20は、それぞれの蓄積ジョブのジョブデータに基づき、複数の所定項目の値(第2項目値42a)を定める(ステップ♯41)。所定項目は、複数の印刷に関する項目のなかから、予め選ばれる。例えば、用紙サイズ、用紙の向き、用紙の種別、印刷色(カラー、モノクロ)、機内温度、機内湿度が所定項目とされる。所定項目は所定項目と同じでもよいし、異なっていてもよい。第2温度センサー26、第2湿度センサー27の出力に基づき、第2制御部20は、現在の機内温度と機内湿度を認識する。第2制御部20は現在の機内温度と機内湿度を第2項目値42aとする。なお、所定項目はこれらに限られない。印刷解像度のような他の項目が所定項目に含まれてもよい。
次に、第2制御部20は第2リスト42を生成し、送信する(ステップ♯42)。第2リスト42は蓄積ジョブ単位で第2項目値42aを並べたものである。また、第2リスト42は、予め定められた項目順で第2項目値42aを並べたものである。最初に第2リスト42を生成するとき、第2制御部20は、受付順(入力順)で蓄積ジョブの順番を並べる。第2制御部20は、指揮装置1(第1通信部15)に向けて、生成した第2リスト42を第2通信部25に送信させる。第2項目値42aの並べ方は、第1リスト41と同様でよい。
図12は第2リスト42の一例を示す。図12の第2リスト42のジョブIDは、蓄積ジョブの受付順(入力順)を示す。つまり、図12は、最初に生成される第2リスト42の一例を示す。第2リスト42では、1列に1つの蓄積ジョブの各第2項目値42aが並べられている。受信した第2リスト42に基づき、指揮装置1(第1制御部10)は第2入力データ52を生成する(ステップ♯43)。第1制御部10は、第2リスト42に含まれる第2項目値42aに基づき、第2入力データ52を生成する。第2入力データ52は第2ニューラルネットワーク8に入力するデータである。
第1制御部10は、各第2項目値42aを数値化する。第2項目値42aに対応する数値は予め定められる。第1記憶部11は第2生成用データ68を記憶する(図5参照)。第2生成用データ68は各第2項目値42aと数値の対応関係を示すデータである。第2生成用データ68では、第2リスト42に含まれ得る第2項目値42aに対応する数値が定義される。例えば、印刷色の場合、モノクロに対応する数値は0と定義される。カラーに対応する数値は1とされる。
図13は、第2入力データ52の一例を示す。第2入力データ52の大きさ(マトリクスのサイズ)は予め定められる。第2入力データ52と第1入力データ51は同じサイズでもよい。第1制御部10は縦と横のサイズが一定の第2入力データ52を生成する。例えば、第1制御部10はマトリクス状のデータを生成する。画像データのように、第2入力データ52には、蓄積ジョブの特徴を示す値が格納される。
そして、第1制御部10は、生成した第2入力データ52を第2ニューラルネットワーク8に入力する(ステップ♯44)。第2ニューラルネットワーク8は、第1ニューラルネットワーク7と同様のニューラルネットワークである。第2ニューラルネットワーク8は畳み込みニューラルネットワークの一種である(図8参照)。第2ニューラルネットワーク8は、従属装置2ごとに用意される。演算処理装置3が第2ニューラルネットワーク8に関する演算を行う。
第2ニューラルネットワーク8も、入力層91、複数の隠れ層92、出力層93を含む。各層は複数のユニットを含む。入力層91内の各ユニットには、第2入力データ52がセットされる。ユニットとユニットを繋ぐ破線は、前段のユニットから後段のユニットへの関数を示す。各隠れ層92は畳み込み層を含む。各隠れ層92はプーリング層を含んでもよいし、含まなくてもよい。畳み込み層では、畳み込みの演算が関数として行われる。第1制御部10は、入力されたデータにフィルターによる畳み込み処理を行う。隠れ層92の各ユニットのフィルターはそれぞれ異なる。1つの隠れ層92には、十数〜数十のフィルター(ユニット)を含めてもよい。畳み込み処理により、第1制御部10は特徴マップを生成する。
第2ニューラルネットワーク8でも、フィルターは所定のサイズとされる(例えば、3×3)。第1制御部10は第2入力データ52にフィルターを重ねる。第2入力データ52の各要素とフィルターの各要素の積の和が特徴マップの1つのセルの値となる。フィルターの位置をずらして、畳み込み処理が行われる。第1制御部10は、得られた特徴マップの周りにゼロを付し、特徴マップのサイズを調整してもよい(ゼロパディング)。
第2ニューラルネットワークデータ8dは、例えば、層数、各層(各ユニット)の入力サイズ、各層(各ユニット)の出力サイズ、各ユニットの活性化関数、損失関数、重みの更新方法、学習係数を定義したデータを含む。また、第2ニューラルネットワークデータ8dは、各フィルターの重み(フィルター内の数値)を含む。各ユニットの演算結果に活性化関数を乗じた値がユニットの出力となる。活性化関数は適宜設定される。例えば、活性化関数にReLU関数、恒等写像、シグモイド関数、tanh関数、Leaky ReLU関数を用いることができる。また、出力層93には、ソフトマックス関数を用いることができる。第2ニューラルネットワークデータ8dは、第1ニューラルネットワークデータ7dと、各フィルターの係数のみが異なるデータとできる。
第1制御部10は、第2ニューラルネットワーク8を用いて第2確率を求める(ステップ♯15)。第2確率は、第2全体時間が、第2全体時間の標準値と許容値の合計よりも長くなる確率である。1から第2確率を減ずることで、第1制御部10は長くならない確率を求めることもできる。出力クラス数は1である(図8参照)。第2ニューラルネットワーク8を用いることにより、第2入力データ52のうち、ジョブを遅らせる要素が特徴として抽出される。抽出された特徴に基づき、第2確率が求められる。第2ニューラルネットワーク8を用いることにより、第2入力データ52のうち、ジョブを遅らせる要素が特徴として抽出される。抽出された特徴に基づき、標準値よりも許容値を超えて長くなる確率が求められる。
第1制御部10は、従属装置2についても、第2全体時間(所定個数の蓄積ジョブの実行に要する時間)の標準値を求めることができる。従属装置2の全体時間の標準値を求めるため、第1記憶部11は、第2標準決定用データ69を記憶する。第2標準決定用データ69は、用紙サイズ、用紙の向き、用紙の種類ごとに、従属装置2での1ページの印刷に要する時間を定義したデータである。従属装置2の仕様上の1ページあたりの印刷時間に基づき、第2標準決定用データ69は定められる。第1制御部10は、第2標準決定用データ69を参照する。第1制御部10は、各蓄積ジョブの各ページの印刷に必要な時間を認識する。第1制御部10は認識した時間を合計して、第2全体時間の標準値を求める。実際の印刷時の第2全体時間と許容値を考慮して、第2ニューラルネットワーク8の学習が行われる。
第1制御部10、第2確率が閾値以下であるか否かを確認する(ステップ♯46)。閾値は、例えば、50%以下とされる。第2確率が閾値以下のとき(ステップ♯46のYes)、従属装置2では、第2リスト42の順でジョブを行っても、第2全体時間(所定個数の蓄積ジョブの所要時間)は長くなりにくいと判断できる。そこで、第1制御部10は、第2リスト42での蓄積ジョブの並び順に沿って、印刷部に蓄積ジョブを行わせる(ステップ♯47)。そして、本フローは終了する(エンド)。
一方、第2確率が閾値を超えているとき(ステップ♯46のNo)、従属装置2で、今の第2リスト42では、第2全体時間が長くなる可能性が高い。そこで、求めた第2確率が閾値を超えているとき(ステップ♯46のYes)、第1制御部10は生成し得る全てのパターンについて、第2リスト42を生成済か否かを確認する(ステップ♯48)。
まだ全パターンを生成していないとき(ステップ♯48のNo)、第1制御部10は、新たな第2リスト42を生成する(ステップ♯49)。新たな第2リスト42を生成するとき、第1制御部10は、同じ蓄積ジョブについて、前に生成した第2リスト42と蓄積ジョブの並び順が異なるように、新たな第2リスト42を生成する。つまり、第2リスト42ごとに蓄積ジョブの並び順を異ならせる。
そして、フローは、ステップ♯43に戻る。新たな第2リスト42を生成したとき、第1制御部10は、新たな第2リスト42に含まれる第2項目値42aに基づき、新たな第2入力データ52を生成する。新たな第2入力データ52を生成したとき、第1制御部10は、新たな第2入力データ52を第2ニューラルネットワーク8に入力する。従って、第2確率が閾値以下となるまで、新たな第2リスト42の生成が繰り返される。ここで、第1制御部10は、規則に反しないように、蓄積ジョブの並び順を替える。第1制御部10は、第1記憶部11の規則情報64を参照する。操作パネルは、従属装置2用の規則を受け付けてもよい。この場合、第1制御部10は、設定された規則を従属装置2用の規則情報64として第1記憶部11に記憶させる。
全パターンを生成済のとき(ステップ♯48のYes)、第1制御部10は、生成した第2リスト42のうち、最も第2確率が小さくなった第2リスト42を対応する従属装置2に送信する(ステップ♯410)。第1制御部10は、従属装置2で蓄積ジョブを実行させる(ステップ♯411)。そして、本フローは終了する(エンド)。
(第2ニューラルネットワーク8の学習)
次に、図14、図15を用いて、実施形態に係る第2ニューラルネットワーク8の学習の一例を説明する。図14は、実施形態に係る第2トレーニングデータセット612の生成の流れの一例を示す図である。図15は、実施形態に係る第2ニューラルネットワーク8の学習の流れの一例を示す図である。
第1制御部10は、第2ニューラルネットワーク8に含まれる各フィルターの重み(係数)を更新する。つまり、従属装置2のためのニューラルネットワークの学習を、指揮装置1が行う。これにより、第2確率の正確性を高めることができる。学習により、第1制御部10は、第2ニューラルネットワークデータ8dを更新する。第2ニューラルネットワーク8の各フィルターの係数(重み)の初期値はランダムに設定してもよい。この場合、第1記憶部11は、ランダムに各フィルターの係数を定めるアルゴリズム(プログラム)を記憶する。第1制御部10は、アルゴリズムを用いて、フィルターの各セルの値を決定する。なお、使用当初から第2確率の正確性を高くするため、ある程度学習を進めた第2ニューラルネットワークデータ8dを第1記憶部11にインストールしてもよい。
第1制御部10は、学習のため、第2トレーニングデータセット612を生成する。第1制御部10は、実際の印刷結果に基づき、第2トレーニングデータセット612を生成する。生成した第2トレーニングデータセット612を第1記憶部11に不揮発的に記憶させる。
図14を用いて、第2トレーニングデータセット612の生成の流れの一例を説明する。図14のスタートは、第2記憶部21が蓄積ジョブを所定個数蓄積した時点である。つまり、従属装置2が学習連続ジョブを蓄積した時点である。
まず、従属装置2(第2制御部20)は、第2実測時間を測る(ステップ♯51)。第2実測時間は従属装置2での学習連続ジョブの実行開始から終了までの時間である。第2制御部20は第2項目値42aを定める(ステップ♯52)。第2制御部20は、学習連続ジョブに含まれるそれぞれの蓄積ジョブのジョブデータに基づき、第2項目値42aを定める。温度、湿度のパラメーターについては、第2制御部20は、各蓄積ジョブの開始時の温度と湿度を第2項目値42aとする。
次に、第2制御部20は、第2学習連続ジョブリストを生成、送信する(ステップ♯53)。第2制御部20は、蓄積ジョブ単位、かつ、実行順に第2項目値42aを並べる。さらに、第2制御部20は、予め定められた項目順で第2項目値42aを並べる。第2学習連続ジョブリストと第2リスト42での第2項目値42aの並べ方は同じである。図12と同様のリストが生成される。そして、第2制御部20は、生成した第2学習連続ジョブリストを指揮装置1(第1通信部15)に送信する。
第1制御部10は、受信した第2学習連続ジョブリストに基づき、第2学習用入力データ610を生成する(ステップ♯54)。第1制御部10は各第2項目値42aを数値化する。第2入力データ52と同様に、第1制御部10は、第2生成用データ68に基づき、各第2項目値42aを数値化する。第2制御部20はマトリクス状の第2学習用入力データ610を生成する。第2学習用入力データ610は、学習用(従属装置2用)の第2入力データ52である。第2学習用入力データ610は、第2入力データ52と同じ大きさ(マトリクスのサイズ)である。第2制御部20は、縦と横のサイズが第2入力データ52と同じデータを生成する。第2制御部20は、第2入力データ52と同じ規則で第2学習用入力データ610を生成する。第2学習用入力データ610は、画像データのように、学習連続ジョブの特徴を示す値を格納する。
また、第1制御部10は第2標準時間を定める(ステップ♯55)。第2標準時間は、従属装置2での学習連続ジョブの実行に要する時間(全体時間)の標準値である。第1制御部10は、第2標準決定用データ69を参照する。第1制御部10は、従属装置2で、学習連続ジョブの各蓄積ジョブの各ページの印刷に必要な時間を認識する。第1制御部10は認識した時間を合計して第2標準時間を求める。
次に、第1制御部10は、第2実測時間が第2標準時間と許容値とを加算した値よりも長いか否かを判定する(ステップ♯56)。つまり、第1制御部10は、学習連続ジョブに要した時間が第2標準時間を超え、かつ、超えた時間が、許容値よりも長いか否かを確認する。実際に学習連続ジョブに要した時間に基づき、第1制御部10は、教師データ(正しい答え、判定結果)を得る。
第1制御部10は、第2トレーニングデータセット612を生成する(ステップ♯57)。第2トレーニングデータセット612は、第2学習用入力データ610と第2教師データ611(判定の結果)を含む。第2教師データ611は、第2実測時間が第2標準時間と許容値とを加算した値よりも長いか否かを示す。第2教師データ611は1ビット(1又はゼロ)のデータである。第1制御部10は生成した第2トレーニングデータセット612を第1記憶部11に記憶させる(ステップ♯58)。そして、本フローは終了する(エンド)。
次に、図15を用いて、従属装置2のための第2ニューラルネットワーク8の学習の流れの一例を説明する。図15のスタートは、未学習の第2トレーニングデータセット612が一定個数になった時点である。
まず、第1制御部10は、誤差逆伝搬法を用いて、学習(重みの更新、フィルターの係数の更新)を行う。第1制御部10は、未学習の第2トレーニングデータセット612を読み出す(ステップ♯61)。第1制御部10は、読み出したデータのうち、第2学習用入力データ610を第2ニューラルネットワーク8に入力する(ステップ♯62)。そして、第2学習用入力データ610に基づき、第1制御部10は第2確率を求める(ステップ♯63)。
次に、第1制御部10は、求めた第2確率と第2学習用入力データ610に基づき、各ユニットの重みを更新する(ステップ♯64)。言い換えると、学習により、第1制御部10は、第2ニューラルネットワーク8の各ユニットのフィルターの係数を更新する。確率的勾配降下法と誤差逆伝搬法に基づき、第1制御部10は学習を行う。誤差逆伝搬法では、最初に、第1制御部10は、第2ニューラルネットワーク8の出力層93の前段の隠れ層92(m層目)の重みに関する誤差Eを求める。
第1制御部10は、損失関数を用いて誤差Eを求める。損失関数には、二乗誤差を用いてもよい。二乗誤差を用いて、1つのサンプルデータ(第2トレーニングデータセット612)の誤差Eは、上述の(式1)で求めることができる。なお、第2教師データ611は1又はゼロである。そのため、損失関数には、2値クロスエントロピー関数を用いてもよい。
次に、第1制御部10は、重みwに対する誤差Eの勾配ΔE(誤差Eのwでの微分)を求める。勾配ΔEが正のとき、第1制御部10は、重みwを負の方向に更新する。勾配ΔEが負のとき、第1制御部10は、重みwを正の方向に更新する。重みwの更新式は上述の(式2)と同様である。
誤差Eは、重み(関数)、活性化関数、損失関数に基づき求まる。第1ニューラルネットワーク7と同様に、第1制御部10は、第2ニューラルネットワーク8の出力層93の前段(m層目)の隠れ層92の勾配ΔEを求める。第1制御部10は、ΔEと学習係数を乗じた値を、m層目の隠れ層92の現在の重みに加える、又は、減じる。これにより、m層目の隠れ層92の重みの更新が完了する。
次に、第1制御部10は、(m−1)番目の隠れ層92とm番目の隠れ層92の間の重みを更新する。第1制御部10は、m番目の隠れ層92の正しい出力と、m番目の隠れ層92の実際の出力の誤差Eを求める。このとき、m層目の隠れ層92の間の重み更新時の計算結果の一部を用いて、誤差Eを求めることができる。そして、第1制御部10は、(m−1)番目の隠れ層92の重みの勾配ΔEを求める。求めた勾配ΔEに基づき、(m−1)番目の隠れ層92の重みを更新する。
第1制御部10は、最も出力層93に近い隠れ層92から先頭の(最も入力側の)隠れ層92まで、勾配ΔEに基づく更新を繰り返す。第1制御部10は、第1ニューラルネットワークデータ7d内のフィルターの係数の更新を繰り返す。最終的に、第1ニューラルネットワークデータ7dの更新が完了する(ステップ♯35)。これにより、第1ニューラルネットワーク7の1回の学習が終了する(エンド)。
このようにして、実施形態に係る画像形成装置(指揮装置1)は、入力部(第1画像読取部12、第1通信部15)、印刷部(第1印刷部14)、記憶部(第1記憶部11)、制御部(第1制御部10)を含む。入力部は、印刷ジョブの実行に用いるジョブデータを取得する。印刷部は、ジョブデータに基づき印刷する。記憶部は、入力部が取得したジョブデータを記憶する。制御部は、印刷ジョブの実行順を調整する。記憶部は、未実行の印刷ジョブである蓄積ジョブのジョブデータを保持する。記憶部は、自機用の第1ニューラルネットワーク7を構築するための第1ニューラルネットワークデータ7dを記憶する。制御部は、所定個数の蓄積ジョブが記憶部に蓄積されたとき、それぞれの蓄積ジョブのジョブデータに基づき、複数の所定項目の値である第1項目値41aを定める。制御部は、蓄積ジョブ単位、かつ、予め定められた項目順で第1項目値41aを並べた第1リスト41を生成する。制御部は、第1リスト41に含まれる第1項目値41aに基づき第1入力データ51を生成する。制御部は、生成した第1入力データ51を第1ニューラルネットワーク7に入力する。制御部は、第1ニューラルネットワーク7を用いて第1確率を求める。第1確率が予め定められた閾値以下のとき、制御部は、第1リスト41での蓄積ジョブの並び順に沿って、印刷部に蓄積ジョブを行わせる。第1確率は、第1リスト41での蓄積ジョブの並び順で蓄積ジョブを実行した場合、第1リスト41に含まれる全ての蓄積ジョブの実行に要する第1全体時間が、第1全体時間の標準値と予め定められた許容値とを加算した値よりも長くなる確率である。
この構成によれば、所定個数の蓄積ジョブの実行順は、最初の蓄積ジョブの開始から最後の蓄積ジョブの完了までの時間が長くなりにくい順番とされる。第1全体時間が短くなるように、実行順を調整することができる。蓄積ジョブの実行順を自動的に調整することができる。その結果、印刷の所要時間は短くなりやすい。これにより、画像形成装置の印刷の生産性(印刷速度)を高めることができる。
また、制御部は、求めた第1確率が閾値を超えているとき、新たな第1リスト41を生成する。制御部は、同じ蓄積ジョブについて、前に生成した第1リスト41と蓄積ジョブの並び順が異なるように、新たな第1リスト41を生成する。新たな第1リスト41を生成したとき、制御部は、新たな第1リスト41に含まれる第1項目値41aに基づき新たな第1入力データ51を生成する。新たな第1入力データ51を生成したとき、制御部は、新たな第1入力データ51を第1ニューラルネットワーク7に入力する。制御部は、求められた第1確率が閾値以下となるまで、新たな第1リスト41の生成を繰り返す。第1確率が閾値を下回るまで第1リスト41の生成を繰り返すことができる。蓄積ジョブの並べ方を柔軟に変えることができる。最初の蓄積ジョブの開始から最後の蓄積ジョブの完了までに要する時間が短くなるように、蓄積ジョブの実行順を定めることができる。
蓄積ジョブを所定個数連続して実行する学習連続ジョブを実行したとき、制御部は、学習連続ジョブの実行開始から終了までの時間である第1実測時間を測る。制御部は、実行したそれぞれの蓄積ジョブについて、第1項目値41aを定める。制御部は、蓄積ジョブ単位、かつ、実行順に第1項目値41aを並べ、さらに、予め定められた項目順で第1項目値41aを並べた第1学習用リストを生成する。制御部は、第1学習用リストに基づき、第1学習用入力データ65を生成する。制御部は、全ての学習連続ジョブの実行に要する時間の標準値である第1標準時間を定める。制御部は、第1実測時間が第1標準時間と許容値とを加算した値よりも長いか否かを判定する。制御部は、当該判定の結果と第1学習用入力データ65を含む第1トレーニングデータセット67を生成する。制御部は、生成した第1トレーニングデータセット67を用いて、第1ニューラルネットワーク7の学習を行う。ジョブの実行結果を用いて、第1ニューラルネットワーク7の学習を行うことができる。第1ニューラルネットワーク7に含まれる各層のユニットの重み(各フィルターの係数)を適切に更新することができる。ジョブの実行結果に基づき学習を行うので、画像形成装置の使用環境、経年劣化、顧客の設定傾向を反映した第1ニューラルネットワーク7を構築することができる。第1確率の正確性を高めることができる。
記憶部は、蓄積ジョブの並び替えの規則を定めた規則情報64を記憶する。新たな第1リスト41を生成するとき、制御部は、規則に反しないように、蓄積ジョブの並び順を替える。規則に反する順番で蓄積ジョブが実行されることを防ぐことができる。
指揮装置1は、他の画像形成装置と通信する通信部を含む。生成し得る全てのパターンについて、第1リスト41を生成しても第1確率が閾値以下にならないとき、制御部は、他の画像形成装置に向けて、第1リスト41に含まれる蓄積ジョブのジョブデータを通信部に送信させる。制御部は、他の画像形成装置に蓄積ジョブを実行させる。どのような蓄積ジョブの実行順でも、全蓄積ジョブの実行に時間がかかる可能性が高い場合、他の画像形成装置に蓄積ジョブを実行させることができる。全ての蓄積ジョブの印刷所要時間の短縮化につながる。
制御部は、制御回路と、ニューラルネットワークに関する演算を行うための演算処理装置3を含む。ニューラルネットワークに関する演算は多くなることがある。通常の制御回路だけでは、演算時間が長くなる可能性がある。専用の演算処理装置3を設けることにより、高速にニューラルネットワークに関する演算を行うことができる。
所定項目は、用紙サイズ、用紙向き、用紙種類、カラー設定のうち、複数を含む。この構成によれば、使用者の印刷設定の傾向や、画像形成装置の使用環境を反映させて、第1確率を求める(推測する)ことができる。
印刷制御システム100は、指揮装置1と、指揮装置1と通信する画像形成装置である従属装置2を含む。指揮装置1は、従属装置2ごとに、第2ニューラルネットワーク8を構築するための第2ニューラルネットワークデータ8dを記憶する。従属装置2はジョブデータを取得する。従属装置2は取得したジョブデータを記憶する。所定個数の蓄積ジョブを蓄積したとき、従属装置2はそれぞれの蓄積ジョブに基づき、複数の所定項目の値である第2項目値42aを定める。従属装置2は、蓄積ジョブ単位で第2項目値42aを並べ、かつ、予め定められた項目順で第2項目値42aを並べた第2リスト42を生成する。従属装置2は生成した第2リスト42を指揮装置1に送信する。指揮装置1の制御部(第1制御部10)は、第2リスト42に含まれる第2項目値42aに基づき第2入力データ52を生成する。指揮装置1の制御部は、生成した第2入力データ52を、第2リスト42を送信した従属装置2に対応する第2ニューラルネットワーク8に入力する。指揮装置1の制御部は、第2ニューラルネットワーク8を用いて第2確率を求める。指揮装置1の制御部は第2確率が閾値以下の第2リスト42を従属装置2に与える。従属装置2は、与えられた第2リスト42の蓄積ジョブの並び順で、蓄積ジョブの印刷を行う。第2確率は、第2リスト42での蓄積ジョブの並び順で蓄積ジョブを実行した場合、第2リスト42に含まれる全ての蓄積ジョブの実行に要する第2全体時間が、第2全体時間の標準値と許容値とを加算した値よりも長くなる確率である。
この構成によれば、従属装置2において、複数の蓄積ジョブがある場合、蓄積ジョブの実行順は、最初の蓄積ジョブの開始から最後の蓄積ジョブの完了までの時間が長くなりにくい順番とされる。第2全体時間が短くなるように、実行順を調整することができる。蓄積ジョブの実行順を自動的に調整することができる。印刷の所要時間は短くなりやすい。従って、画像形成装置の印刷の生産性(印刷速度)を高めることができる。従属装置2の演算処理能力が低くても、ニューラルネットワークを用いて蓄積ジョブの実行順を定めることができる。
指揮装置1の制御部は、第2確率が閾値を超えているとき、新たな第2リスト42を生成する。指揮装置1の制御部は、同じ蓄積ジョブについて、前に生成した第2リスト42と蓄積ジョブの並び順が異なるように、新たな第2リスト42を生成する。新たな第2リスト42を生成したとき、指揮装置1の制御部は、新たな第2リスト42に含まれる第2項目値42aに基づき新たな第2入力データ52を生成する。新たな第2入力データ52を生成したとき、指揮装置1の制御部は、新たな第2入力データ52を対応する第2ニューラルネットワーク8に入力する。指揮装置1の制御部は、求められた第2確率が閾値以下となるまで、新たな第2リスト42の生成を繰り返す。第2確率が閾値を下回るまで第2リスト42の生成を繰り返すことができる。蓄積ジョブの並べ方を柔軟に変えることができる。従属装置2において、第2全体時間が短くなるように、蓄積ジョブの実行順を定めることができる。
蓄積ジョブを所定個数連続して実行する学習連続ジョブを実行したとき、従属装置2は、学習連続ジョブの実行開始から終了までの時間である第2実測時間を測る。従属装置2は、実行したそれぞれの蓄積ジョブについて、第2項目値42aを定める。従属装置2は、蓄積ジョブ単位、かつ、実行順に第2項目値42aを並べ、更に、予め定められた項目順で第2項目値42aを並べた第2ジョブ結果リストを生成する。従属装置2は、第2実測時間、第2ジョブ結果リストを指揮装置1に送信する。指揮装置1の制御部は、受信した第2ジョブ結果リストに基づき、第2学習用入力データ610を生成する。指揮装置1の制御部は、受信した第2ジョブ結果リストに基づき、全ての学習連続ジョブの実行に要する時間の標準値である第2標準時間を定める。指揮装置1の制御部は、第2実測時間が第2標準時間と許容値とを加算した値よりも長いか否かを判定する。当該判定の結果と第2学習用入力データ610に基づいて、指揮装置1の制御部は、第2トレーニングデータセット612を生成する。生成した第2トレーニングデータセット612を用いて、指揮装置1の制御部は、第2ニューラルネットワーク8の学習を行う。従属装置2のジョブの実行結果を用いて、第2ニューラルネットワーク8の学習を行うことができる。第2ニューラルネットワーク8に含まれる各層のユニットの重み(各フィルターの係数)を適切に更新することができる。従属装置2のジョブの実行結果に基づき学習を行うので、従属装置2の使用環境、経年劣化、顧客の設定傾向を反映した第2ニューラルネットワーク8を構築することができる。第2確率の正確性を高めることができる。
指揮装置1の記憶部は、蓄積ジョブの並び替えの規則を定めた規則情報64を記憶する。新たな第2リスト42を生成するとき、指揮装置1の制御部は、規則に反しないように、第2リスト42の蓄積ジョブの並び順を替える。規則に反する順番で蓄積ジョブが実行されることを防ぐことができる。
生成し得る全てのパターンについて、第2リスト42を生成しても第2確率が閾値以下にならないとき、指揮装置1の制御部は、生成した第2リスト42のうち、最も第2確率が小さくなった第2リスト42を対応する従属装置2に与える。従属装置2は、与えられた第2リスト42の蓄積ジョブの並び順で、蓄積ジョブの印刷を行う。どのような蓄積ジョブの実行順でも、従属装置2で全蓄積ジョブの実行に時間がかかる可能性が高い場合、第2全体時間が最も長くなりにくい順番で蓄積ジョブを実行させることができる。できるだけ早く印刷が終わるように、蓄積ジョブの実行順を定めることができる。
本発明の実施形態を説明したが、本発明の範囲はこれに限定されるものではなく、発明の主旨を逸脱しない範囲で種々の変更を加えて実施することができる。
上記の説明では、印刷ジョブ単位で第1項目値41aを並べ、第1制御部10が第1リスト41を生成する例を説明した。しかし、1ページ単位で第1項目値41aを並べ、第1リスト41を生成してもよい。また、印刷ジョブ単位で第2項目値42aを並べ、第2制御部20が第2リスト42を生成する例を説明した。しかし、1ページ単位で第1項目値41aを並べ、第2リスト42を生成してもよい。これらの場合、複数ページの印刷ジョブは1ページ単位に分解される。