(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023167161
(43)【公開日】2023-11-24
(54)【発明の名称】情報処理装置、情報処理方法、プログラム
(51)【国際特許分類】
G06Q 10/08 20230101AFI20231116BHJP
【FI】
G06Q10/08
【審査請求】有
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022078124
(22)【出願日】2022-05-11
(71)【出願人】
【識別番号】599163458
【氏名又は名称】アスクル株式会社
(74)【代理人】
【識別番号】110002860
【氏名又は名称】弁理士法人秀和特許事務所
(72)【発明者】
【氏名】三井 康行
(72)【発明者】
【氏名】佐藤 寛之
(72)【発明者】
【氏名】山越 悠貴
【テーマコード(参考)】
5L049
【Fターム(参考)】
5L049AA16
(57)【要約】
【課題】進化計算アルゴリズムの処理を効率よく実行させる。
【解決手段】進化計算アルゴリズムを用いて、複数の要素の条件を決定する情報処理装置は、前記複数の要素のそれぞれの条件情報を含む条件情報集合を複数取得し、前記複数の条件情報集合をそれぞれ評価することと、交叉の処理および突然変異の処理を行って次世代の複数の条件情報集合を生成することとを繰り返して、前記複数の要素の条件を決定する決定手段を有する。前記交叉の処理は、2つの条件情報集合における同一の要素同士の条件情報を交叉させる処理である。前記決定手段は、前記複数の要素のうち第1の要素と第2の要素とが類似度に応じた所定の関係を満たせば、前記交叉の処理を行う場合には、前記第1の要素の条件情報と前記第2の要素の条件情報とに同じ交叉点で前記交叉の処理を行う。
【選択図】
図2
【特許請求の範囲】
【請求項1】
進化計算アルゴリズムを用いて、複数の要素の条件を決定する情報処理装置であって、
前記複数の要素のそれぞれの条件情報を含む条件情報集合を複数取得し、前記複数の条件情報集合をそれぞれ評価することと、交叉の処理および突然変異の処理を行って次世代の複数の条件情報集合を生成することとを繰り返して、前記複数の要素の条件を決定する決定手段を有し、
前記交叉の処理は、2つの条件情報集合における同一の要素同士の条件情報を交叉させる処理であり、
前記決定手段は、前記複数の要素のうち第1の要素と第2の要素とが類似度に応じた所定の関係を満たせば、前記交叉の処理を行う場合には、前記第1の要素の条件情報と前記第2の要素の条件情報とに同じ交叉点で前記交叉の処理を行う、
ことを特徴とする情報処理装置。
【請求項2】
前記決定手段は、前記複数の要素のうち第1の要素と第2の要素とが類似度に応じた前記所定の関係を満たせば、前記突然変異の処理を行う場合には、前記第1の要素の条件情報に対して突然変異を行うとともに、前記第2の要素の条件情報に対しても同じ突然変異を行う、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記複数の要素間の類似度に応じて、前記複数の要素を複数のグループに分類する制御手段をさらに有し、
前記第1の要素と前記第2の要素とが類似度に応じた前記所定の関係を満たす場合とは、前記第1の要素と前記第2の要素とが同一のグループに分類されている場合である、
ことを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記制御手段は、前記複数の要素間の類似度を各要素の属性に応じて判定する、
ことを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記複数の要素は、互いに異なる種類の商品であり、
前記属性は、それぞれの商品に対応付けられた情報であって、カテゴリ、商品名、メーカー情報、スペック、価格、商品説明、販売開始日の少なくとも1つを含む情報である、ことを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記複数の要素は、互いに異なる種類の商品であり、
複数の商品それぞれの条件情報は、複数の保管場所それぞれでの当該商品の在庫の有無を示す、
ことを特徴とする請求項1または2に記載の情報処理装置。
【請求項7】
前記決定手段は、前記複数の条件情報集合それぞれの評価値を算出し、
前記評価値は、1種類の商品あたりの当該商品が保管されている保管場所の数と、過去の出荷実績データに基づく商品の配送コストとに基づく値である、
ことを特徴とする請求項6に記載の情報処理装置。
【請求項8】
進化計算アルゴリズムを用いて、複数の要素の条件を決定する情報処理方法であって、
前記複数の要素のそれぞれの条件情報を含む条件情報集合を複数取得し、前記複数の条件情報集合をそれぞれ評価することと、交叉の処理および突然変異の処理を行って次世代の複数の条件情報集合を生成することとを繰り返して、前記複数の要素の条件を決定する決定ステップを有し、
前記交叉の処理は、2つの条件情報集合における同一の要素同士の条件情報を交叉させ
る処理であり、
前記決定ステップでは、前記複数の要素のうち第1の要素と第2の要素とが類似度に応じた所定の関係を満たせば、前記交叉の処理を行う場合には、前記第1の要素の条件情報と前記第2の要素の条件情報とに同じ交叉点で前記交叉の処理を行う、
ことを特徴とする情報処理方法。
【請求項9】
請求項8に記載の情報処理方法の各ステップをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、プログラムに関する。
【背景技術】
【0002】
従来、遺伝的アルゴリズムなどの進化計算アルゴリズムを用いて、複数の個体に対して、選択、交叉、および突然変異の処理を行って次世代の複数の個体を生成することを繰り返すことにより、評価の高い個体を生成する技術が提案されている。
【0003】
特許文献1には、制約条件を満たす個体を生成するために、N個の個体に対して選択、交叉、および突然変異の処理を行って仮制約条件を満たす次世代のN個の個体を生成することを繰り返す、解探索装置が記載されている。ここで、解探索装置は、次世代の個体を生成するたびに、制約条件に近づくように、仮制約条件を更新する。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
ここで、進化計算アルゴリズムでは、個体は、通常、1個の染色体(遺伝子が1列に並んだ遺伝情報)を有するが、異なる複数の染色体(条件情報)を有する場合がある。例えば、
図3に示す個体X1のように、項目B1~B4それぞれに染色体が対応付けられている場合がある。この場合には、進化計算アルゴリズムを用いた処理において、例えば、1個の個体に突然変異の処理を行う場合には、項目ごとにランダムな位置(遺伝子座)に突然変異の処理が行われる。このため、個体の評価値の収束性が低く、進化計算アルゴリズムの処理が効率的ではないという課題があった。
【0006】
そこで、本発明は、進化計算アルゴリズムの処理を効率よく実行させる技術の提供を目的とする。
【課題を解決するための手段】
【0007】
本発明の1つの態様は、
進化計算アルゴリズムを用いて、複数の要素の条件を決定する情報処理装置であって、
前記複数の要素のそれぞれの条件情報を含む条件情報集合を複数取得し、前記複数の条件情報集合をそれぞれ評価することと、交叉の処理および突然変異の処理を行って次世代の複数の条件情報集合を生成することとを繰り返して、前記複数の要素の条件を決定する決定手段を有し、
前記交叉の処理は、2つの条件情報集合における同一の要素同士の条件情報を交叉させる処理であり、
前記決定手段は、前記複数の要素のうち第1の要素と第2の要素とが類似度に応じた所定の関係を満たせば、前記交叉の処理を行う場合には、前記第1の要素の条件情報と前記第2の要素の条件情報とに同じ交叉点で前記交叉の処理を行う、
ことを特徴とする情報処理装置である。
【0008】
この構成によれば、第1の要素と第2の要素とが類似度に応じた所定の関係を満たす場合には、この2つの要素の条件情報(染色体)に対して同一の交叉の処理が行われる。このため、2つの要素の条件情報に対する処理をまとめて実行することが可能になるため、
進化計算アルゴリズムを用いた最適化処理を効率化(簡素化)することができる。また、複数の要素の条件情報に同一の交叉の処理が行われると、これらの条件情報同士が同様のものになりやすくなる。よって、例えば、第1の要素と第2の要素とが類似度に応じた所定の関係を満たす場合に、評価が高くなる条件情報が第1の要素と第2の要素とで互いに類似するのであれば、進化計算アルゴリズムにおける収束性が向上する。
【0009】
なお、条件情報とは、例えば、1次元配列の情報であって、進化計算アルゴリズムにおける「染色体」である。条件情報集合は、進化計算アルゴリズムにおける「個体」である。
【0010】
上記の情報処理装置において、前記決定手段は、前記複数の要素のうち第1の要素と第2の要素とが類似度に応じた前記所定の関係が満たせば、前記突然変異の処理を行う場合には、前記第1の要素の条件情報に対して突然変異を行うとともに、前記第2の要素の条件情報に対しても同じ突然変異を行ってもよい。これによれば、交叉の処理だけでなく、突然変異の処理についても2つの要素の条件情報に対して同一の処理を実行可能になるため、さらに進化計算アルゴリズムを用いた最適化処理を効率化(簡素化)することができる。
【0011】
上記の情報処理装置において、前記複数の要素間の類似度に応じて、前記複数の要素を複数のグループに分類する制御手段をさらに有し、前記第1の要素と前記第2の要素とが類似度に応じた前記所定の関係を満たす場合とは、前記第1の要素と前記第2の要素とが同一のグループに分類されている場合であってもよい。これによれば、グループごとに交叉の処理を行うことが可能になるので、進化計算アルゴリズムを用いた最適化処理を効率化(簡素化)することができる。
【0012】
上記の情報処理装置において、前記制御手段は、前記複数の要素間の類似度を各要素の属性に応じて判定してもよい。
【0013】
上記の情報処理装置において、前記複数の要素は、互いに異なる種類の商品であり、前記属性は、それぞれの商品に対応付けられた情報であって、カテゴリ、商品名、メーカー情報、スペック、価格、商品説明、販売開始日の少なくとも1つを含む情報であってもよい。
【0014】
上記の情報処理装置において、前記複数の要素は、互いに異なる種類の商品であり、複数の商品それぞれの条件情報は、複数の保管場所それぞれでの当該商品の在庫の有無を示していてもよい。これによれば、各保管場所への各種類の商品の配置を決定することが可能になる。
【0015】
上記の情報処理装置において、前記決定手段は、前記複数の条件情報集合それぞれの評価値を算出し、前記評価値は、1種類の商品あたりの当該商品が保管されている保管場所の数と、過去の出荷実績データに基づく商品の配送コストとに基づく値であってもよい。これによれば、情報処理装置は、保管場所での管理コストと配送コストとの両方を考慮した評価を行うことが可能になる。つまり、各保管場所への各種類の商品の配置を適切に決定することが可能になる。
【0016】
なお、本発明は、上述した機能および処理の少なくとも一部を含む情報処理方法、電子機器、電子機器の制御方法、情報処理システム、商品管理システム、商品管理装置、商品管理方法、最適化処理装置、最適化方法と捉えることができる。また、本発明は、情報処理装置(電子機器)の各手段(情報処理方法の各ステップ)をコンピュータに実行させるプログラム、または、当該プログラムを非一時的に記憶した記憶媒体などとして捉えるこ
ともできる。
【発明の効果】
【0017】
本発明によれば、進化計算アルゴリズムの処理を効率よく実行させることができる。
【図面の簡単な説明】
【0018】
【
図1】
図1は、実施形態1に係る複数の商品の倉庫への配置を説明する図である。
【
図2】
図2は、実施形態1に係る情報処理装置の構成図である。
【
図3】
図3は、実施形態1に係る各個体を説明する図である。
【
図4】
図4は、実施形態1に係る属性の情報を説明する図である。
【
図5】
図5Aおよび
図5Bは、実施形態1に係る交叉の処理および突然変異の処理を説明する図である。
【
図6】
図6は、実施形態1に係る最適化処理のフローチャートである。
【
図7】
図7は、実施形態1に係る評価値の算出処理のフローチャートである。
【
図8】
図8Aおよび
図8Bは、実施形態1に係る交叉および突然変異に関するフローチャートである。
【
図9】
図9は、実施形態1に係る、商品の類似度に応じた交叉の処理を説明する図である。
【
図10】
図10は、実施形態1に係る、商品の類似度に応じた突然変異の処理を説明する図である。
【
図11】
図11は、変形例1に係る最適化処理のフローチャートである。
【発明を実施するための形態】
【0019】
以下、図面を参照して本発明の例示的な実施形態を詳細に説明する。なお、本発明は説明する実施形態に限定されない。また、実施形態で説明される構成要素の全てが本発明に必須とは限らない。
【0020】
<実施形態1>
実施形態1では、注文者からの注文に応じて、倉庫(保管場所)から商品を注文者に配送(出荷)する業者に関して、P種類(P>2)の商品をQ箇所(P>Q、かつQ>2)の倉庫に配置する場合を想定する。そして、実施形態1に係る情報処理装置1は、進化計算アルゴリズムとして遺伝的アルゴリズムを用いて、配送コストが低く、かつ、倉庫の管理コストを少なくするように、P種類の商品のQ箇所の倉庫への配置(P種類の商品の配置条件)を制御する。なお、遺伝的アルゴリズムの代わりに、メメティックアルゴリズム(Memeticアルゴリズム)、免疫型最適化アルゴリズム、分散型遺伝的アルゴリズム(島モデル)などの進化計算アルゴリズムを用いてもよい。
【0021】
例えば、
図1のように倉庫A(1)~A(3)に商品B(1)~B(4)が配置されており、注文者の配送先(住所)から倉庫A(1),A(2),A(3)の順で近い場合を想定する。この場合には、注文者が、商品B(1),B(4)を同時に注文した場合には、商品B(1)を倉庫A(1)から配送し、商品B(4)を倉庫A(3)から配送することが最も低い配送コストで2種類の商品を配送できる。一方で、倉庫A(1)に商品B(1),B(4)の両方が配置されていれば、倉庫A(1)から2種類の商品を配送できるため、さらに配送コストを下げることができる。しかし、倉庫A(1)に商品B(1)~B(4)の4種類の商品が配置されている場合には、倉庫A(1)に商品B(1)~B(3)の3種類の商品が配置されている場合よりも、倉庫A(1)の管理コストが高い。
【0022】
このようなことを鑑み、実施形態1では、注文者へ商品を配送する際の配送コストを下げることを目的にしながら、さらに倉庫の管理コストを減少させることを目的にする。実施形態1では、情報処理装置1は、P種類の商品間の類似度に基づき、交叉の処理および
突然変異の処理を制御することにより、これらの目的を達成させる。
【0023】
(情報処理装置の構成)
図2を参照して、情報処理装置1の構成について説明する。情報処理装置1は、プロセッサや記憶媒体(メモリ)などを有して、情報を処理することが可能であれば、任意の装置(パーソナルコンピュータなど)であってよい。情報処理装置1は、取得部201、評価部202、生成部203、制御部204、属性格納部205を有する。なお、情報処理装置1に含まれるプロセッサが、取得部201、評価部202、生成部203、制御部204として機能する。情報処理装置1が含む記憶媒体(メモリ)が、属性格納部205として機能する。
【0024】
取得部201は、P種類の商品の在庫配置情報を有する在庫配置情報集合(条件情報集合)のN個(N>2)をそれぞれ、遺伝子アルゴリズムにおける「個体」として取得(生成)する。在庫配置情報(条件情報)は、当該在庫配置情報に紐づけられた商品が、倉庫A(1)~A(Q)のそれぞれに配置されるか否か(在庫の有無;配置条件)を示すような、遺伝子アルゴリズムにおける「染色体」である。このため、実施形態1では、各個体は、商品B(1)~B(P)のP種類の商品(要素;項目)のそれぞれについて染色体を有する。つまり、各個体は、P個の染色体を有する。具体的には、各個体において、
図3に示すように、各商品に対して、倉庫A(1)~A(Q)のそれぞれに配置されているか否かを「0」および「1」により示す1次元配列が染色体として設定されている。例えば、個体X1について、商品B(1)の染色体の1列目(1つ目の遺伝子)の値が「1」であれば、倉庫A(1)に商品B(1)が配置されることが示されている。一方、個体X1について、商品B(4)の染色体の5列目(5つ目の遺伝子)の値が「0」であれば、倉庫A(5)に商品B(4)が配置されないことが示されている。
【0025】
なお、各商品の在庫配置情報(染色体)において、各遺伝子は、各倉庫における当該商品の個数の上限値または下限値を示すものであってもよい。例えば、個体X1について、商品B(1)の染色体の1列目(1つ目の遺伝子)の値が「10」であれば、倉庫A(1)に少なくとも10個の商品B(1)が配置されることを示していてもよい。一方、個体X1について、商品B(4)の染色体の5列目(5つ目の遺伝子)の値が「15」であれば、倉庫A(5)に少なくとも15個の商品B(4)が配置されることを示していてもよい。さらに、各商品の在庫配置情報(染色体)において、各遺伝子は、各倉庫における当該商品の保管に用いる場所(例えば、棚)のサイズを示すものであってもよい。
【0026】
評価部202は、N個の個体(在庫配置情報集合;条件情報集合)の評価を行う。具体的には、評価部202は、N個の個体それぞれについて、配送コストと倉庫の管理コストとに基づき評価値を算出する。評価値の算出方法については、
図7のフローチャートを用いて詳細に後述する。
【0027】
生成部203は、N個の個体を用いて、選択(Selection)の処理、交叉(Crossover)の処理、および突然変異(mutation)の処理を実行して、次世代のN個の個体を生成する。生成部203は、選択部211、交叉処理部212、突然変異処理部213を有する。
【0028】
制御部204は、情報処理装置1の各構成を制御する。制御部204(決定部)は、取得部201、評価部202、および生成部203の全ての処理または一部の処理を行ってもよい。また、制御部204は、評価部202による評価に基づき、生成部203が次世代のN個の個体を生成することを終了させるか否かを判定する。制御部204は、生成部203が次世代のN個の個体を生成することを終了させた時点における現世代のN個の個体に基づき、P種類の商品のQ箇所の倉庫への配置(各種類の商品の倉庫への配置条件)
を決定する。例えば、制御部204は、評価値が最も高い個体(在庫配置情報集合)が示す染色体(配置情報)に従って、P種類の商品のQ箇所の倉庫への配置を決定する。
【0029】
属性格納部205は、
図4に示すように、商品B(1)~B(P)それぞれの属性の情報を格納する。例えば、属性の情報としては、商品名(商品の名称)、カテゴリ情報(特大分類、大分類、中分類、小分類)、色情報などがある。特大分類とは、商品の最も抽象的なカテゴリである。特大分類、大分類、中分類、小分類の順に、徐々に具体的なカテゴリに変化していく。例えば、
図4に示すように、特定のゲルインクボールペンである商品B(1)については、特大分類が「文具・事務用品」であり、大分類が「筆記用具」であり、中分類が「ボールペン」であり、小分類が「ゲルインクボールペン」である。なお、属性の情報は、例えば、メーカー情報(製造者に関する情報、シリーズ名、またはブランド名)、価格、スペック、商品説明、および販売開始日の少なくとも1つを含んでいてもよい。スペックとは、商品の寸法、重量、および機能の少なくともいずれかに関する詳細情報である。価格とは、商品価格である。例えば、ユーザが同価格帯の複数の商品を同時に購入する可能性があるため、属性の情報に価格が含まれる。商品説明とは、WEBサイトなどに表示される商品を説明する文章であって、キャッチコピーを含む。販売開始日とは、商品の発売(販売)が開始された日である。例えば、同日に発売が開始された複数の商品は同じ商品シリーズの可能性(つまり、類似している可能性)があるため、属性の情報に発売開始日が含まれる。
【0030】
また、属性格納部205は、商品(要素;項目)の類似度に応じて(複数の商品が類似度に応じた特定の関係を満たすか否かに応じて)、商品B(1)~B(P)を複数のグループに分類したグループ情報を格納する。ここで、商品のグループの分類の処理は、例えば、制御部204が属性の情報に基づき実行する。例えば、属性における「小分類」が同一の商品同士は、互いに類似度が高い(閾値より高い)ため、1つのグループにまとめられる。つまり、「小分類」ごとのグループに、P種類の商品がグループ化されてもよい。例えば、
図4に示す例であれば、商品B(1)と商品B(4)とはともに「小分類」が「ゲルボールボールペン」であるため、同じグループに分類される。なお、「小分類」の代わりに、「中分類」や「大分類」が用いられてもよい。
【0031】
なお、互いに類似度が閾値より高い商品が1つのグループに分類されるのであれば、任意のグループの分類が行われてもよい。例えば、制御部204は、属性の「大分類」が互いに同じであり、かつ、「色情報」も互いに同じである複数の商品を1つのグループに分類してもよい。また、制御部204は、商品名(商品の名称)の類似度が互いに所定値よりも高い複数の商品を1つのグループに分類してもよい。ここで、商品名の類似度の判定には、例えば、「レーベンシュタイン距離」や、テキスト情報を分散表現などを用いて連続値のベクトルに変換した後に「コサイン類似度」などで評価するといった既知の技術を用いることができる。さらに、類似度が互いに閾値より高い2つの商品同士をペア化することにより、グループを分類してもよい。なお、或る商品に類似する商品が存在しない場合などに起因して、グループに1つの商品のみが所属する場合も考えられる。なお、商品間の類似度は、属性に応じた類似度ではなく、商品が写った写真から判定される類似度であってもよい。
【0032】
選択部211は、現世代のN個の個体から、評価値が低い順にM個(例えば、N/2個)の個体を削除する。これにより、選択部211は、現世代のN個の個体から、評価値が高いN-M個の個体を選択する。なお、選択部211は、N個の個体のうちから、評価値が閾値よりも低い個体を除外してもよい。このことにより、選択部211は、評価値が閾値以上である複数の個体を選択してもよい。このとき、選択部211は、評価値の高い個体を選択する可能性が高い方法であれば、ルーレット方式(Roulette Wheel Selection)、ランキング方式(Rank Selection)、エリー
ト主義(Elitism)などの任意の選択方法によって、個体を選択してもよい。
【0033】
交叉処理部212は、選択部211が選択した複数の個体から2個の個体をさらに選択して、選択した2個の個体に交叉の処理を行う。このことにより、交叉処理部212は、1個の次世代の個体を生成する。交叉の処理とは、2個の個体において、同一の商品同士(要素同士)の染色体(在庫配置情報)を、ランダムに決定された交叉点(交叉の基準となる遺伝子座)を基準として掛け合わせることである。
【0034】
例えば、
図5Aに示すような個体X1を1番目の個体として選択して、個体X2を2番目の個体として選択して、2個の個体の商品B(1)の2個の染色体同士を交叉させる場合について説明する。このとき、染色体の5列目と6列目の間の位置を交叉点とすると、交叉処理部212は、1番目の個体X1の商品B(1)の染色体の1列目~5列目と、2番目の個体X1の商品B(1)の染色体の6列目~12列目とを掛け合わせる。このことにより、交叉処理部212は、次世代の個体Xaの商品B(1)の染色体を生成する。交叉処理部212は、個体X1および個体X2の商品B(2)~B(P)の染色体についても同様の処理を行うことにより、次世代の個体Xaを生成する。なお、交叉点は、1点であることに限らず、2点や3点であってもよい。また、交叉の処理は、一様交叉であってもよい。
【0035】
突然変異処理部213は、交叉の処理により生成された個体に対して突然変異の処理を行う。このことにより、突然変異処理部213は、1個の次世代の個体を生成する。突然変異の処理とは、1個の個体の各商品の染色体において、ランダムな1箇所(遺伝子座)の遺伝子(情報)を変更する(反転させる)ことである。
【0036】
例えば、
図5Bに示すような個体X1において、商品B(1)の染色体に突然変異の処理を行う場合について説明する。このとき、突然変異の対象(対象位置)を染色体の5列目の遺伝子であるとすると、突然変異処理部213は、当該5列目の遺伝子が示す「0」を「1」に変更する(反転させる)。このことにより、突然変異処理部213は、次世代の個体Xbの商品B(1)の染色体を生成する。交叉処理部212は、個体X1の商品B(2)~B(P)の染色体についても同様の処理を行うことにより、次世代の個体Xbを生成する。
【0037】
(最適化処理について)
図6のフローチャートを参照して、評価値の高いN個の個体の集合を決定することにより、個体の最適化(各染色体の最適化)を行う最適化処理について説明する。
図6のフローチャートの処理は、情報処理装置1において、プロセッサが、記憶媒体に格納されたプログラムを実行することにより実現される。
【0038】
ステップS1001において、取得部201は、N個の個体を現世代の個体として取得する。このとき、取得部201は、ランダムにN個の個体を生成してもよいし、ユーザが入力したN個の個体を取得してもよい。このとき、取得部201は、例えば、1個の個体において、商品が異なれば、商品の染色体についても異なるように、各個体を生成する。なお、取得部201は、各個体において、同一のグループに属する複数の商品(互いに類似する複数の商品)の染色体が互いに同一になるように当該個体を取得してもよい。または、取得部201は、各個体において、同一のグループに属する複数の商品の染色体が互いに類似するように当該個体を取得してもよい。ここで、「2つの染色体が互いに類似する」とは、例えば、2つの染色体の合致度(一致度)が所定値(例えば、90%または95%)以上であることをいう。
【0039】
実施形態1では、取得部201は、制約条件を満たすような、現世代のN個の個体を取
得する。ここで、制約条件は、例えば、各倉庫の在庫容量を超過しないこと、各倉庫の出荷能力を超過しないこと、各商品の在庫容量は不変であること、および各商品は少なくとも1箇所に配置されていることの少なくとも1つの条件を含む。なお、制約条件は、設定されていなくてもよく、取得部201は、制約なく、現世代のN個の個体を取得してもよい。
【0040】
ステップS1002において、評価部202は、現世代のN個の個体それぞれの評価値を算出する。評価値の算出処理(算出方法)については、
図7のフローチャートを用いて後述する。
【0041】
ステップS1003において、制御部204は、最適化処理の終了条件を満たすか否かを判定する。例えば、制御部204は、現世代のN個の個体の評価値の最小値または最大値が閾値より大きい場合には、終了条件を満たすと判定する。また、制御部204は、現世代のN個の個体の評価値の平均値または中央値が閾値より大きい場合には、終了条件を満たすと判定してもよい。さらに、制御部204は、設定した世代数に達した時点(例えば、ステップS1003の処理が特定の回数だけ実行された時点)で、終了条件を満たすと判定してもよい。終了条件が満たされたと判定された場合には、最適化処理が終了する。終了条件が満たされていないと判定された場合には、ステップS1004に進む。なお、最適化処理が終了した場合には、制御部204は、現世代のN個の個体を、最適化されたN個の個体として決定する。ステップS1003の処理により、制御部204は、終了条件を満たすN個の個体が生成されるまで、次世代のN個の個体の生成および評価を繰り返すように制御することができる。
【0042】
ステップS1004において、選択部211は、現世代のN個の個体から、評価値が低い順にM個(例えば、N/2個)の個体を取り除く(削除する)。これにより、選択部211は、現世代のN個の個体から、評価値が高いN-M個の個体を選択する。また、選択部211は、現世代のN個の個体から評価値が閾値よりも小さい個体を取り除いてもよい。これにより、選択部211は、現世代のN個の個体から、評価値が閾値以上である複数の個体を選択することができる。また、選択部211は、各個体が制約条件をどれだけ満たしているか(制約違反の量)に応じて、現世代のN個の個体から取り除く個体を決定してもよい。
【0043】
制御部204は、次世代のN個の個体を生成するまで、ステップS1005およびS1006の処理を繰り返すように制御する。つまり、次世代のN個の個体が生成されると、ステップS1007に進む。
【0044】
ステップS1005において、交叉処理部212は、ステップS1004にて選択部211が選択した複数の個体のうちの2個の個体を選択する。そして、交叉処理部212は、選択した2個の個体を用いて交叉の処理を行うことにより、1個の次世代の個体を生成する。ステップS1005の処理の詳細については、
図8Aのフローチャートを用いて後述する。
【0045】
ステップS1006において、突然変異処理部213は、特定の確率(例えば、0.5%の確率)で、交叉処理により生成された1個の個体を用いて突然変異の処理を行うことにより、1個の次世代の個体を生成する。ステップS1006の処理の詳細については、
図8Bのフローチャートを用いて後述する。
【0046】
ステップS1007において、制御部204は、現世代のN個の個体を更新する。具体的には、制御部204は、生成部203が生成した次世代のN個の個体を、現世代のN個の個体として扱う。
【0047】
(評価値の算出処理;S1002)
図7のフローチャートを参照して、評価部202が行う評価値の算出処理の詳細について説明する。なお、
図7のフローチャートの処理は、現世代のN個の各個体それぞれについて個別に行われる。以下では、個体X1について、
図7のフローチャートの処理が行われる場合について説明する。
【0048】
ステップS2001において、評価部202は、個体X1の各商品の染色体から、各商品について何箇所の倉庫に配置されているか(指標α)を判定する。例えば、
図3に示す個体X1において、商品B(1)の染色体は「1」という数値を6個含むため、6箇所の倉庫に商品B(1)が配置されていると判定できる。一方で、商品B(2)の染色体は「1」という数値を3個含むため、3箇所の倉庫に商品B(2)が配置されていると判定できる。そして、評価部202は、1種類の商品あたりの、当該商品が配置される倉庫の平均値(指標α)を管理コストとして算出する。
図3の個体X1の例では、商品B(1)が6箇所の倉庫に配置され、商品B(2)が3箇所の倉庫に配置され、商品B(3)が3箇所の倉庫に配置され、商品B(4)が6箇所の倉庫に配置されるため、平均値は4.5箇所である。なお、指標αは、倉庫(商品)の管理コストを示す値であれば、任意の指標であってよい。なお、各商品の在庫配置情報(染色体)において、各遺伝子が、各倉庫における当該商品の個数の下限値を示すものである場合には、管理コストは、例えば、配置される商品の総数である。
【0049】
ステップS2002において、評価部202は、過去の所定期間の商品出荷の実績を示す出荷実績データを取得する。出荷実績データは、例えば、各出荷(各注文)における、出荷(配送)された商品の情報と注文者の住所(商品の配送先)の情報とが対応付けられたデータを、過去の所定期間分だけ有している。これらの情報は、情報処理装置1の記憶媒体などに予め格納されている。
【0050】
ステップS2003において、評価部202は、個体X1の染色体の情報と出荷実績データに基づき、出荷ごとの配送コストを算出する。例えば、
図1に示すような注文者が商品B(1)と商品B(4)を注文した場合における、出荷の配送コストの算出方法について説明する。そして、注文者の住所に最も近い倉庫A(1)に商品B(1)~B(3)を配置して、注文者の住所に2番目に近い倉庫A(2)に商品B(1),B(3)を配置して、注文者の住所に3番目に近い倉庫A(3)に商品B(2),B(4)を配置することを、個体X1の染色体が示していると仮定する。この場合には、注文者の住所に最も近い倉庫A(1)から商品B(1)が注文者に配送され、かつ、倉庫A(3)から商品B(4)が注文者に配送される場合が最も早く各商品を注文者が受け取ることができる。このため、この場合には、倉庫A(1)から注文者の住所までの距離D1の分と、倉庫A(3)から注文者の住所までの距離D3の分だけ、配送の労力が必要になる。よって、例えば、評価部202は、この場合の配送コストとして、D1とD3の合計を算出する。
【0051】
一方で、例えば、
図1に示すような注文者が商品B(1)と商品B(3)を注文した場合には、倉庫A(1)から両方の商品が注文者の住所に届けられると、最も早く各商品が注文者に届く。このため、例えば、評価部202は、この場合の配送コストとして、倉庫A(1)から注文者の住所までの距離D1を算出する。
【0052】
なお、評価部202は、他の様々なことを考慮して、出荷ごとの配送コストを算出してもよい。例えば、評価部202は、各商品の重量および大きさ、他の出荷に係る商品と同時に出荷可能か否か、各出荷に要する処理工程数などを考慮してもよい。つまり、配送コストは、各配送(各出荷)に要する労力または費用が大きいほど、大きくなれば任意のコストであってよい。また、出荷の方法について、各商品が最も早く注文者に届くように出
荷するのではなく、例えば、注文者の住所から遠くの倉庫であっても注文された複数の商品をまとめて出荷できるかを重視して出荷してもよい。
【0053】
ステップS2004において、評価部202は、ステップS2003にて出荷ごとに算出した配送コストの合計値(指標β)を算出する。
【0054】
ステップS2005において、評価部202は、ステップS2001にて算出した「1種類の商品あたりの当該商品が配置される倉庫の平均値」(指標α)とステップS2004にて算出した「配送コストの合計値」(指標β)とに基づき、個体X1の評価値を算出する。例えば、評価部202は、指標αと指標βとの積で、所定値Thを除算した値=Th/αβを、評価値として算出する。または、例えば、評価値は、指標αと指標βとの和で、所定値Thを除算した値=Th/(α+β)であってもよい。なお、評価部202は、指標αが小さいほど高い評価値を算出し、指標βが小さいほど高い評価値を算出するのであれば、任意の方法で評価値を算出してよい。
【0055】
なお、上記では、評価部202は、「1種類の商品あたりの当該商品が配置される倉庫の数の平均値」(指標α)と「配送コストの合計値」(指標β)との2つの指標に基づき個体X1の評価値を算出したが、他の指標を用いてもよい。例えば、評価部202は、指標α(管理コスト)として、各倉庫における商品の種類数の分散に基づき、個体X1の評価値を算出してもよい。また、例えば、評価部202は、商品を1種類も配置しない倉庫の数が多いほど、個体X1の評価値が高くなるように、当該評価値を算出してもよい。商品を1種類も配置しない倉庫が存在すれば、例えば、当該倉庫を他の用途に用いることや、倉庫自体を無くすことができるので、業者にとって財産の効率的な活用が可能となる。
【0056】
また、ステップS2005では、評価部202は、2つの指標α,βをそれぞれ評価値として用いて、各個体がパレート解分析における非劣解に該当するか否かという評価をしてもよい。非劣解とは、評価対象の個体よりも、指標αと指標βの両方が低い(つまり、全ての評価が優れた)他の個体がないことをいう。例えば、3つの個体について、個体X1では指標α=4、β=5であり、個体X2では指標α=3、β=7であり、個体X3では指標では指標α=5、β=6であるとする。この場合には、個体X1よりも指標α,βの両方が低い個体は存在しないため、個体X1は、非劣解であると評価できる。同様に、個体X2も非劣解であると評価できる。一方で、個体X1は、個体X3よりも指標α、βの両方が低いため、個体X3は非劣解でない(劣解である)と評価できる。なお、この場合であっても、指標の数は2つではなく、3以上であってもよい。また、このように、各個体について非劣解か否かを評価した場合には、例えば、ステップS1004において選択部211は、N個の個体の中から、劣解に該当する個体を削除して、非劣解に該当する個体だけを選択する。
【0057】
(交叉処理部の処理;ステップS1005)
図8Aのフローチャートを参照して、ステップS1005において交叉処理部212が行う処理の詳細について説明する。
【0058】
ステップS3001において、交叉処理部212は、ステップS1004にて選択部211が選択した複数の個体から、2個の個体を選択する。このとき、交叉処理部212は、ランダムに2個の個体を選択してもよいし、評価値が高い個体ほど選択される確率を高くして、2個の個体を選択してもよい。
【0059】
ステップS3002において、交叉処理部212は、属性格納部205に格納されているグループ情報に基づき、商品のグループごとにランダムに交叉点を決定する。このため、同じグループに属する商品には、同一の交叉点が決定される。なお、交叉処理部212
は、予め定められた確率に従って、商品のグループごとに交叉点を決定する場合と、P種類の商品の染色体それぞれの交叉点をランダムに決定する場合とを場合分けしてもよい。例えば、ステップS3002において、交叉処理部212は、商品のグループごとに交叉点を決定することを80%の確率で行い、P種類の商品の染色体それぞれの交叉点をランダムに決定することを20%の確率で行ってもよい。これによれば、同一のグループに属する複数の商品の染色体に対して常に同一の処理が行われるということがなくなるため、商品ごとに特有の性質も考慮した染色体が生成しやすくなる。
【0060】
ステップS3003において、交叉処理部212は、ステップS3001において選択した2個の個体を用いて、各商品の染色体に対して交叉の処理を行う。このとき、交叉処理部212は、各商品の染色体について、ステップS3002にて決定した交叉点を基準として、交叉の処理を行う。これにより、交叉処理部212は、1個の次世代の個体を生成する。つまり、同じグループに属する商品の染色体については、同一の交叉の処理が行われる。
【0061】
例えば、交叉処理部212が、ステップS3001において1番目の個体として個体X2を選択して、2番目の個体として個体X1を選択して、次世代の個体Xaを生成する場合を想定する(
図9参照)。この場合において、交叉処理部212は、ステップS3002において、商品B(1)と商品B(4)が属するグループG1に対して4列目と5列目との間の位置を交叉点として決定し、商品B(2)が属するグループG2に対して5列目と6列目との間の位置を交叉点として決定していると想定する。このとき、
図9に示すように、商品B(1)については、交叉処理部212は、個体X2の商品B(1)の染色体の1~4列目の遺伝子と、個体X1の商品B(1)の染色体の5列目以降の遺伝子とを掛け合わせて、個体Xaの染色体を生成する。同様に、商品B(4)については、交叉処理部212は、個体X2の商品B(4)の染色体の1~4列目の遺伝子と、個体X1の商品B(4)の染色体の5列目以降の遺伝子とを掛け合わせて、個体Xaの染色体を生成する。一方で、商品B(2)については、交叉処理部212は、個体X2の商品B(2)の染色体の1~5列目の遺伝子と、個体X1の商品B(2)の染色体の6列目以降の遺伝子とを掛け合わせて、個体Xaの染色体を生成する。
【0062】
ステップS3004において、交叉処理部212は、ステップS1001でのN個の個体の取得の際と同様の制約条件を、ステップS3003にて生成した個体が満たすか否かを判定する。制約条件が満たされていると判定された場合には、本フローチャートの処理が終了する。制約条件が満たされていないと判定された場合には、ステップS3002に戻る。なお、制約条件が満たされていないと判定された場合には、ステップS3001に戻ってもよい。なお、ステップS3004の処理は行われずに、ステップS3003にて交叉の処理が行われたら、本フローチャートの処理が終了してもよい。つまり、ステップS3003にて生成した個体が制約条件を満たさなくても、本フローチャートの処理が終了してもよい。
【0063】
(突然変異処理部の処理;ステップS1006)
図8Bのフローチャートを参照して、ステップS1006において突然変異処理部213が行う処理の詳細について説明する。
【0064】
ステップS4001において、突然変異処理部213は、予め設定された確率に基づき、交叉の処理により生成された1個の個体に対して突然変異の処理を行うか否かを判定する。例えば、突然変異処理部213は、99.5%の確率で突然変異の処理を行わないと判定し、0.5%の確率で突然変異の処理を行うと判定する。突然変異の処理を行うと判定された場合には、ステップS4002に進む。突然変異の処理を行わないと判定された場合には、本フローチャートの処理が終了する。本フローチャートの処理が終了する場合
には、突然変異処理部213は、交叉の処理により生成された個体を、次世代の個体として決定する。
【0065】
ステップS4002において、突然変異処理部213は、属性格納部205に格納されているグループごとに、ランダムに突然変異の対象位置(遺伝子座)を決定する。このため、同じグループに属する商品には、同一の突然変異の対象位置(遺伝子座)が決定される。
【0066】
ステップS4003において、突然変異処理部213は、交叉の処理により生成された1個の個体を用いて、各商品の染色体に対して突然変異の処理を行う。このとき、突然変異処理部213は、各商品の染色体について、ステップS4002にて決定した対象位置に対して、突然変異の処理を行う。これにより、突然変異処理部213は、1個の次世代の個体を生成する。つまり、同じグループに属する商品の染色体については、同一の突然変異の処理が行われる。
【0067】
例えば、突然変異処理部213が、ステップS4001において個体X2を選択して、次世代の個体Xbを生成する場合を想定する(
図10参照)。この場合において、突然変異処理部213は、ステップS4002において、商品B(1)と商品B(4)が属するグループG1に対して4列目の遺伝子座を突然変異の対象位置として決定し、商品B(2)が属するグループG2に対して6列目の遺伝子座を突然変異の対象位置として決定していると想定する。このとき、
図10に示すように、商品B(1)については、突然変異処理部213は、個体X1の商品B(1)の4列目の遺伝子を反転させることにより、個体Xbの染色体を生成する。同様に、商品B(4)については、突然変異処理部213は、個体X1の商品B(4)の染色体の4列目の遺伝子を反転させることにより、個体Xbの染色体を生成する。一方で、商品B(2)については、突然変異処理部213は、個体X1の商品B(2)の染色体の6列目の遺伝子を反転させることにより、個体Xbの染色体を生成する。
【0068】
ステップS4004において、突然変異処理部213は、ステップS1001でのN個の個体の取得の際と同様の制約条件を、ステップS4003にて生成した個体が満たすか否かを判定する。制約条件が満たされていると判定された場合には、本フローチャートの処理が終了する。制約条件が満たされていないと判定された場合には、ステップS4002に戻る。なお、ステップS4004の処理は行われずに、ステップS4003にて突然変異の処理が行われたら、本フローチャートの処理が終了してもよい。つまり、ステップS4003にて生成した個体が制約条件を満たさなくても、本フローチャートの処理が終了してもよい。
【0069】
実施形態1によれば、互いに類似度の高い商品(項目)の染色体に対して、同一の交叉の処理および同一の突然変異の処理が行われる。このため、遺伝的アルゴリズム(進化計算アルゴリズム)を用いた処理が行われる個体(解)では、互いに類似する商品において染色体同士が同様のものになりやすい。つまり、互いに類似する商品は、同一の倉庫に配置される可能性が高くなる。
【0070】
これは、互いに類似する商品は、同時に注文される可能性が高いため、同一の倉庫に配置されることが好ましいという知見にも合致する。このため、複数の倉庫それぞれに商品を配置する場合において、遺伝的アルゴリズム(進化計算アルゴリズム)の評価値の収束性が高くなる。また、各グループに対して、1つの交叉点および1つの突然変異の対象位置を決定すればよいので、交叉点および突然変異の対象位置を決定する処理を簡易化することができる。このため、1つの在庫配置情報集合(条件情報集合;個体)が多くの要素(商品;項目)についての在庫配置情報(条件情報;染色体)を有する場合であっても、
効率的に最適化処理を行うことができる。
【0071】
なお、実施形態1では、情報処理装置1は、同じグループに属する商品の染色体に対して、同じ交叉の処理および同じ突然変異の処理を実行した。しかし、情報処理装置1は、同じグループに属する商品の染色体に対して、同じ処理を行うのは、同じ交叉の処理および同じ突然変異の処理のうちのいずれか一方のみであってもよい。
【0072】
また、実施形態1では、各世代の個体の数を固定値(=N)としたが、世代ごとに個体の数は異なっていてもよい。例えば、世代が進むにつれてNの値が小さくなってもよいし、大きくなってもよい。
【0073】
(変形例1)
なお、最適化処理は、
図6に示すフローチャートの処理に限らない。最適化処理は、
図11に示すフローチャートの処理であってもよい。このとき、
図11では、
図6に示すステップS1004~S1006の処理の代わりに、ステップS5001~S5004の処理が行われる。以下では、ステップS5001~S5004の処理についてのみ説明する。なお、ステップS5001~S5004の処理は、次世代のN個の個体が生成し終わるまで、制御部204の制御により繰り返し実行される。
【0074】
ステップS5001では、制御部204は、分岐確率に基づき、ステップS5002~S5004のいずれかにステップを進めるように制御する。ここで、分岐確率は、ユーザにより予め設定されていてもよいし、個体の世代が進むにつれて変化していってもよい。分岐確率は、例えば、ステップS5002(選択の処理)に進む確率が50%であり、ステップS5003(交叉の処理)に進む確率が49.5%であり、ステップS5004(突然変異の処理)に進む確率が0.5%であると設定される。
【0075】
ステップS5002において、選択部211は、現世代のN個の個体のうちの1個を次世代の個体として選択する。ここで、選択部211は、例えば、評価値が高い個体ほど、当該個体を次世代の個体として選択する確率を高くする。また、選択部211は、N個の個体のうち、未だ選択されていない中で評価値が最も高い個体を選択してもよい。
【0076】
ステップS5003において、交叉処理部212は、現世代のN個の個体のうちの2個の個体を選択する。そして、交叉処理部212は、ステップS3002~S3004(
図8A参照)と同様に、選択した2個の個体を用いて交叉の処理を行うことにより、1個の次世代の個体を生成する。
【0077】
ステップS5004において、突然変異処理部213は、現世代のN個の個体のうち1個の個体をランダムに選択する。そして、突然変異処理部213は、ステップS4002~S4004(
図8B参照)と同様に、選択した1個の個体を用いて突然変異の処理を行うことにより、1個の次世代の個体を生成する。
【0078】
変形例1によれば、N個の現世代の個体のうちの優れた評価値を有するいくつかの個体は、次世代の個体としても用いられる。このため、現世代に評価値が優れた個体が存在する場合には、当該個体を次世代まで残すことができる。従って、特に優れた個体が最終的にN個の個体の中に残らないという可能性を低減させることができるので、最適化処理において、より良い個体を決定できる可能性が向上する。
【0079】
(その他の実施形態)
上記では、注文者からの注文に応じて、倉庫から商品を注文者に配送する業者に関して、P種類(P>2)の商品をQ箇所(Q>2)の倉庫に配置する場合の例について説明し
た。一方で、進化計算アルゴリズムを用いて最適化を行う例であって、各個体(条件情報集合)の複数の要素それぞれに染色体(条件情報)が設定されており、かつ、互いに類似する複数の要素の染色体が同様の染色体に最適化されると想定される任意の例に対して本発明は適用可能である。
【0080】
例えば、P種類の本をQ箇所の店舗(本屋)に配置する場合において、「1箇所の店舗あたりの本の種類の数」と「個体の染色体と過去実績に応じた全店舗での予測売り上げ」とに基づく評価値が高い個体を決定する例であってもよい。この場合には、個体は、本の種類ごとに、Q箇所の店舗に配置されるか否かを示す染色体を有する。本の属性は、例えば、ジャンル(小説、漫画、雑誌など)、作者名、発売日などである。
【0081】
また、例えば、P種類の映画をQ箇所の映画館において上映する場合において、「1箇所の映画館あたりの上映する映画の種類」と「個体の染色体と過去1週間の実績に応じた全映画館での予測売り上げ」とに基づく評価値が高い個体を決定する例であってもよい。この場合には、映画の属性は、例えば、ジャンル(アニメ、邦画、洋画など)、監督、スタジオなどである。
【0082】
以上に説明した本発明の各実施形態に記載された構成や処理は、互いに任意に組み合わせて利用できる。
【符号の説明】
【0083】
1:情報処理装置、201:取得部、202:評価部、
203:生成部、204:制御部、205:属性格納部、
211:選択部、212:交叉処理部、213:突然変異処理部