JP7185140B2 - 最適化装置及び最適化装置の制御方法 - Google Patents

最適化装置及び最適化装置の制御方法 Download PDF

Info

Publication number
JP7185140B2
JP7185140B2 JP2019075703A JP2019075703A JP7185140B2 JP 7185140 B2 JP7185140 B2 JP 7185140B2 JP 2019075703 A JP2019075703 A JP 2019075703A JP 2019075703 A JP2019075703 A JP 2019075703A JP 7185140 B2 JP7185140 B2 JP 7185140B2
Authority
JP
Japan
Prior art keywords
bit
value
unit
identification information
group
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.)
Active
Application number
JP2019075703A
Other languages
English (en)
Other versions
JP2020173661A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2019075703A priority Critical patent/JP7185140B2/ja
Priority to EP20164455.6A priority patent/EP3722941B1/en
Priority to US16/838,057 priority patent/US11422515B2/en
Priority to CN202010269201.7A priority patent/CN111812972B/zh
Publication of JP2020173661A publication Critical patent/JP2020173661A/ja
Application granted granted Critical
Publication of JP7185140B2 publication Critical patent/JP7185140B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B13/00Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion
    • G05B13/02Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric
    • G05B13/04Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric involving the use of models or simulators
    • G05B13/042Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric involving the use of models or simulators in which a parameter or coefficient is automatically adjusted to optimise the performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02TCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
    • Y02T10/00Road transport of goods or passengers
    • Y02T10/10Internal combustion engine [ICE] based vehicles
    • Y02T10/40Engine management systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Operations Research (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Automation & Control Theory (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computational Linguistics (AREA)
  • Complex Calculations (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は、最適化装置及び最適化装置の制御方法に関する。
ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型のエネルギー関数を用いた最適化装置(イジングマシンまたはボルツマンマシンと呼ばれる場合もある)がある。最適化装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
最適化装置は、たとえば、ニューラルネットワークを用いてモデル化することもできる。その場合、イジングモデルに含まれる複数のスピンに対応した複数のビットのそれぞれが、他のビットの値と、他のビットと自身のビットとの相互作用の大きさを示す重み値(結合係数とも呼ばれる)とに応じて0または1を出力するニューロンとして機能する。最適化装置は、たとえば、シミュレーテッド・アニーリングなどの確率的探索法により、上記のようなエネルギー関数(コスト関数、目的関数とも呼ばれる)の値(以下エネルギーという)の最小値が得られる状態(各ビットの値の組み合わせ)を、解として求める。
従来、デジタル回路を用いてシミュレーテッド・アニーリングを行うことでエネルギーが最小となる状態を計算する最適化装置がある(たとえば、特許文献1参照)。従来の最適化装置は、一度に1つのビットの値だけ変化するとしてエネルギー変化を計算し、そのエネルギー変化に対して温度に対応するノイズ値を加えた値に応じてビットの変化を許容するか否かを決定する。エネルギーが増加するビットの値の変化も所定の確率で許容され、温度が低くなるにつれてその確率は低くなる。
ところで、最適化問題には、それぞれ複数のビットを含む複数のグループのそれぞれにおいて、値が1となるビットの数を1つのみとする制約(1-hot制約)をもつものがある(たとえば、特許文献2,3参照)。たとえば、多くのスケジューリング問題(巡回セールスマン問題、配車計画問題など)や、ナップザック問題、ビンパッキング問題などは、1-hot制約をもつ。
特開2018-041351号公報 国際公開第2017/017807号 国際公開第2017/056366号
上記のように、従来の最適化装置では一度に変化するビットの数は1つである。つまり、従来の最適化装置は、ハミング距離=1の状態遷移を繰り返しながらエネルギーが最少となる基底状態の探索を行う。そのため、従来の最適化装置では、1-hot制約を満たさない状態への遷移も発生し、遷移が起こりうる状態の数(探索空間)が1-hot制約を満たす状態の数よりも大きい。また、1-hot制約項のために生じるエネルギー障壁のために状態遷移に時間がかかる。以上のことから、従来の最適化装置では、1-hot制約をもつ最適化問題の計算(基底状態の探索)に時間がかかるという問題がある。
1つの側面では、本発明は、1-hot制約をもつ最適化問題の計算時間を短縮可能な最適化装置及び最適化装置の制御方法を提供することを目的とする。
1つの実施態様では、計算対象の問題を変換したイジングモデルに含まれる複数のスピンに対応する複数のビットについて、前記複数のビットが複数のグループに分けられた場合における前記複数のグループのそれぞれに含まれる複数個のビットのうち、値が1である第1のビットについての第1のローカルフィールド値と、値が0である第2のビットについての第2のローカルフィールド値とに基づいて、前記第1のビットの値が1から0に変化するとともに前記第2のビットの値が0から1に変化することによる前記イジングモデルの第1のエネルギー変化を、それぞれ算出する複数の算出回路と、入力される温度パラメータと、乱数とに基づいて決定される熱励起エネルギーと、前記複数の算出回路がそれぞれ出力する前記第1のエネルギー変化との大小関係に基づいて、前記複数のグループのそれぞれに含まれる前記第2のビットのうち、0から1への値の更新を許容する1つの前記第2のビットを識別する第1のビット識別情報を出力する選択回路と、前記選択回路が出力する前記第1のビット識別情報に基づいて、更新が許容された前記第2のビットが属す第1のグループを検出し、前記第1のグループに属す前記第1のビットを識別する第2のビット識別情報を出力する識別情報計算部と、前記識別情報計算部が出力する前記第2のビット識別情報に基づいて、前記第1のグループに属す前記第1のビットの値を1から0に更新するとともに、前記第1のビット識別情報に基づいて、更新が許容された前記第2のビットの値を0から1に更新する更新部と、前記複数のグループの各々において、第1の記憶部が保持する前記複数のビットのそれぞれの間の相互作用の大きさを示す重み値の行列のうち、値が1であるビットを識別するビット識別情報に対応する全ての行を保持する第2の記憶部と、前記第1のローカルフィールド値と前記第2のローカルフィールド値とをそれぞれ、前記選択回路が出力する前記第1のビット識別情報に基づいて前記第1の記憶部から読み出される前記第1のビット識別情報に対応する第1の行と、前記第2の記憶部から読み出される前記第2のビット識別情報に対応する第2の行とに基づいて生成するローカルフィールド生成部と、を有する最適化装置が提供される。
また、1つの実施態様では、最適化装置の制御方法が提供される。
1つの側面では、本発明は、1-hot制約をもつ最適化問題の計算時間を短縮できる。
第1の実施の形態の最適化装置の一例を示す図である。 比較例の最適化装置を示す図である。 レプリカ交換法を用いたときの、第1の実施の形態の最適化装置と比較例の最適化装置における処理時間の違いを示す模式図である。 第2の実施の形態の最適化装置の一例を示す図である。 算出部の一例を示す図である。 各記憶回路に保持される重み値の例を示す図である。 記憶回路とデコード部の一例を示す図である。 記憶部の動作例を示す図である。 記憶部の動作例を示すタイミングチャートである(その1)。 記憶部の動作例を示すタイミングチャートである(その2)。 グループインデックスの値の例を示す図である。 h伝搬制御部の一例を示す図である。 制御信号生成回路の一例を示す図である。 ΔE算出回路による処理例を示す図である。 選択回路の一例を示す図である。 識別情報計算部の一例を示す図である。 第2の実施の形態の最適化装置の一例の処理の流れを示すフローチャートである。 初期設定処理の一例の流れを示すフローチャートである。 1-hot制約対応機能を無効にする構成を有する最適化装置の一部を示す図である。 1-hot制約対応機能を無効にする構成を有する最適化装置におけるh伝搬制御部の一例を示す図である。 1-hot制約対応機能を無効にする構成を有する最適化装置におけるΔE算出回路の例を示す図である。 重み値を用いてエネルギー変化を計算する最適化装置における算出部の一例を示す図である。
以下、発明を実施するための形態を、図面を参照しつつ説明する。
以下に示す最適化装置は、1-hot制約を満たす状態以外の状態の探索を除外することで、1-hot制約をもつ最適化問題の計算時間を短縮するものである。
イジングモデルに含まれる複数のスピン(スピン数=N)に対応するN個のビットの値を、状態変数であるx~xで表す場合、たとえば、以下の式(1)の各{}内のグループで値が1になる状態変数の数が1つのみであるときに1-hot制約が満たされる。
Figure 0007185140000001
たとえば、あるグループ内にx,x,xの3つの状態変数がある場合、{x,x,x}={1,0,0},{0,1,0},{0,0,1}という状態は、1-hot制約を満たす。一方、{x,x,x}={0,0,0},{1,1,0},{1,0,1},{0,1,1},{1,1,1}という状態は、1-hot制約を満たさない。1-hot制約を満たすある状態から、1-hot制約を満たす別の状態に遷移させるためには、最適化装置は、1回の状態更新処理において2ビットの値を変化させることになる。つまり、最適化装置は、ハミング距離=2の状態遷移を発生させることになる。
1-hot制約は、以下の式(2)で表すことができる。
Figure 0007185140000002
式(2)において、Gはグループの数(2以上の整数)、mは、グループjに属する状態変数の数である。
1-hot制約を考慮した最適化問題のエネルギー関数は、以下の式(3)のように表すことができる。
Figure 0007185140000003
式(3)において、右辺の1項目はコスト関数、2項目は1-hot制約を考慮した1-hot制約項、3項目以降はその他の制約を考慮した制約項(この中に別の1-hot制約項が含まれている場合もある)を表す。1-hot制約が満たされない場合に、エネルギーが小さくなる、ということが起きないように、λ(制約重み)として十分大きな値が用いられることになる。
一方、重み値を用いたイジング型のエネルギー関数E(x)は、たとえば、以下の式(4)で定義される。
Figure 0007185140000004
右辺の1項目は、イジングモデルに含まれる全ビットから選択可能な2つのビットの全組み合わせについて、漏れと重複なく、2つのビットの値(0または1)と重み値との積を積算したものである。xは、インデックス(ビット識別情報)=iのビットの値を表す状態変数、xは、インデックス=jのビットの値を表す状態変数であり、Wijは、インデックス=i,jのビットの相互作用の大きさを示す重み値である。なお、Wii=0である。また、Wij=Wjiであることが多い(つまり、重み値による係数行列は対称行列である場合が多い)。
右辺の2項目は、全ビットのそれぞれのバイアス値とビットの値との積の総和を求めたものである。bは、インデックス=iのビットのバイアス値を示している。
1-hot制約を満たす状態以外についても探索が行われる場合、式(4)のWijを表現するためのビット数は、式(3)のλの値が大きいほど大きくなる。λは、たとえば、上記のN(問題のサイズに相当する)や、Wijとのバランスをみて決定される。たとえば、最初はWijの最大値の10倍程度のλを用いてWijやbが計算され、エネルギーの最小化が行われる。収束解が1-hot制約を満たしていなければ、1-hot制約を満たすようになるまで、λの値が増加される。
一方、1-hot制約を満たす状態のみの探索が行われる場合、式(3)の右辺の2項目の1-hot制約項をなくせるため、Wijを表現するためのビット数を少なくできる。
ところで、式(4)において、xの値が変化して1-xとなると、xの増加分は、Δx=(1-x)-x=1-2xと表せる。この値の変化に伴うエネルギー変化(ΔE)は、以下の式(5)で表される。
Figure 0007185140000005
式(5)において、xが1から0に変化するとき、Δxは-1となり、xが0から1に変化するとき、Δxは1となる。なお、hはローカルフィールド値(局所場)と呼ばれ、Δxに応じてhに符号(+1または-1)を乗じたものがΔEである。
が0から1に変化するときのhの変化分は、Δh (j)=+Wij、xが1から0に変化するときのhの変化分は、Δh (j)=-Wijである。同様に、xが変化したときのインデックス=jのビットについてのhの変化分は、Δh (i)=Δxij、と表せる。
したがって、x,xが両方変化したときのエネルギー変化は、以下の式(6)で表せる。
Figure 0007185140000006
前述のように、1-hot制約を満たすある状態から、1-hot制約を満たす別の状態に遷移するには、2ビットの値を変化させることになる。インデックス=iのビットの値が1から0に変化するとともにインデックス=jのビットの値が0から1に変化する場合のエネルギー変化をΔEと表記すると、Δx=-1、Δx=1であるため、式(6)から、ΔEは以下の式(7)で表せる。
Figure 0007185140000007
以下に示す最適化装置は、式(7)で表されるエネルギー変化の計算を行う回路を含む。
ところで、最適化装置が、1回の状態更新処理において2ビットの値を変化させる処理を繰り返して基底状態を探索していく際、各状態更新処理では、エネルギー変化を計算するために、ローカルフィールド値の更新が行われる。たとえば、あるグループにおいてインデックス=lのビットの値が0から1に変化し、インデックス=kのビットの値が1から0に変化する場合、N個のビットについてのh~hは、以下の式(8)に基づいて更新される。
Figure 0007185140000008
式(8)において、h (kl)~h (kl)は、更新後のローカルフィールド値である。
(kl)~h (kl)を計算するためには、式(8)のように、重み値の行列のうち、インデックス=kについての行(Wk,1~Wk,N)と、インデックス=lについての行(Wl,1~Wl,N)が用いられることになる。
多数回の繰り返し処理が行われる最適化装置において、各状態更新処理において、重み値を格納しているメモリからこれら各行の重み値を2回のメモリアクセスにより読み出す場合、スループット性能が低下してしまう。
以下に示す最適化装置は、1-hot制約を満たす状態以外の状態の探索を除外するだけでなく、上記のようなスループット性能の低下についても抑制するものである。
(第1の実施の形態)
図1は、第1の実施の形態の最適化装置の一例を示す図である。
最適化装置10は、記憶部11,12、h生成部13、ΔE算出部14、選択回路15、識別情報計算部16、更新部17を有する。
なお、図1では、N個のビットがG個のグループに分けられた場合におけるp番目のグループpに含まれる複数個(n個)のビットの間でハミング距離=2の状態遷移が生じることによるエネルギー変化を計算する回路部分が示されている。他のグループについてのエネルギー変化を計算する回路部分は、図1では図示が省略されている。
記憶部11は、N個のビットのそれぞれの間の相互作用の大きさを示す重み値の行列を保持している。重み値の行列は、初期設定処理時に、図示しない制御部によって記憶部11に記憶される。図1の例では、グループpに含まれるビット(インデックス=p1~pn)のそれぞれと、N個のビットとの間の相互作用の大きさを示す重み値が示されている。記憶部11は、たとえば、レジスタやSRAM(Static Random Access Memory)などを用いて実現される。
記憶部12は、G個のグループの各々において、記憶部11が保持する重み値の行列のうち、値が1であるビットを識別するインデックスに対応する全ての行を保持する。図1の例ではグループ1~グループGの各々において、値が1であるビットのインデックスをk1~kGと表記している。たとえば、インデックス=k1は、グループ1において値が1であるビットのインデックスであり、インデックス=kGは、グループGにおいて値が1であるビットのインデックスである。
また、図1の例では、グループpに含まれるn個のビットのそれぞれと、各グループにおいて値1であるビットとの間の重み値を保持する保持部12p1,12p2,…,12pnが図示されている。たとえば、保持部12p1は、インデックス=p1のビットと、インデックス=k1~kGのそれぞれのビットとの間の相互作用の大きさを示す重み値(Wk1,p1,Wk2,p1,…,WkG,p1)を保持する。保持部12pnは、インデックス=pnのビットと、インデックス=k1~kGのそれぞれのビットとの間の相互作用の大きさを示す重み値(Wk1,pn,Wk2,pn,…,WkG,pn)を保持する。保持部12p1~12pnは、たとえば、レジスタやSRAMなどを用いて実現される。
後述のように選択回路15は0から1への値の変化が許容されるビットのインデックス=lを出力する。そのとき、インデックス=lのビットが属すグループに含まれるビットのうち値が1のビット(インデックス=k(k1~kGの何れか)のビット)と全ビットとの間の重み値が、記憶部12から読み出される。つまり、インデックス=kに対応する重み値の行が、記憶部12から読み出される。たとえば、インデックス=lが、グループ2に属す何れかのビットのインデックスである場合、Wk2,1~Wk2,Nという重み値の行が、記憶部12から読み出される。
記憶部12に保持される重み値は、記憶部11から読み出されるインデックス=lに対応する重み値の行によって更新される。インデックス=lに対応する重み値の行は、次にインデックス=lのビットが属すグループの別のビットの値が0から1に変化する場合、インデックス=kに対応する重み値の行として用いることができるためである。
なお、記憶部12への書き込みと記憶部12からの読み出しは、同じグループに属すビットに関する重み値に対して行われるため、いわゆるリード-ライト問題の発生を防ぐための構成が適用される。その構成の例については後述する。
また、最適化装置10において、後述のレプリカ交換法(交換モンテカルロ法とも呼ばれる)が行われる場合、記憶部12に保持される重み値は、レプリカごとに独立に保持される。
h生成部13は、記憶部11から読み出されるインデックス=lに対応する重み値の行と、記憶部12から読み出されるインデックス=kに対応する重み値の行とに基づいてローカルフィールド値を生成する。記憶部11,12からの読み出しは同じタイミング(クロックタイミング)で行われる。
図1の例では、h生成部13は、グループpに含まれるn個のビットのそれぞれについてのローカルフィールド値であるhp1,hp2,…,hpnを生成するh生成回路13p1,13p2,…,13pnを有している。h生成回路13p1~13pnのそれぞれは、図示を省略しているが保持部(たとえば、レジスタ)を有し、hp1~hpnの何れかの保持及び更新を行う。たとえば、h生成回路13p1は、Wk,p1,Wl,p1を用いて、hp1-Wk,p1+Wl,p1を計算することで、hp1を更新する。インデックス=lのビットがグループ1に属す場合、Wk,p1=Wk1,p1である。h生成回路13pnは、Wk,pn,Wl,pnを用いて、hpn-Wk,pn+Wl,pnを計算することで、hpnを更新する。インデックス=lのビットがグループ1に属す場合、Wk,pn=Wk1,pnである。
p1~hpnの初期値は、たとえば、バイアス値(bp1~bpn)であり、初期設定処理時に、図示しない制御部によって設定される。h生成回路13p1~13pnは、たとえば、レジスタのほかに、加算器または減算器を用いて実現される。最適化装置10において、後述のレプリカ交換法が行われる場合、hp1~hpnは、レプリカごとに独立に保持される。
ΔE算出部14は、h生成部13が生成したローカルフィールド値に基づいて、エネルギー変化を計算する。図1の例では、ΔE算出部14は、グループpに含まれるn個のビットのそれぞれが変化する場合のエネルギー変化(ΔEp1,ΔEp2,…,ΔEpn)を算出するΔE算出回路14p1,14p2,…,14pnを有している。
グループpが1-hot制約を満たしているとき、グループpに含まれるn個のビットのうち、1つのビットの値が1であり、他のビットの値は0である。以下、グループpにおけるn個のビットの値を示す状態変数(xp1,…,xpn)のうち、xp1が1、xp2~xpnが0であるものとする。
その場合、ΔE算出回路14p2~14pnは、hp2~hpnに基づいて、xp1が1から0に変化するとともに、xp2~xpnの値が0から1に変化することによるΔEp1~ΔEpnを算出する。ΔEp1~ΔEpnのうち、ΔEp2~ΔEpnは、式(7)に基づいて算出される。なお、式(4)のWijにおいて、x,xが同じ1-hot制約を満たすべき同一グループに属す2つのビットの値の場合、xまたはxが0であるため(図1の例ではxp1=1、xp2~xpn=0)、Wij=0となる。つまり、Wijはエネルギーに寄与しない。このため、図1の例ではWij=0としている。したがって、たとえば、ΔEp2は、ΔEp2=hp1-hp2という式により算出され、ΔEpnは、ΔEpn=hp1-hpnという式により算出される。
なお、ハミング距離=2の状態遷移には、xが1から0に変化し、さらに0から1に変化する遷移もある。しかし状態としては何も変化していないことになるため、計算時間を短縮する上で、このような状態遷移が発生することは望ましくない。図1の例では、値が1であるxp1が変化するときのΔEp1を算出するΔE算出回路14p1には1つのローカルフィールド値(hp1)が供給される。このようなΔE算出回路14p1が、hp1に基づいて、xp1が上記のように2回変化するときのΔEp1を計算する場合、i=jとしたときの式(7)を計算することになり、ΔEp1=0となる。ΔEp1=0の場合、後述の選択回路15の処理により、xp1が2回変化する上記の状態遷移が許容される可能性がある。選択回路15では、エネルギー変化が正の大きな値になるほど、そのエネルギー変化を引き起こす状態遷移の許容確率が下がる。そのため、ΔE算出回路14p1は、所定の正の値(図1では「ΔEmax」と表記されている)を出力するように更新部17によって制御される。ΔEmaxは、たとえば、最適化装置10が生成できる正の最大値である。たとえば、最適化装置10が26ビットの値を生成できる場合、正の最大値は、2の補数で表現した場合、01…1(1の数が25個)となる。
ΔE算出回路14p1には、更新部17から、たとえば、値が1である制御信号ENp1が供給され、ΔE算出回路14p1は、上記のようなΔEmaxを出力する。一方、ΔE算出回路14p2~14pnには、更新部17から、たとえば、値が0である制御信号ENp2~ENpnが供給され、ΔE算出回路14p2~14pnは、上記のようなエネルギー変化を計算する。
なお、図1の例ではグループpに3つ以上のビットがあるものとしているが、2つであってもよい。
選択回路15は、熱励起エネルギーと、複数のΔE算出回路がそれぞれ出力するエネルギー変化との大小関係に基づいて、グループ1~Gのそれぞれに含まれる値が0のビットのうち、0から1への値の更新を許容する1つを識別するインデックス=lを出力する。熱励起エネルギーは、乱数と、図示しない制御部から入力される温度パラメータ(T)に基づいて決定される。
最適化装置10において、シミュレーテッド・アニーリングが行われる場合、Tは、たとえば、制御部によって、イジングモデルの状態を更新する処理が、所定回数繰り返されるごとに、値が小さくなるように制御される。また、後述のレプリカ交換法が行われる場合、Tは、複数のレプリカのそれぞれに対して互いに異なる値が適用される。なお、上記のような選択回路15の機能を実行する回路例については後述する。
識別情報計算部16は、選択回路15が出力するインデックスに基づいて、更新が許容されたビットが属すグループを検出し、検出したグループに属す値が1のビットを識別するインデックス=kを出力する。識別情報計算部16は、たとえば、テーブルデータまたは論理回路を用いてグループの検出やインデックスの生成を行う。
図1の例では、識別情報計算部16は、インデックス=lも出力しているが、選択回路15が出力するインデックス=lが直接、更新部17に供給される場合には、識別情報計算部16は、インデックス=lを出力しなくてもよい。
更新部17は、N個のビットの値(x~x)の値を保持する記憶部17aを有している。記憶部17aは、たとえば、レジスタやSRAMなどを用いて実現される。更新部17は、識別情報計算部16が出力するインデックス=kによって識別されるビットの値を1から0に更新するとともに、インデックス=lによって識別されるビットの値を0から1に更新する。また、更新部17は、x~xに基づいて、上記のような制御信号ENp1~ENpnを出力する。
なお、図1では図示が省略されているが、インデックス=lは、記憶部11に記憶されている重み値の中から記憶部12またはh生成部13に供給する重み値を選択するために用いられる。また、識別情報計算部16は、検出したグループを識別するグループ識別情報(グループインデックス)を出力してもよい。グループインデックスは、たとえば、記憶部12に記憶する重み値を更新する際に用いられる。これらの処理については後述する。
以下、最適化装置10の動作例を説明する。最適化装置10では、前述のシミュレーテッド・アニーリングまたは、レプリカ交換法が用いられる。
レプリカ交換法は、複数の温度に対して独立に(論理的に)並列に状態遷移を行い、ある反復回数ごとに、それぞれの状態(レプリカ)のエネルギーを比較し、所定の確率(たとえば、メトロポリス法に従った確率)で異なる温度の間で状態を交換する方法である。これにより、シミュレーテッド・アニーリングと同様な効果が得られるとともに、それぞれの温度における状態の確率分布がボルツマン分布に収束するための緩和時間を、シミュレーテッド・アニーリングに比べて短縮することができる。なお、状態の代わりにレプリカ間で温度を交換しても同様な効果が得られる。図1に示したような最適化装置10でレプリカ交換法を実現する場合、複数のレプリカはパイプライン化されて動作する。そして、図示しない制御部によって、ある反復回数ごとに、各レプリカのエネルギーに基づいて、所定の確率で、隣接する温度が設定されているレプリカの間で温度が交換される。状態を交換するよりも温度を交換したほうが、送受信するデータ量を少なくできる。
以下、最適化装置10の動作の一例の流れを説明する。
まず、初期設定が行われる。初期設定は、たとえば、図示しない制御部の制御のもとx~xを全て0に設定した後に、各グループにおいて、1つのビットの値を1に設定し、他のビットの値を0に設定する処理やローカルフィールド値の初期値の設定を含む。さらに、初期設定として、記憶部12に重み値を書き込む処理や、設定された各ビットの値と式(5)に基づいたローカルフィールド値の生成(更新)処理などが行われる。
以上のような初期化後、ΔE算出回路14p1~14pnは、上記のようにΔEp1~ΔEpnの計算を行い、選択回路15は、0から1への値の更新を許容する1つを識別するインデックス=lを出力する。
たとえば、選択回路15が出力するインデックス=lが、値が0であるビットのインデックス=pnと一致する場合、識別情報計算部16は、インデックス=lに基づいて、グループpを検出する。そして、識別情報計算部16は、グループpにおいて、値が1であるビットのインデックス=p1を、インデックス=kとして出力する。
その場合、更新部17は、インデックス=k,lを受けて、xp1を1から0に更新し、xpnを0から1に更新する。これによって、グループpにおいて、1-hot制約を満たした状態間での遷移が可能となる。
また、xp1が1から0に更新され、xpnが0から1に更新された場合、ΔE算出部14において、ΔE算出回路14p1には、hpnが供給され、ΔE算出回路14p1は、ΔEp1=hpn-hp1を計算することになる。一方、ΔE算出回路14pnは、ΔEmaxを計算することになる。このように、ΔE算出回路14p1~14pnのうち、異なる2つのローカルフィールド値が供給されるΔE算出回路は、グループpに属すビットの値が更新されるたびに変わる。このようなローカルフィールド値の供給先の変更を制御する構成の例については後述する。
また、選択回路15がインデックス=lを出力したとき、h生成部13により、ローカルフィールド値の更新が行われる。ローカルフィールド値の更新時には、記憶部11,12から同じタイミングで、ローカルフィールド値を生成するための重み値が、h生成部13に供給される。たとえば、h生成部13のうち、グループpに属すビットについてのローカルフィールド値を生成するh生成回路13p1~13pnには、記憶部11からWl,p1~Wl,pnが供給され、記憶部12からWk,p1~Wk,pnが供給される。そして、h生成回路13p1~13pnは、上記のようにhp1~hpnを更新する。また、このときWl,1~Wl,Nが、記憶部12に書き込まれる。たとえば、インデックス=l=pnの場合、Wpn,1~Wpn,Nが記憶部11から読み出されるとともに、記憶部12に書き込まれる。
シミュレーテッド・アニーリングが行われる場合、たとえば、上記のような状態更新処理が所定の繰り返し回数、繰り返されたのちに得られた状態(x~x)が、最適化問題に対する解として出力される。
なお、更新部17は、インデックス=k,lに対応するΔEに基づいてエネルギーを更新するとともに、各更新時点での最少エネルギーとその最少エネルギーが得られたときの状態(最少エネルギー時の状態)とを保持するようにしてもよい。その場合、更新部17は、状態更新処理が所定の繰り返し回数、繰り返されたときに保持している最少エネルギー時の状態を、解として出力してもよい。
また、シミュレーテッド・アニーリングの代わりにレプリカ交換法が行われる場合、上記のような状態更新処理は各レプリカについて行われる。そして、ある繰り返し回数ごとに、各レプリカのエネルギーに基づいて、所定の確率で、隣接する温度が設定されているレプリカの間で温度が交換される。そして、更新部17は、所定の繰り返し回数に達したときに、全レプリカにおいて、これまで得られたエネルギーのうち、最少エネルギー時の状態を、解として出力する。
以上のように、第1の実施の形態の最適化装置10によれば、各グループ内で値が1である1つのビットと値が0である1つのビットがともに変化するときのエネルギー変化に基づいて、どの2つのビットの遷移を許容するか決定する。そして、決定した2つのビットの値が更新される。これによって、1-hot制約を満たさない状態遷移が抑制され、探索空間を小さくできる。このため、基底状態の探索を高速化することができる。
また、最適化装置10によれば、式(3)の右辺の2項目の1-hot制約項をなくせるため、1-hot制約項のために生じるエネルギー障壁を小さくでき、状態遷移の時間を短縮できる。
また、前述のように式(3)の右辺の2項目の1-hot制約項をなくせるため、重み値を表現するためのビット数を減らせることができ、重み値を記憶しておくためのハードウェア量を削減できる。
さらに、第1の実施の形態の最適化装置10は、記憶部12を設けていることから以下のような効果が得られる。以下、比較例として、記憶部12を設けていない最適化装置を説明する。
図2は、比較例の最適化装置を示す図である。図2において、図1に示した要素と同じ要素については同一符号が付されている。
図2に示されている最適化装置10aでは、ローカルフィールド値の更新のための、インデックス=lに関する重み値と、インデックス=kに関する重み値とが、記憶部11から異なるタイミングで読み出されてh生成部13に供給される。つまり、ローカルフィールド値の各更新において、メモリアクセスが2回続けて発生する。
図3は、レプリカ交換法を用いたときの、第1の実施の形態の最適化装置と比較例の最適化装置における処理時間の違いを示す模式図である。
図3では、M個のレプリカがパイプライン化され、各レプリカに対して1回の状態更新処理が行われた場合の処理時間の例が示されている。
時間tm1,tm2は、最適化装置10,10aにおいて、ローカルフィールド値の更新のための重み値が読み出される時間を表している。最適化装置10は、記憶部11,12から同じタイミングで、インデックス=lに関する重み値と、インデックス=kに関する重み値とが読み出される。このため、時間tm1は、時間tm2よりも短い。重み値を読み出すためのメモリアクセスは、各レプリカについて行われるため、レプリカ数が多くなると、時間tm1,tm2の違いがより顕著に処理時間に反映され、たとえば、図1のような処理時間t1,t2の差につながる。
なお、シミュレーテッド・アニーリングが用いられる場合にも、ローカルフィールド値の各更新において、メモリアクセス時間を短縮できるため、処理時間の増加を抑えられる。
このように、第1の実施の形態の最適化装置10では、記憶部11とは別の記憶部12に、インデックス=kに関する重み値を予め保持しておくことで、メモリアクセス時間を短縮できスループットの低下を抑制できる。このため、1-hot制約をもつ最適化問題の計算時間をより短縮可能となる。
(第2の実施の形態)
図4は、第2の実施の形態の最適化装置の一例を示す図である。
最適化装置20は、算出部21、選択回路22、識別情報計算部23、更新部24、制御部25を有する。
算出部21は、前述のG個のグループのそれぞれにおいて、ハミング距離=2の状態遷移によって1-hot制約を満たすある状態から1-hot制約を満たす別の状態に遷移するときのエネルギー変化(ΔE~ΔE)を算出する。
選択回路22は、熱励起エネルギーと、ΔE~ΔEとの大小関係に基づいて、グループ1~Gのそれぞれに含まれる値が0のビットのうち、0から1への値の更新を許容する1つを識別するインデックス=lを出力する。熱励起エネルギーは、乱数と、制御部25から入力されるTに基づいて決定される。なお、熱励起エネルギーと、ΔE~ΔEとの大小関係によっては、値が0のビットのうち1つも更新が許容されない場合がある。以下では、選択回路22は、インデックス=lとともに、更新が許容されたか否かを示すフラグを出力するものとする。
識別情報計算部23は、選択回路22が出力するインデックス=lとフラグに基づいて、更新が許容されたビットが属するグループを検出する。そして、識別情報計算部23は、検出したグループに属す値が1のビットを識別するインデックス=kと、検出したグループを識別するグループインデックス=gを出力する。以下では、識別情報計算部23は、選択回路22から供給されるインデックス=lとフラグについても出力するものとする。インデックス=lは、算出部21に供給され、エネルギー変化を計算するために用いられる各ビットについてのローカルフィールド値を更新する際に用いられる。また、グループインデックス=gも、算出部21に供給され、算出部21に含まれる記憶部に保持される重み値を更新する際などに用いられる。
なお、フラグが更新を許容しないことを示す値である場合、識別情報計算部23は、たとえば、インデックス=k,l、グループインデックス=gを無効な値(たとえば、0)とする。
更新部24は、N個のビットの値(x~x)の値を保持する記憶部24aを有している。レプリカ交換法が適用される場合、各レプリカについてN個のビットの値が保持される。記憶部24aは、たとえば、レジスタやSRAMなどを用いて実現される。更新部24は、フラグが更新を許容する旨の値である場合、識別情報計算部23が出力するインデックス=kによって識別されるビットの値を1から0に更新するとともに、インデックス=lによって識別されるビットの値を0から1に更新する。なお、更新部24は、インデックス=k,lに対応するエネルギー変化に基づいてエネルギーを更新するとともに、各更新時点での最少エネルギーとその最少エネルギーが得られたときの状態(最少エネルギー時の状態)とを保持するようにしてもよい。また、更新部24は、制御信号ENを算出部21に供給するとともに、x~xを算出部21に供給する。制御信号ENや、x~xを用いた算出部21の処理の例については後述する。
制御部25は、最適化装置20の後述する初期設定処理を行う。また、制御部25は、シミュレーテッド・アニーリングを行う場合、イジングモデルの状態を更新する処理が所定回数繰り返されるごとに、たとえば、制御装置26によって指定される温度スケジュールにしたがってTの値を小さくしていく。また、制御部25は、レプリカ交換法を行う場合、イジングモデルの状態を更新する処理が所定回数繰り返されるごとに、各レプリカのエネルギーに基づいて、所定の交換確率で、隣接する温度が設定されているレプリカの間で温度を交換する。
さらに、制御部25は、シミュレーテッド・アニーリングを行う場合、状態更新処理が所定の繰り返し回数、繰り返されたのちに、記憶部24aに保持されている状態(x~x)を取得し、たとえば、最適化問題に対する解として制御装置26に送信する。なお、制御部25は、更新部24の記憶部24aが、最少エネルギーや最少エネルギー時の状態を保持している場合には、状態更新処理が所定の繰り返し回数、繰り返されたのちに、それらの情報を取得して、制御装置26に送信してもよい。制御部25は、レプリカ交換法を行う場合、更新部24の記憶部24aに、各レプリカにおける最少エネルギーや最少エネルギー時の状態を保持させておく。そして、制御部25は、所定の繰り返し回数に達したときに、全レプリカにおいて、これまで得られたエネルギーのうち、最少エネルギー時の状態と最少エネルギーを、更新部24から取得し、たとえば、最適化問題に対する解として制御装置26に送信してもよい。
制御部25は、たとえば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路にて実現できる。なお、制御部25は、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサであってもよい。その場合、プロセッサは、図示しないメモリに記憶されたプログラムを実行することで、上記の処理を行う。
(算出部21の例)
図5は、算出部の一例を示す図である。
算出部21は、記憶部21a、選択部21b、記憶部21c、保持部21d1~21dN、h生成部21e、h伝搬制御部21f、ΔE算出部21gを有する。
記憶部21aは、重み値(W11~WNN)を保持している。W11~WNNは、初期設定処理時に、制御部25によって記憶部21aに記憶される。記憶部21aは、たとえば、レジスタやSRAMなどを用いて実現される。
選択部21bは、選択回路21b1~21bNを有する。選択回路21b1~21bNのそれぞれは、識別情報計算部23が出力するインデックス=lに基づいて、記憶部21aに保持されている重み値を選択して出力する。たとえば、選択回路21biはW1i~WNiの中から、Wliを選択して出力し、選択回路21bjはW1j~WNjの中から、Wljを選択して出力する。このように、選択部21bは、記憶部21aから読み出す重み値を選択する機能を有している。
記憶部21cは、各グループにおいて、記憶部21aが保持するW11~WNNの行列のうち、値が1であるビットを識別するインデックスに対応する全ての行を保持するための記憶回路21c1~21cNを有する。また、記憶部21cは、グループインデックス=gに基づいて、記憶部21cから読み出す重み値を選択するとともに、後述の切り替え信号を出力するデコード部21caを有する。
図6は、各記憶回路に保持される重み値の例を示す図である。
記憶回路21c1は、インデックス=1のビットと、G個の各グループにおいて値が1であるビットとの間の相互作用の大きさを示す重み値(Wk1,1,Wk2,1,…,WkG,1)を保持する。インデックス=k1~kGは、グループ1~グループGの各々において、値が1であるビットのインデックスである。また、記憶回路21ciは、インデックス=iのビットと、インデックス=k1~kGのビットとの間の相互作用の大きさを示す重み値(Wk1,i,Wk2,i,…,WkG,i)を保持する。記憶回路21cjは、インデックス=jのビットと、インデックス=k1~kGのビットとの間の相互作用の大きさを示す重み値(Wk1,j,Wk2,j,…,WkG,j)を保持する。記憶回路21cNは、インデックス=Nのビットと、インデックス=k1~kGのビットとの間の相互作用の大きさを示す重み値(Wk1,N,Wk2,N,…,WkG,N)を保持する。
図7は、記憶回路とデコード部の一例を示す図である。
図7では、記憶回路21c1~21cNのうち、記憶回路21ci,21cjの回路例が示されているが、他の記憶回路についても同様の回路にて実現できる。
記憶回路21ciは、Wk1,i,Wk2,i,…,WkG,iのそれぞれを保持する保持部を、2つずつ有している。たとえば、図7の保持部30a,30bは、インデックス=iのビットと、グループxにおいて値が1であるインデックス=kxのビットとの間の相互作用の大きさを示すWkx,iを保持する。保持部30c,30dは、インデックス=iのビットと、グループyにおいて値が1であるインデックス=kyのビットとの間の相互作用の大きさを示すWky,iを保持する。
保持部30a~30dは、たとえば、レジスタやSRAMなどを用いて実現される。
さらに、記憶回路21ciの各保持部は、選択部21bとの接続の有無を切り替えるスイッチと、h生成部21eとの接続の有無を切り替えるスイッチを有する。たとえば、スイッチ31a,31b,31c,31dは、保持部30a~30dと、選択部21bとの接続の有無を切り替えるスイッチである。スイッチ32a,32b,32c,32dは、保持部30a~30dと、h生成部21eとの接続の有無を切り替えるスイッチである。
記憶回路21cjも、記憶回路21ciと同様の要素を有している。たとえば、保持部33a,33bは、インデックス=jのビットと、グループxにおいて値が1であるインデックス=kxのビットとの間の相互作用の大きさを示すWkx,jを保持する。保持部33c,33dは、インデックス=jのビットと、グループyにおいて値が1であるインデックス=kyのビットとの間の相互作用の大きさを示すWky,jを保持する。また、記憶回路21cjは、保持部33a~33dと選択部21bとの接続の有無を切り替えるスイッチ34a,34b,34c,34dと、保持部33a~33dと、h生成部21eとの接続の有無を切り替えるスイッチ35a,35b,35c,35dを有する。
デコード部21caは、グループインデックス=gに基づいて、記憶部21cから読み出す重み値を選択するためのデコード信号を生成するデコーダ36を有する。デコーダ36は、グループインデックス=gと一致するグループインデックスをもつグループについてのデコード信号を1にし、他のグループについてのデコード信号を0にする。たとえば、グループインデックス=gが、グループxのグループインデックス(以下gxとする)に一致する場合、デコード信号dxが1となり、デコード信号dyは0となる。グループインデックス=gが、グループyのグループインデックス(以下gyとする)に一致する場合、デコード信号dyが1となり、デコード信号dxは0となる。
デコード部21caは、さらに、デコーダ36が出力するデコード信号に基づいて、記憶回路21c1~21Nに含まれる前述のスイッチのオンオフを切り替えるための切り替え信号を生成するアクセスカウンタとAND(論理積)回路を有する。たとえば、各グループについて、1つのアクセスカウンタと2つのAND回路が設けられる。図7の例では、グループxについて設けられたアクセスカウンタ37a及びAND回路38a,38bと、グループyについて設けられたアクセスカウンタ37b及びAND回路38c,38dが示されている。
アクセスカウンタ37aは、デコード信号dxが1になる回数を計数し、計数値が奇数の場合、信号okxとして1を出力し、信号ekxとして0を出力し、計数値が偶数の場合、信号okxとして0を出力し、信号ekxとして1を出力する。アクセスカウンタ37bは、デコード信号dyが1になる回数を計数し、計数値が奇数の場合、信号okyとして1を出力し、信号ekyとして0を出力し、計数値が偶数の場合、信号okyとして0を出力し、信号ekyとして1を出力する。
なお、アクセスカウンタ37a,37bは、1ビットカウンタにより実現できる。
AND回路38aは、デコード信号dxと信号ekxとの論理積を出力する。AND回路38aの出力信号が1の場合、スイッチ31b,34b,32a,35aがオンし、AND回路38aの出力信号が0の場合、スイッチ31b,34b,32a,35aがオフする。AND回路38bは、デコード信号dxと信号okxとの論理積を出力する。AND回路38bの出力信号が1の場合、スイッチ31a,34a,32b,35bがオンし、AND回路38bの出力信号が0の場合、スイッチ31a,34a,32b,35bがオフする。AND回路38cは、デコード信号dyと信号ekyとの論理積を出力する。AND回路38cの出力信号が1の場合、スイッチ31d,34d,32c,35cがオンし、AND回路38cの出力信号が0の場合、スイッチ31d,34d,32c,35cがオフする。AND回路38dは、デコード信号dyと信号okyとの論理積を出力する。AND回路38dの出力信号が1の場合、スイッチ31c,34c,32d,35dがオンし、AND回路38dの出力信号が0の場合、スイッチ31c,34c,32d,35dがオフする。
図8は、記憶部の動作例を示す図である。
図8では、記憶部21cの記憶回路21ciにおける保持部30a,30bの動作例が示されている。グループインデックス=gが、グループxのグループインデックス=gxに一致する場合、デコード信号dxが1となる。
アクセスカウンタ37aの計数値が奇数の場合(信号okxが1の場合)、スイッチ31a,32bはオン、スイッチ31b,32aがオフする。これにより、保持部30aは選択部21bに接続され、保持部30aとh生成部21eとの接続は切断され、保持部30aに対するWkx,iの書き込みが行われる。一方、保持部30bと選択部21bとの接続は切断され、保持部30bはh生成部21eに接続され、保持部30bからWkx,iの読み出しが行われる。
アクセスカウンタ37aの計数値が偶数の場合(信号ekxが1の場合)、スイッチ31a,32bはオフ、スイッチ31b,32aがオンする。これにより、保持部30aと選択部21bとの接続は切断され、保持部30aはh生成部21eに接続され、保持部30aからWkx,iの読み出しが行われる。一方、保持部30bは選択部21bに接続され、保持部30bとh生成部21eとの接続は切断され、保持部30bに対するWkx,iの書き込みが行われる。
グループインデックス=gが、グループxのグループインデックス=gxに一致しない場合、デコード信号dxが0となり、スイッチ31a,31b,32a,32bはオフし、保持部30a,30bは動作しない。
このように、デコード部21caは、グループインデックス=gに基づいて、複数のグループの各々について設けられた第1の保持部(保持部30a,33aなど)と第2の保持部(保持部30b,33bなど)のうち、一方を書き込み対象として設定する。そして、デコード部21caは、他方を読み出し対象として設定する。
図9及び図10は、記憶部の動作例を示すタイミングチャートである。
図9及び図10では、レプリカ交換法が用いられ、複数のレプリカがパイプライン処理されるときの記憶部21cの動作例が示されている。
図9には、グループインデックス=gが、連続する2回(2サイクル)の状態更新処理において、同じグループインデックス=gxである場合の、記憶部21cの記憶回路21ciの動作例が示されている。
サイクルC1において、識別情報計算部23が出力するkが1、lが2、信号okx=1、信号ekx=0の場合、保持部30aには、次にグループインデックス=gxが記憶部21cに供給されたときに読み出されるWkx,iとして、W2,iが書き込まれる。また、保持部30bからWkx,iとしてW1,iが読み出される。
次のサイクルC2では、グループインデックス=gxのグループに属するビットのうち、値が1であるのは、サイクルC1で値が変更されたインデックス=2のビットであるため、識別情報計算部23が出力するインデックス=kは2となる。また、同じグループインデックス=gxが続けて記憶部21cに供給されるため、アクセスカウンタ37aがカウントアップされ、信号okx=0、信号ekx=1となる。そのため、保持部30aから、Wkx,iとしてW2,iが読み出される。また、識別情報計算部23が出力するlが3の場合、保持部30bには、次にグループインデックス=gxが供給されたときに読み出されるWkx,iとして、W3,iが書き込まれる。
図10には、グループインデックス=gが、連続する2回(2サイクル)の状態更新処理において、異なるグループインデックス=gx,gyである場合の、記憶部21cの記憶回路21ciの動作例が示されている。
サイクルC1の動作は図9の場合と同じである。サイクルC2では、記憶部21cにグループインデックス=gyが供給されるため、記憶回路21ciでは、保持部30c,30dに対する書き込みまたは読み出しが行われる。識別情報計算部23が出力するkが5、lが6、信号oky=1、信号eky=0の場合、保持部30cには、次にグループインデックス=gyが供給されたときに読み出されるWky,iとして、W6,iが書き込まれる。また、保持部30dからWkx,iとしてW5,iが読み出される。
このように、記憶部21cは、複数のグループの各々について、第1の保持部(保持部30a,33aなど)と第2の保持部(保持部30b,33bなど)とを有する。そして、第1の保持部にインデックス=lに対応する重み値の行の書き込みが行われるとともに、第2の保持部からインデックス=kに対応する重み値の行が読み出される。そして、次に同一グループについてのインデックス=lに対応する行が、記憶部21aから読み出されたときに、読み出されたインデックス=lに対応する行は第2の保持部に書き込まれる。また、そのときに、第1の保持部に保持されている重み値の行がインデックス=kに対応する重み値の行として読み出される。
書き込みが行われる保持部と読み出しが行われる保持部を切り替えて使用することで、同じタイミングで、同じグループに属すビットに関する重み値の書き込みと読み出しが行える。これにより、リード-ライト問題の発生を防ぐことができる。
なお、最適化装置20において、レプリカ交換法が行われる場合、記憶部21cに保持される重み値は、レプリカごとに独立に保持される。
図5の説明に戻る。
保持部21d1~21dNのそれぞれは、グループインデックス(g~g)のうちの1つを保持する。たとえば、保持部21diは、インデックス=iのビットが属すグループを識別するgを保持する。保持部21djは、インデックス=jのビットが属すグループを識別するgを保持する。
図11は、グループインデックスの値の例を示す図である。
図11の例では、インデックスが1,2,…,sのビットが属すグループ1のグループインデックスは1であり、インデックスがs+1,s+2,…,sのビットが属すグループ2のグループインデックスは2である。また、インデックスがsG-1+1,sG-1+2,…,Nのビットが属すグループGのグループインデックスはGである。
このように、インデックスが小さいビットが属すグループのグループインデックスほど、たとえば、小さい値が割当てられる。
保持部21d1~21dNの全体の記憶容量は、Nによって決まる。保持部21d1~21dNのそれぞれは、たとえば、レジスタやSRAMを用いて実現される。
図5において、h生成部21eは、h生成回路21e1~21eNを有する。h生成回路21e1~21eNのそれぞれは、図示を省略しているが保持部(たとえば、レジスタ)を有し、h~hの何れかの保持及び更新を行う。たとえば、h生成回路21eiは、選択回路21biが選択したWliと、記憶回路21ciから読み出されたWkiを用いて、h-Wki+Wliを計算することで、hを更新する。h生成回路21ejは、選択回路21bjが選択したWljと、記憶回路21cjから読み出されたWkjを用いて、h-Wkj+Wljを計算することで、hを更新する。h~hの初期値は、たとえば、バイアス値(b~b)であり、初期設定処理時に、制御部25によって設定される。h生成回路21e1~21eNは、たとえば、保持部のほかに、加算器または減算器を用いて実現される。
なお、最適化装置20において、レプリカ交換法が行われる場合、h~hは、レプリカごとに独立に保持される。
h伝搬制御部21fは、x~xとg~gとに基づいて、値が1であるビットについてのローカルフィールド値の伝搬先(供給先)を制御する。たとえば、値が1であるインデックス=iのビットと値が0であるインデックス=jのビットが同じグループに属す場合、h伝搬制御部21fは、h生成回路21eiが出力するhをΔE算出回路21giに伝搬するとともに、hが供給されるΔE算出回路21gjにも伝搬する。
図12は、h伝搬制御部の一例を示す図である。
h伝搬制御部21fは、スイッチ40a1,40a2,40a3,…,40a(N-1),40aN、制御信号生成回路40b1,40b2,40b3,…,40b(N-1)、スイッチ40c1,40c2,40c3,…,40c(N-1)を有する。
スイッチ40a1~40aNのそれぞれには、x~xの何れかが入力され、入力された状態変数が1の場合にオンし、0の場合にオフする。スイッチ40a1~40aNのそれぞれの一方の端子には、h,h,h,…,hN-1,hの何れかが入力され、他方の端子は、ΔE算出回路21g1,21g2,21g3,…,21g(N-1),21gNの何れかに接続されている。たとえば、スイッチ40a1の一方の入力端子には、hが入力され、xが1の場合には、スイッチ40a1がオンし、hがΔE算出回路21g1に供給される。
制御信号生成回路40b1~40b(N-1)のそれぞれは、入力端子IN1,IN2と出力端子OUTを有する。入力端子IN1,IN2には、インデックスが隣接する2つのビットのそれぞれが属すグループのグループインデックスが入力され、両グループインデックスが一致する場合に、出力端子OUTから1が出力される。
図13は、制御信号生成回路の一例を示す図である。
図13には、図12の制御信号生成回路40b1~40b(N-1)のうちのi番目の制御信号生成回路40biの例が示されている。
制御信号生成回路40biは、t個のExNOR(排他的否定論理和)回路41a1~41at、AND回路41bを有する。tは、グループインデックスを表現するためのビット数の最大値である。N=1024の場合、tは最大で10である。ExNOR回路41a1~41atのそれぞれは、入力される2つのグループインデックスの対応するビットの値を1ビットずつ入力し、両ビットが一致している場合に1を出力する。たとえば、ExNOR回路41a1は、g,gi+1の最下位ビットg<1>,gi+1<1>を入力し、両ビットが一致している場合には、1を出力する。ExNOR回路41atは、g,gi+1の最上位ビットg<t>,gi+1<t>を入力し、両ビットが一致している場合には、1を出力する。
AND回路41bは、ExNOR回路41a1~41atの出力が全て1の場合に1を出力し、ExNOR回路41a1~41atの出力に1つでも0がある場合に0を出力する。
図12のスイッチ40c1~40c(N-1)のそれぞれは、スイッチ40a1~40aNのうち、隣接する何れか2つのスイッチの他方の端子(ΔE算出回路に接続される側)の間に接続されている。また、スイッチ40c1~40c(N-1)のそれぞれは、制御信号生成回路40b1~40b(N-1)の何れかが出力する値が1の場合にオンする。
たとえば、スイッチ40c1は、スイッチ40a1,40a2の他方の端子の間に接続されており、制御信号生成回路40b1が1を出力した場合にオンする。
スイッチ40a1~40aN,40c1~40c(N-1)のそれぞれは、たとえば、トランスファーゲートである。
図12に示すようなh伝搬制御部21fでは、たとえば、インデックス=1~3のビットが同じグループに属し、x=1、x,x=0の場合、スイッチ40a1,40a3はオフし、スイッチ40a2はオンする。また、g=g=gであるため、制御信号生成回路40b1,40b2は1を出力し、スイッチ40c1,40c2がオンする。これにより、hが、スイッチ40a2を介してΔE算出回路21g2に供給されるとともに、スイッチ40c1を介してΔE算出回路21g1に供給され、スイッチ40c2を介してΔE算出回路21g3に供給される。
なお、インデックス=4のビットが、インデックス=1~3のビットと異なるグループに属す場合、g≠gとなるため、制御信号生成回路40b3は0を出力し、スイッチ40c3はオフする。
図5の説明に戻る。
ΔE算出部21gは、ΔE算出回路21g1~21gNを有する。ΔE算出回路21g1~21gNは、h~hを用いて、ハミング距離=2の状態遷移によって1-hot制約を満たすある状態から1-hot制約を満たす別の状態に遷移するときのΔE~ΔEを算出する。
ΔE算出回路21g1~21gNのそれぞれには、h生成回路21e1~21eNの何れかから、h~hの何れかが直接供給される。さらに、値が0のビットについてのローカルフィールド値がh生成回路21e1~21eNの何れかから供給されるΔE算出回路には、h伝搬制御部21fによって、そのビットと同じグループに属す値が1のビットについてのローカルフィールド値が伝搬される。
図14は、ΔE算出回路による処理例を示す図である。
あるグループにおいて、値が0であるビットについてのhがh生成回路21ejから直接供給されるΔE算出回路21gjには、h伝搬制御部21fにより、そのビットと同じグループに属す値が1のビットについてのhが伝搬される。
ΔE算出回路21gjは、h-hを計算することで、xが1から0に変化するとともに、xが0から1に変化することによるΔEを算出する。
ΔE算出回路21giには、hが供給される。第1の実施の形態の最適化装置10の説明の際に示したように、同一ビットによるハミング距離=2の状態遷移を避けるため、ΔE算出回路21giは、制御信号EN=1によって、所定の正の値であるΔEmaxを出力するように制御されている。ΔEmaxは、たとえば、最適化装置20が生成できる正の最大値である。なお、ΔE算出回路21gjには、制御信号EN=0が供給されており、ΔEmaxを出力する機能は無効になっている。つまり、値が1であるビットについてのhを直接受けるΔE算出回路21giには、制御信号EN=1が供給され、値が0であるビットについてのhを直接受けるΔE算出回路21gjには、制御信号EN=0が供給される。制御信号EN,ENは、更新部24によってx~xに基づいて生成される。
(選択回路22の一例)
図15は、選択回路の一例を示す図である。
選択回路22は、符号反転部22a、オフセット加算部22b、乱数発生回路22c、選択法則適用部22d、乗算器22e、比較部22f、セレクタ22gを有する。
符号反転部22aは、ΔE,ΔE,…,ΔEのそれぞれに-1を掛けて符合を反転させる。
オフセット加算部22bは、符号反転部22aの出力値(-ΔE~-ΔE)のそれぞれに、オフセット値を加える。オフセット加算部22bは、後述するセレクタ22gが出力するフラグが更新を許容しないことを示すとき(つまり状態遷移が生じないとき)、オフセット値を増加していく。一方、オフセット加算部22bは、フラグが、更新を許容することを示すとき(つまり状態遷移が生じるとき)には、オフセット値を0にする。オフセット値が大きくなると状態遷移が許容されやすくなり、現在の状態が局所解にある場合、その局所解からの脱出が促進される。
乱数発生回路22cは、0以上、1以下の一様乱数(r)を発生する。
選択法則適用部22dは、シミュレーテッド・アニーリングまたはレプリカ交換法を行うための選択法則(メトロポリス法またはギブス法)に基づいた値を出力する。
たとえば、シミュレーテッド・アニーリングが行われる場合、あるエネルギー変化を引き起こす状態遷移の許容確率A(ΔE,T)を以下の式(9)、式(10)のように決めれば、時刻(反復回数)無限大の極限で状態が最適解に到達することが証明されている。
Figure 0007185140000009
Figure 0007185140000010
式(9)、式(10)においてTは、前述の温度パラメータである。
式(9)で表される許容確率A(ΔE,T)を用いた場合、十分な反復後に定常状態に達したとすると、各状態の占有確率は熱力学における熱平衡状態に対するボルツマン分布にしたがう。そして、高い温度から徐々に下げていくとエネルギーの低い状態の占有確率が増加するため、十分温度が下がるとエネルギーの低い状態が得られるはずである。この様子が材料を焼き鈍したときの状態変化とよく似ているため、この方法はシミュレーテッド・アニーリングと呼ばれるのである。このとき、エネルギーが上がる状態遷移が確率的に起こることは、物理学における熱励起に相当する。
許容確率A(ΔE,T)でΔEを引き起こす状態遷移を許容することを示すフラグ(=1)を出力する回路は、式(9)、式(10)のf(-ΔE/T)と、一様乱数rとの比較結果に基づいた値を出力する比較器によって実現できる。
ただ、次のような変形を行っても同じ機能が実現できる。2つの数に同じ単調増加関数を作用させても大小関係は変化しない。したがって比較器の2つの入力に同じ単調増加関数を作用させても比較器の出力は変わらない。たとえば、f(-ΔE/T)に作用させる単調増加関数としてf(-ΔE/T)の逆関数f-1(-ΔE/T)、一様乱数に作用させる単調増加関数としてf-1(-ΔE/T)の-ΔE/Tをrとしたf-1(r)を用いることができる。その場合、上記の比較器と同様の機能を有する回路は、-ΔE/Tがf-1(r)より大きいとき1を出力する回路でよいことがわかる。さらにTが正であることから、その回路は、-ΔEがT・f-1(r)より大きいとき1を出力する回路でよい。
選択法則適用部22dは、入力される一様乱数を上記のf-1(r)の値に変換する変換テーブルを用いて、f-1(r)の値を出力する。メトロポリス法が適用される場合、f-1(r)は、log(r)である。変換テーブルは、たとえば、RAM(Random Access Memory)、フラッシュメモリなどのメモリに記憶されている。
乗算器22eは、Tと、f-1(r)との積(T・f-1(r))を出力する。T・f-1(r)は、熱励起エネルギーに相当する。
比較部22fは、ΔE~ΔEのそれぞれについてのオフセット加算部22bによる加算結果と、T・f-1(r)とを比較し、T・f-1(r)より大きい加算結果に対するフラグとして、1を出力する。また、比較部22fは、T・f-1(r)以下の加算結果に対するフラグとして、0を出力する。
セレクタ22gは、ΔE~ΔEのそれぞれについてのフラグに基づいて、更新が許容されたビットのインデックス=lとフラグを出力する。更新が許容されたビットが複数ある場合、乱数に基づいて、そのうちの1つのビットのインデックスが、インデックス=lとして出力される。更新が許容されたビットがない場合についても、何れかのビットのインデックスが出力される。その場合、セレクタ22gが出力するフラグは0となる。
たとえば、セレクタ22gは、インデックス=lとして、l番目のビットの値が1で、他のビットの値が0であるNビット値を出力する。
なお、図1に示した第1の実施の形態の最適化装置10の選択回路15についても、図15に示すような回路を用いて実現できる。
(識別情報計算部23の一例)
図16は、識別情報計算部の一例を示す図である。
図16の例では、識別情報計算部23は、テーブル23a,23bを用いて、グループインデックスであるgや値が1であるビットのインデックスであるkを出力する。テーブル23a,23bは、たとえば、RAM、フラッシュメモリなどのメモリに記憶されている。
テーブル23aは、N個のビットのそれぞれが属すグループのグループインデックスを小さい順に並べたものである。
識別情報計算部23は、選択回路22がインデックス=lとして出力する、l番目のビットの値が1で、他のビットの値が0であるNビット値を、テーブル23aのグループインデックスにアクセスするためのアドレスとして用いる。l番目のビットの値が1である場合に、テーブル23aにおいて、l番目のグループインデックス=gが出力される。
テーブル23bは、G個のグループのそれぞれにおいて、値が1であるビットのインデックスを小さい順に並べたものである。図16の例では、グループインデックス=1のグループに属す値が1であるビットのインデックスはsであり、グループインデックス=Gのグループに属す値が1であるビットのインデックスはNである。また、グループインデックス=gのグループに属す値が1であるビットのインデックスはkである。
識別情報計算部23は、テーブル23aを用いて出力したグループインデックス=gを、テーブル23bのインデックスにアクセスするためのアドレスとして用いる。識別情報計算部23は、テーブル23aに配列されているインデックスのうち、g番目のインデックス=kを出力する。
テーブル23bは、状態更新処理が行われるたびに更新される。
なお、図1に示した第1の実施の形態の最適化装置10の識別情報計算部16についても、図16に示したテーブル23a,23bを用いて、インデックス=kやグループインデックス=gを出力してもよい。
(最適化装置20の全体動作例)
図17は、第2の実施の形態の最適化装置の一例の処理の流れを示すフローチャートである。
また、図18は、初期設定処理の一例の流れを示すフローチャートである。
図17のステップS1の初期設定処理は、たとえば、図18に示すような処理を含む。 制御部25は、制御装置26から受信したW11~WNNを算出部21の記憶部21aに記憶する(ステップS20)。
また、制御部25は、制御装置26から受信したh~hの初期値(たとえば、バイアス値)を算出部21のh生成回路21e1~21eNに設定する(ステップS21)。
さらに、制御部25は、シミュレーテッド・アニーリングを行う場合、制御装置26から受けたアニーリング条件に基づいて、選択回路22に温度パラメータであるT(初期値)を設定する。制御部25は、レプリカ交換法を行う場合、各レプリカに対して、制御装置26から受けた異なる値のTを設定する(ステップS22)。
また、制御部25は、x~x(全て0)を、記憶部24aに記憶するとともに(ステップS23)、g~gを保持部21d1~21dNに設定する(ステップS24)。レプリカ交換法が行われる場合、x~xは、レプリカごとに独立に記憶される。
その後、制御部25は、変数gをg=1とする(ステップS25)。そして、制御部25は、g=gのグループに属す1つのビットのインデックス=lgを選択するとともに、x~xのうち、xlgを1に更新し、記憶部24aに記憶する(ステップS26)。インデックス=lgは、g=gのグループに属すビットの中からランダムに選択されたビットのインデックスでもよいし、特定の位置のビット(たとえば、先頭グループの選択ビット)のインデックスであってもよい。
そして、制御部25は、インデックス=lgのビットと、インデックス=1~Nのビットとの間の相互作用の大きさを示す重み値(Wlg,i(i=1~N))を、記憶部21cに記憶するとともに、アクセスカウンタの計数値を更新させる(ステップS27)。制御部25は、たとえば、グループインデックス=gが、グループxのグループインデックス=gxの場合、図7に示したアクセスカウンタ37aの計数値をカウントアップさせる。
また、制御部25は、xlgの更新に伴ってh~hを更新する(ステップS28)。xlgが0から1に変化するときのh(i=1~N)の変化分は、+Wlg,iであるため、hは、h=h+Wlg,iと更新される。更新されたh~hは、h生成回路21e1~21eN内の図示しない保持部に保持される。最適化装置20において、レプリカ交換法が行われる場合、h~hは、レプリカごとに独立に保持される。
次に、制御部25は、g=Gであるか否かを判定し(ステップS29)、g=Gである場合には、初期設定処理を終了し、g=Gでない場合には、g=g+1とし(ステップS30)、ステップS26からの処理を繰り返す。
なお、識別情報計算部23が図16に示したようなテーブル23bを用いる場合、制御部25は、ステップS26の処理を行うたびに得られるインデックス=lgを、配列していくことで、テーブル23bを作成できる。
なお、初期設定処理における処理の順序は、上記の例に限定されるわけではなく、適宜順番を入れ替えてもよい。
上記のような初期設定処理が終了した後、h伝搬制御部21fは、x~xとg~gとに基づいて、h~hをΔE算出回路21g1~21gNに供給する(ステップS2)。たとえば、値が1であるインデックス=iのビットと値が0であるインデックス=jのビットが同じグループに属す場合、h伝搬制御部21fは、h生成回路21eiが出力するhをΔE算出回路21giに供給するとともに、ΔE算出回路21gjにも供給する。
その後、ΔE算出回路21g1~21gNによる前述したようなΔE~ΔEの計算が行われる(ステップS3)。そして、図15に示したような選択回路22において、オフセット値の加算が行われたのち(ステップS4)、インデックス=lの選択が行われる(ステップS5)。識別情報計算部23は、前述の処理により、インデックス=kとグループインデックス=gを出力する(ステップS6)。なお、識別情報計算部23が、図16に示したようなテーブル23bを用いる場合、識別情報計算部23は、インデックス=kをテーブル23bから読み出した後に、同じ記憶領域に、インデックス=lを上書きする。
その後、以下のような更新処理が行われる(ステップS7)。更新部24は、記憶部24aに記憶されているインデックス=kのビットの値(x)を1から0に更新するとともに、インデックス=lのビットの値(x)を0から1に更新する。また、h生成部21eは、インデックス=lに基づいて選択部21bが選択した重み値の行と、記憶部21aに保持されている重み値の行とを、同じタイミングで読み出し、h~hを更新する。さらに、記憶部21cは、グループインデックス=gに基づいて、保持する重み値を更新する。
その後、制御部25は、状態の更新処理回数が、所定回数N1に達したか否か判定する(ステップS8)。更新処理回数が所定回数N1に達していない場合には、ステップS2~S7の処理が繰り返される。
更新処理回数が所定回数N1に達した場合、シミュレーテッド・アニーリングの実行時には、制御部25は、Tの変更回数(温度変更回数)が、所定回数N2に達したか否かを判定する。レプリカ交換法の実行時には、制御部25は、各レプリカの間でのTの値の交換回数が、所定回数N2に達したか否かを判定する(ステップS9)。
シミュレーテッド・アニーリングの実行時に、温度変更回数が所定回数N2に達していない場合、制御部25は、Tを変更する(温度を下げる)。レプリカ交換法の実行時に、交換回数が、所定回数N2に達していない場合、制御部25は、各レプリカのエネルギーに基づいて、所定の確率で、隣接する温度が設定されているレプリカの間でTを交換する(ステップS10)。所定回数N1,N2、Tの値の変更の仕方(一度に値をどのくらい小さくするかなど)は、アニーリング条件などに基づいて決定される。ステップS10の処理後、ステップS2からの処理が繰り返される。
温度変更回数または交換回数が所定回数N2に達している場合、以下のような計算結果の出力処理が行われ(ステップS11)、最適化装置20の動作が終了する。
シミュレーテッド・アニーリングの実行時、温度変更回数が所定回数N2に達している場合、制御部25は、そのときの各ビットの値(変数x(i=1~N))を記憶部24aから取得して、解(計算結果)として制御装置26に送信(出力)する。なお、更新部24が、インデックス=k,lに対応するエネルギー変化に基づいてエネルギーを更新するとともに、各更新時点での最少エネルギーとその最少エネルギーが得られたときの状態(最少エネルギー時の状態)とを保持するようにしてもよい。その場合、制御部25は、温度変更回数が所定回数N2に達したときに、更新部24が保持している最少エネルギー時の状態を取得して、解として出力してもよい。
一方、レプリカ交換法の実行時、制御部25は、更新部24の記憶部24aに、各レプリカにおける最少エネルギーや最少エネルギー時の状態を保持させておく。そして、制御部25は、ステップS11の処理時に、全レプリカにおいて、これまで得られたエネルギーのうち、最少エネルギー時の状態を、更新部24から取得し、解として制御装置26に出力させる。
なお、制御部25には、表示装置が接続されていてもよい。その場合、制御部25は、表示装置に、計算結果が表示されるようにしてもよい。
以上のような、第2の実施の形態の最適化装置20においても、第1の実施の形態の最適化装置10と同様の効果が得られる。
(変形例)
第2の実施の形態の最適化装置20は、1-hot制約を満たす状態間での状態遷移を行うものであったが、従来の最適化装置のようにハミング距離=1の状態遷移を行う機能を有していてもよい。この場合、最適化装置20には、1-hot制約を満たす状態間での状態遷移を行う機能(以下、1-hot制約対応機能という)を無効にして、ハミング距離=1の状態遷移を行う機能を実行する構成が追加されることになる。
図19は、1-hot制約対応機能を無効にする構成を有する最適化装置の一部を示す図である。図19において、図5に示した要素と同じ要素については同一符号が付されている。図19において、記憶部21cの記憶回路21ciは、スイッチ50を介して選択部21bの選択回路21biに接続されており、さらにスイッチ51を介してh生成部21exのh生成回路21eixに接続されている。スイッチ50,51は、イネーブル信号(1hotENと図示されている)によってオンまたはオフする。
図示が省略されているが、記憶部21cの他の記憶回路に対しても同様のスイッチが接続されている。
1-hot制約対応機能を無効にする場合、上記のような各スイッチをオフすることによって、記憶部21cが、選択部21b(及び記憶部21a)と、h生成部21exとから切り離される。1-hot制約対応機能を有効にする場合、上記のような各スイッチをオンすることによって、記憶部21cが、選択部21b(及び記憶部21a)と、h生成部21exとに接続される。以下では、1hotEN=1のとき、上記機能が有効になり、1hotEN=0のとき、上記機能が無効になり、ハミング距離=1の状態遷移が行われるものとする。1hotENは、たとえば、図4に示した制御部25が出力する。
h生成部21exのh生成回路21eixにも1hotENが入力され、h生成回路21eixは、1hotEN=1のとき、図5に示したh生成回路21eiと同様に、h-Wki+Wliを計算することでhを更新する。一方、1hotEN=0のとき、hの変化分は、xによって決まる。更新後のxが1(更新前のxが0)の場合、変化分は+Wliとなり、更新後のxが0(更新前のxが1)の場合、変化分は-Wliとなる。そこで、h生成回路21eixは、たとえば、更新後のxを更新部24から受け、1hotEN=0のとき、更新後のxが1の場合、h+Wliを計算することでhを更新し、更新後のxが0の場合、h-Wliを計算することでhを更新する。
図20は、1-hot制約対応機能を無効にする構成を有する最適化装置におけるh伝搬制御部の一例を示す図である。図20において、図12に示した要素と同じ要素には、同一符号が付されている。
図20には、スイッチ40a2,40a3の制御信号を生成するOR回路60,61が示されている。OR回路60の一方の入力端子には、1hotENの値(1か0)が反転して(1から0または0から1に変化して)入力される。OR回路60の他方の入力端子には、xが入力される。OR回路61の一方の入力端子には、1hotENの値が反転して入力され、OR回路61の他方の入力端子には、xが入力される。
OR回路60は、1hotEN=1の場合、xを制御信号として出力し、1hotEN=0の場合、xによらずに1を出力し、スイッチ40a2をオンする。OR回路61は、1hotEN=1の場合、xを制御信号として出力し、1hotEN=0の場合、xによらずに1を出力し、スイッチ40a3をオンする。
図12に示したスイッチ40a1~40aNのうち、スイッチ40a2,40a3以外のスイッチに対しても、図20に示したようなOR回路60,61と同様なOR回路により制御信号が供給される。
また、図20では、図12に示した制御信号生成回路40b2の代わりに、制御信号生成回路40b2xが示されている。制御信号生成回路40b2xには、g,gが入力されるとともに、1hotENが入力される。制御信号生成回路40b2xは、1hotENが1、g=gの場合、1を出力し、スイッチ40c2をオンさせ、1hotENが1、g≠gの場合、0を出力し、スイッチ40c2をオフさせ、制御信号生成回路40b2xは、1hotENが0の場合、gとgの関係によらず、0を出力し、スイッチ40c2をオフする。
制御信号生成回路40b2xは、図13に示した制御信号生成回路40biのAND回路41bに1hotENを受ける入力端子を追加することで実現できる。
以上のような要素を、h伝搬制御部21fに加えることで、1hotEN=0の場合、ΔE算出回路21g1~21gNのそれぞれには、対応する1つのローカルフィールド値が供給されることになる。たとえば、ΔE算出回路21gjには、hが供給され、hは供給されない。
図21は、1-hot制約対応機能を無効にする構成を有する最適化装置におけるΔE算出回路の例を示す図である。
ΔE算出回路21gjxは、図14に示したΔE算出回路21gjに対応するものである。ΔE算出回路21gjと異なり、ΔE算出回路21gjxには、1hotENとxが供給される。なお、1hotEN=0の場合には、h,hのうち、hは供給されない。
このようなΔE算出回路21gjxは、1hotEN=1の場合、図14に示したΔE算出回路21gjと同様に、ΔE=h-hを算出する。一方、1hotEN=0の場合、ΔEは、xの変化によって決まる。xが0から1に変化する場合、ΔE=-hとなり、xが1から0に変化する場合、ΔE=+hとなる。そこで、ΔE算出回路21gjxは、現在のxを更新部24から受け、1hotEN=0の場合、x=0の場合、ΔEとして-hを出力し、x=1の場合、ΔEとして+hを出力する。
図5に示したΔE算出回路21g1~21gNのそれぞれについても、図21に示すような構成となる。
1-hot制約対応機能を無効にする構成を有する最適化装置における識別情報計算部は、図4に示した識別情報計算部23の機能を、1hotENの値に応じて、有効または無効にすることで実現できる。その場合、選択回路22が出力するインデックス=lがそのまま算出部21及び更新部24に供給される。
以上のように第2の実施の形態の最適化装置20に対して、上記のような変形を行うことで、計算対象の問題に応じて1-hot制約対応機能を無効にして、ハミング距離=1の状態遷移を行う機能を実行することが可能になる。
1-hot制約対応機能が無効の場合、選択回路22に供給されるΔE~ΔEのそれぞれは、N個のビットのうちの何れか1つが変化することによるエネルギー変化を表す。そして、選択回路22は、前述の熱励起エネルギーとΔE~ΔEとの大小関係に基づいて、N個のビットのうちで更新を許容する1つのビットを識別するインデックスを出力する。更新部24は、そのインデックスにより識別されるビットの値を更新する。
ところで、以上の説明では、ΔE算出回路21g1~21gNは、式(7)においてWij=0であるものとして、Wijを用いずにエネルギー変化を計算しているが、Wijを用いてエネルギー変化を計算してもよい。
図22は、重み値を用いてエネルギー変化を計算する最適化装置における算出部の一例を示す図である。図22の算出部70において、図5に示した算出部21と同じ要素については同一符号が付されている。なお、図22では、図5の選択回路21b1~21bN、記憶回路21c1~21cN、保持部21d1~21dN、h生成回路21e1~21eN、ΔE算出回路21g1~21gNにおけるi,j番目の要素に対応する要素以外の図示が省略されている。
算出部70は、一致検出部71i,71j、スイッチ72i,72jを有している。また、算出部70において、ΔE算出部73のΔE算出回路73i,73jは、記憶部73ia,73jaを有する。
一致検出部71i,71jとスイッチ72i,72jとを含む回路部は以下のような機能を有する。
一致検出部71iは、識別情報計算部23から供給されるグループインデックス=gと、保持部21diに保持されているgが一致している場合には、1を出力し、一致していない場合には0を出力する。一致検出部71jは、グループインデックス=gと、保持部21djに保持されているgが一致している場合には、1を出力し、一致していない場合には0を出力する。
一致検出部71i,71jのそれぞれは、たとえば、複数のExNOR回路と1つのAND回路とを用いて実現される。たとえば、複数のExNOR回路のそれぞれは、入力される2つのグループインデックスの対応するビットの値を1ビットずつ入力し、両ビットが一致している場合に1を出力する。そして、AND回路は、複数のExNOR回路の出力が全て1の場合に1を出力する。
スイッチ72iは、一致検出部71iが1を出力する場合にオンし、選択回路21biが出力する重み値をΔE算出回路73iの記憶部73iaに供給する。スイッチ72iは、一致検出部71iが0を出力する場合にオフする。スイッチ72jは、一致検出部71jが1を出力する場合にオンし、選択回路21bjが出力する重み値をΔE算出回路73jの記憶部73jaに供給する。スイッチ72jは、一致検出部71jが0を出力する場合にオフする。スイッチ72i,72jのそれぞれは、たとえば、トライステートバッファである。
たとえば、スイッチ72iがオンのとき、記憶部21aから読み出されるWliは、記憶回路21ciと同じタイミングで、記憶部73iaに書き込まれる。スイッチ72jがオンのとき、記憶部21aから読み出されるWljは、記憶回路21cjと同じタイミングで、記憶部73jaに書き込まれる。
ΔE算出回路73i,73jは、ローカルフィールド値と重み値とを用いて、ハミング距離=2の状態遷移によって1-hot制約を満たすある状態から1-hot制約を満たす別の状態に遷移するときのΔE,ΔEを算出する。
ΔE算出回路73iには、h生成回路21eiから、hが直接供給される。ΔE算出回路73jには、h生成回路21ejから、hが直接供給される。
さらに、値が0のビットについてのローカルフィールド値がh生成部21eから供給されるΔE算出回路には、h伝搬制御部21fによって、そのビットと同じグループに属す値が1のビットについてのローカルフィールド値が伝搬される。
たとえば、インデックス=i,jのビットが同じグループに属し、インデックス=iのビットの値が1、インデックス=jのビットの値が0であるとする。その場合、ΔE算出回路73jには、h伝搬制御部21fにより、hが伝搬される。また、その場合、ΔE算出回路73jの記憶部73jaには、Wijが保持されている。インデックス=iのビットの値が1であるということは、記憶部73jaの書き込み時には、選択部21bに供給されるインデックス=lはインデックス=iと等しく、記憶部21aから読み出された重み値は、Wlj=Wijであるためである。
ΔE算出回路73jは、h,hとWijに基づいて、xが1から0に変化するとともに、xが0から1に変化することによるΔEを、式(7)に基づいて算出する。このように、hの更新を行うために記憶部21aから読み出された重み値のうち、ΔEの算出に用いるWijが記憶部73jaに保持されるため、ΔEの算出の際にWijを再度、記憶部21aから読み出さなくてよい。
また、上記のように式(7)の計算を行うためのWijを記憶部73jaに記憶しておくことで、計算条件を変えるために重み値の変更をする場合などに対応可能となる。
以上、実施の形態に基づき、本発明の最適化装置及び最適化装置の制御方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
10 最適化装置
11,12 記憶部
12p1~12pn 保持部
13 h生成部
13p1~13pn h生成回路
14 ΔE算出部
14p1~14pn ΔE算出回路
15 選択回路
16 識別情報計算部
17 更新部
17a 記憶部

Claims (6)

  1. 計算対象の問題を変換したイジングモデルに含まれる複数のスピンに対応する複数のビットについて、前記複数のビットが複数のグループに分けられた場合における前記複数のグループのそれぞれに含まれる複数個のビットのうち、値が1である第1のビットについての第1のローカルフィールド値と、値が0である第2のビットについての第2のローカルフィールド値とに基づいて、前記第1のビットの値が1から0に変化するとともに前記第2のビットの値が0から1に変化することによる前記イジングモデルの第1のエネルギー変化を、それぞれ算出する複数の算出回路と、
    入力される温度パラメータと、乱数とに基づいて決定される熱励起エネルギーと、前記複数の算出回路がそれぞれ出力する前記第1のエネルギー変化との大小関係に基づいて、前記複数のグループのそれぞれに含まれる前記第2のビットのうち、0から1への値の更新を許容する1つの前記第2のビットを識別する第1のビット識別情報を出力する選択回路と、
    前記選択回路が出力する前記第1のビット識別情報に基づいて、更新が許容された前記第2のビットが属す第1のグループを検出し、前記第1のグループに属す前記第1のビットを識別する第2のビット識別情報を出力する識別情報計算部と、
    前記識別情報計算部が出力する前記第2のビット識別情報に基づいて、前記第1のグループに属す前記第1のビットの値を1から0に更新するとともに、前記第1のビット識別情報に基づいて、更新が許容された前記第2のビットの値を0から1に更新する更新部と、
    前記複数のグループの各々において、第1の記憶部が保持する前記複数のビットのそれぞれの間の相互作用の大きさを示す重み値の行列のうち、値が1であるビットを識別するビット識別情報に対応する全ての行を保持する第2の記憶部と、
    前記第1のローカルフィールド値と前記第2のローカルフィールド値とをそれぞれ、前記選択回路が出力する前記第1のビット識別情報に基づいて前記第1の記憶部から読み出される前記第1のビット識別情報に対応する第1の行と、前記第2の記憶部から読み出される前記第2のビット識別情報に対応する第2の行とに基づいて生成するローカルフィールド生成部と、
    を有する最適化装置。
  2. 前記第2の記憶部は、前記複数のグループの各々について、第1の保持部と、第2の保持部とを有し、
    前記第1のグループについての前記第1の行が前記第1の記憶部から読み出されたとき、前記第1の保持部に前記第1の行が書き込まれるとともに、前記第2の保持部から前記第2の行が読み出され、次に前記第1のグループについての前記第1の行が前記第1の記憶部から読み出されたとき、読み出された前記第1の行は前記第2の保持部に書き込まれ、前記第1の保持部に保持されている前記第1の行が前記第2の行として読み出される、
    請求項1に記載の最適化装置。
  3. 前記識別情報計算部は、前記第1のグループを識別するグループ識別情報を出力し、
    前記第2の記憶部は、前記グループ識別情報に基づいて、前記第1の保持部と、前記第2の保持部のうち、一方を書き込み対象として設定し、他方を読み出し対象として設定するデコード部を有する、
    請求項2に記載の最適化装置。
  4. 前記最適化装置はさらに、イネーブル信号が第1の値である場合、前記第2の記憶部を前記第1の記憶部及び前記ローカルフィールド生成部に接続し、前記イネーブル信号が第2の値である場合、前記第2の記憶部と、前記第1の記憶部及び前記ローカルフィールド生成部との接続を切断するスイッチを有し、
    前記イネーブル信号が前記第2の値の場合、
    前記ローカルフィールド生成部は、前記複数のビットのうちの1つが変化するときの前記複数のビットのそれぞれについての第3のローカルフィールド値を生成し、
    前記複数の算出回路のそれぞれは、前記第3のローカルフィールド値に基づいて、前記複数のビットのうちの1つが変化するときの前記イジングモデルの第2のエネルギー変化をそれぞれ算出し、
    前記選択回路は、前記熱励起エネルギーと、前記複数の算出回路がそれぞれ出力する前記第2のエネルギー変化との大小関係に基づいて、前記複数のビットのうちで更新を許容する1つの第3のビットを識別する第3のビット識別情報を出力し、
    前記更新部は、前記第3のビット識別情報に基づいて、前記第3のビットの値を更新する、
    請求項1乃至3の何れか一項に記載の最適化装置。
  5. 前記複数の算出回路のそれぞれは、前記第1のビットと前記第2のビットとの相互作用の大きさを示す重み値を保持する第3の記憶部を有する、
    請求項1乃至4の何れか一項に記載の最適化装置。
  6. 最適化装置の制御方法において、
    前記最適化装置が有する複数の算出回路が、計算対象の問題を変換したイジングモデルに含まれる複数のスピンに対応する複数のビットについて、前記複数のビットが複数のグループに分けられた場合における前記複数のグループのそれぞれに含まれる複数個のビットのうち、値が1である第1のビットについての第1のローカルフィールド値と、値が0である第2のビットについての第2のローカルフィールド値とに基づいて、前記第1のビットの値が1から0に変化するとともに前記第2のビットの値が0から1に変化することによる前記イジングモデルの第1のエネルギー変化を、それぞれ算出し、
    前記最適化装置が有する選択回路が、入力される温度パラメータと、乱数とに基づいて決定される熱励起エネルギーと、前記複数の算出回路がそれぞれ出力する前記第1のエネルギー変化との大小関係に基づいて、前記複数のグループのそれぞれに含まれる前記第2のビットのうち、0から1への値の更新を許容する1つの前記第2のビットを識別する第1のビット識別情報を出力し、
    前記最適化装置が有する識別情報計算部が、前記選択回路が出力する前記第1のビット識別情報に基づいて、更新が許容された前記第2のビットが属す第1のグループを検出し、前記第1のグループに属す前記第1のビットを識別する第2のビット識別情報を出力し、
    前記最適化装置が有する更新部が、前記識別情報計算部が出力する前記第2のビット識別情報に基づいて、前記第1のグループに属す前記第1のビットの値を1から0に更新するとともに、前記第1のビット識別情報に基づいて、更新が許容された前記第2のビットの値を0から1に更新し、
    前記最適化装置が有する第1の記憶部が、前記複数のグループの各々において、第2の記憶部が保持する前記複数のビットのそれぞれの間の相互作用の大きさを示す重み値の行列のうち、値が1であるビットを識別するビット識別情報に対応する全ての行を保持し、
    前記最適化装置が有するローカルフィールド生成部が、前記第1のローカルフィールド値と前記第2のローカルフィールド値とをそれぞれ、前記選択回路が出力する前記第1のビット識別情報に基づいて前記第2の記憶部から読み出される前記第1のビット識別情報に対応する第1の行と、前記第1の記憶部から読み出される前記第2のビット識別情報に対応する第2の行とに基づいて生成する、
    最適化装置の制御方法。
JP2019075703A 2019-04-11 2019-04-11 最適化装置及び最適化装置の制御方法 Active JP7185140B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2019075703A JP7185140B2 (ja) 2019-04-11 2019-04-11 最適化装置及び最適化装置の制御方法
EP20164455.6A EP3722941B1 (en) 2019-04-11 2020-03-20 Optimization device and method for controlling optimization device
US16/838,057 US11422515B2 (en) 2019-04-11 2020-04-02 Optimization device and method for controlling optimization device
CN202010269201.7A CN111812972B (zh) 2019-04-11 2020-04-08 优化装置和用于控制优化装置的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019075703A JP7185140B2 (ja) 2019-04-11 2019-04-11 最適化装置及び最適化装置の制御方法

Publications (2)

Publication Number Publication Date
JP2020173661A JP2020173661A (ja) 2020-10-22
JP7185140B2 true JP7185140B2 (ja) 2022-12-07

Family

ID=69941194

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019075703A Active JP7185140B2 (ja) 2019-04-11 2019-04-11 最適化装置及び最適化装置の制御方法

Country Status (4)

Country Link
US (1) US11422515B2 (ja)
EP (1) EP3722941B1 (ja)
JP (1) JP7185140B2 (ja)
CN (1) CN111812972B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7174244B2 (ja) * 2018-12-26 2022-11-17 富士通株式会社 最適化装置及び最適化装置の制御方法
JP2021149796A (ja) * 2020-03-23 2021-09-27 富士通株式会社 情報処理装置、特定方法および特定プログラム
JP2021168068A (ja) * 2020-04-13 2021-10-21 富士通株式会社 最適化装置、最適化方法及び最適化プログラム
JP2021168096A (ja) * 2020-04-13 2021-10-21 富士通株式会社 サンプリング装置、サンプリング方法及びサンプリングプログラム
JP2022184426A (ja) * 2021-06-01 2022-12-13 富士通株式会社 データ処理装置、データ処理方法及びプログラム
US20240104160A1 (en) * 2022-09-25 2024-03-28 Fujitsu Limited Sequential group processing of optimization problems
CN116151171B (zh) * 2023-04-17 2023-07-18 华南理工大学 一种基于并行回火的全连接伊辛模型退火处理电路

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018063626A (ja) 2016-10-14 2018-04-19 富士通株式会社 最適化装置及び最適化装置の制御方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04237388A (ja) * 1991-01-22 1992-08-25 Matsushita Electric Ind Co Ltd ニューロプロセッサ
WO2009143166A2 (en) * 2008-05-20 2009-11-26 D-Wave Systems Inc. Systems, methods, and apparatus for calibrating, controlling, and operating a quantum processor
JP2010054938A (ja) * 2008-08-29 2010-03-11 Toshiba Corp 量子シミュレータ、量子計算機および方法
CN106170802A (zh) * 2014-03-12 2016-11-30 时空防御系统有限责任公司 通过绝热量子计算解决数字逻辑约束问题
EP3113084B1 (en) * 2015-06-29 2020-12-09 Parity Quantum Computing GmbH Quantum processing device and method
JP6496410B2 (ja) 2015-07-29 2019-04-03 株式会社日立製作所 情報処理装置及び方法
WO2017056366A1 (ja) 2015-09-30 2017-04-06 日本電気株式会社 最適化システム、最適化方法および最適化プログラム
US20170161612A1 (en) * 2015-12-07 2017-06-08 Microsoft Technology Licensing, Llc Partial Reinitialization for Optimizers
US11017289B2 (en) * 2016-05-09 2021-05-25 1Qb Information Technologies Inc. Method and system for improving a policy for a stochastic control problem
JP6468247B2 (ja) * 2016-06-06 2019-02-13 富士通株式会社 イジング装置及びイジング装置の制御方法
JP6773970B2 (ja) 2016-09-09 2020-10-21 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法
JP6979331B2 (ja) * 2017-10-30 2021-12-15 株式会社日立製作所 情報処理装置および情報処理方法
CN109240644B (zh) * 2018-08-17 2023-08-15 中国人民解放军国防科技大学 一种用于伊辛芯片的局部搜索方法及电路

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018063626A (ja) 2016-10-14 2018-04-19 富士通株式会社 最適化装置及び最適化装置の制御方法

Also Published As

Publication number Publication date
EP3722941A1 (en) 2020-10-14
US20200326673A1 (en) 2020-10-15
US11422515B2 (en) 2022-08-23
EP3722941B1 (en) 2021-09-22
CN111812972A (zh) 2020-10-23
CN111812972B (zh) 2022-12-09
JP2020173661A (ja) 2020-10-22

Similar Documents

Publication Publication Date Title
JP7185140B2 (ja) 最適化装置及び最適化装置の制御方法
JP7206476B2 (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
JP2019159637A (ja) 最適化装置及び最適化装置の制御方法
JP2020021209A (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
JP7007585B2 (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
JP7323777B2 (ja) 最適化装置および最適化方法
JP7410395B2 (ja) 最適化装置及び最適化方法
JP7137064B2 (ja) 最適化装置及び最適化装置の制御方法
Lin et al. New benchmark algorithm for hybrid flowshop scheduling with identical machines
US20200278385A1 (en) Information processing device and control method of optimization device
US20200090051A1 (en) Optimization problem operation method and apparatus
US20210256090A1 (en) Optimization apparatus and optimization method
US20210173990A1 (en) Optimization device and method of controlling optimization device
JP2020027426A (ja) 最適化システム、最適化システムの制御方法及び最適化システムの制御プログラム
JP7219402B2 (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
US11188044B2 (en) Optimization device and control method of optimization device
US9501331B2 (en) Satisfiability checking
JP2020173579A (ja) 最適化システムおよび最適化システムの制御方法
Nagrecha et al. Hydra: A System for Large Multi-Model Deep Learning
Kara et al. Parallel network simplex algorithm for the minimum cost flow problem
JPWO2020054061A1 (ja) 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム
US20230081944A1 (en) Data processing apparatus, data processing method, and storage medium
CN113283609A (zh) 信息处理方法、信息处理设备和信息处理程序
JP2023149428A (ja) データ処理装置、プログラム及びデータ処理方法
JP2024049202A (ja) データ処理装置、プログラム及びデータ処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221012

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: 20221025

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221107

R150 Certificate of patent or registration of utility model

Ref document number: 7185140

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150