AI ツールモジュール
NIMOで利用できる探索アルゴリズムのモジュール一覧です.
各モジュールは nimo.selection 関数から method 引数で指定するか,直接インポートして使用することができます.
BLOX:無目的探索
概要
ai_tool_blox.py はBLOXアルゴリズムを実装したモジュールです.
目的関数の最大化を目指すのではなく,目的関数空間における多様性(Stein Novelty)を指標として未探索領域を効率的に探索します.
目的関数を事前に定義せずに探索を行う「無目的探索」に適しています.
引数
引数名 |
型 |
説明 |
|---|---|---|
|
str |
実験条件ファイルのパス |
|
str |
提案ファイルのパス |
|
int |
目的関数の個数 |
|
int |
1サイクルで提案する実験条件の数 |
|
bool |
|
ライセンスと引用
ライセンス:MIT
BLOXを使用した際は,以下の文献を引用してください.
Kei Terayama, Masato Sumita, Ryo Tamura, Daniel T. Payne, Mandeep K. Chahal, Shinsuke Ishihara, and Koji Tsuda, Pushing property limits in materials discovery via boundless objective-free exploration, Chemical Science 11, 5959-5968 (2020). Available from https://pubs.rsc.org/en/content/articlelanding/2020/SC/d0sc00982b.
使用例
import ai_tool_blox
ai_tool_blox.BLOX(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 2,
num_proposals = 2,
output_res = False
).select()
BOMP:プロセス制約付きベイズ最適化
概要
ai_tool_bomp.py はBOMP(Bayesian Optimization with Material Process)モジュールです.
PHYSBOによるベイズ最適化に加え, process_X で指定したプロセスパラメータを固定した上で,
残りのパラメータ空間を最適化する「プロセス制約付き」ベイズ最適化を実行します.
引数
引数名 |
型 |
説明 |
|---|---|---|
|
str |
実験条件ファイルのパス |
|
str |
提案ファイルのパス |
|
int |
目的関数の個数 |
|
int |
1サイクルで提案する実験条件の数 |
|
str |
獲得関数. |
|
bool |
|
|
list |
固定するプロセスパラメータのインデックスリスト |
|
bool |
|
|
bool |
|
使用例
import ai_tool_bomp
ai_tool_bomp.BOMP(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 1,
num_proposals = 2,
physbo_score = "EI",
minimization = False,
process_X = [0, 1],
output_res = False,
training_res = False
).select()
COMBI:組成スプレッド探索
概要
ai_tool_combi.py はCOMBI(Combinatorial)法を実装したモジュールです.
ベイズ最適化で最良の組成点をまず決定し,その組成を起点として指定した元素ペア間で組成を連続的に変化させた候補群(組成スプレッド)を提案し,その中で最もポテンシャルの高い元素ペアも提案します.
コンビナトリアル実験に適した手法です.
引数
引数名 |
型 |
説明 |
|---|---|---|
|
str |
実験条件ファイルのパス |
|
str |
提案ファイルのパス |
|
int |
目的関数の個数 |
|
int |
1サイクルで提案する実験条件の数(組成スプレッドの分割数) |
|
str |
獲得関数. |
|
bool |
|
|
list |
各元素の組成範囲 |
|
list |
組成スプレッドを行う元素ペアのインデックスリスト |
ライセンスと引用
COMBIを使用した際は,以下の文献を引用してください.
Ryo Toyama, Ryo Tamura, Shoichi Matsuda, Yuma Iwasaki, and Yuya Sakuraba, Autonomous closed-loop exploration of composition-spread films for the anomalous Hall effect, npj Computational Materials 11, 329 (2025). Available from https://www.nature.com/articles/s41524-025-01828-7.
使用例
import ai_tool_combi
ai_tool_combi.COMBI(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 1,
num_proposals = 5,
physbo_score = "EI",
minimization = False,
combi_ranges = [[0, 100], [0, 100], [0, 100]],
spread_elements = [[0, 1], [1, 2], [0, 2]]
).select()
DOE:実験計画法
概要
ai_tool_doe.py は実験計画法(Design of Experiments)に基づくモジュールです.
既存の観測点との距離や行列式を基準として,探索空間を均一にカバーする実験条件を選択します.
greedy , distance , d_optimal , lhs の4つのモードを選択できます.
引数
引数名 |
型 |
説明 |
|---|---|---|
|
str |
実験条件ファイルのパス |
|
str |
提案ファイルのパス |
|
int |
目的関数の個数 |
|
int |
1サイクルで提案する実験条件の数 |
|
str |
サンプリングモード. |
|
int |
交換法(Exchange Algorithm)の反復回数. |
使用例
import ai_tool_doe
ai_tool_doe.DOE(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 1,
num_proposals = 2,
mode = "distance",
max_iter = 1000
).select()
ES:網羅的探索
概要
ai_tool_es.py は網羅的探索(Exhaustive Search)を実装したモジュールです.
実験条件ファイルの上から順に num_proposals 件を提案します.
全候補を順番に実験したい場合や,候補数が少ない場合に使用します.
引数
引数名 |
型 |
説明 |
|---|---|---|
|
str |
実験条件ファイルのパス |
|
str |
提案ファイルのパス |
|
int |
目的関数の個数 |
|
int |
1サイクルで提案する実験条件の数 |
使用例
import ai_tool_es
ai_tool_es.ES(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 1,
num_proposals = 2
).select()
NTS:閾値ベースサンプリング
概要
ai_tool_nts.py はNTS(Nested Thompson Sampling)を実装したモジュールです.
観測済みの目的関数の最大値に基づいた閾値を設定し,その閾値を超える確率が高い候補を優先的に選択します.
sample_mode により閾値の厳しさを調整できます.
引数
引数名 |
型 |
説明 |
|---|---|---|
|
str |
実験条件ファイルのパス |
|
str |
提案ファイルのパス |
|
int |
目的関数の個数(現在は1のみ対応) |
|
int |
1サイクルで提案する実験条件の数 |
|
str |
閾値スケールのモード. |
|
bool |
|
|
bool |
|
|
int |
乱数シード |
|
bool |
|
使用例
import ai_tool_nts
ai_tool_nts.NTS(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 1,
num_proposals = 2,
sample_mode = "moderate",
minimization = False,
use_dpp = False,
re_seed = 0,
output_res = False
).select()
PDC:相図作成
概要
ai_tool_pdc.py は相図作成効率化(Phase Diagram Construction)のためのモジュールです.
ラベル伝播法(Label Propagation / Label Spreading)を用いて各実験条件の相を予測し,
不確実性の高い領域を優先的に探索することで,効率的な相図作成を実現します.
引数
引数名 |
型 |
説明 |
|---|---|---|
|
str |
実験条件ファイルのパス |
|
str |
提案ファイルのパス |
|
int |
目的関数の個数(相ラベルの列数).PDCでは |
|
int |
1サイクルで提案する実験条件の数 |
|
str |
相推定アルゴリズム. |
|
str |
サンプリング戦略. |
|
bool |
|
ライセンスと引用
ライセンス:MIT
PDCを使用した際は,以下の文献を引用してください.
Kei Terayama, Ryo Tamura, Yoshitaro Nose, Hidenori Hiramatsu, Hideo Hosono, Yasushi Okuno, and Koji Tsuda, Efficient construction method for phase diagrams using uncertainty sampling, Physical Review Materials 3, 033802 (2019). Available from https://journals.aps.org/prmaterials/abstract/10.1103/PhysRevMaterials.3.033802.
Ryo Tamura, Guillaume Deffrennes, Kwangsik Han, Taichi Abe, Haruhiko Morito, Yasuyuki Nakamura, Masanobu Naito, Ryoji Katsube, Yoshitaro Nose, and Kei Terayama, Machine-learning-based phase diagram construction for high-throughput batch experiments, Science and Technology of Advanced Materials: Methods 2, 153-161 (2022). Available from https://www.tandfonline.com/doi/full/10.1080/27660400.2022.2076548.
使用例
import ai_tool_pdc
ai_tool_pdc.PDC(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 1,
num_proposals = 2,
pdc_estimation = "LP",
pdc_sampling = "LC",
output_res = False
).select()
PHYSBO:ベイズ最適化
概要
ai_tool_physbo.py はPHYSBOパッケージを用いたベイズ最適化モジュールです.
単目的・多目的最適化の両方に対応しています.
獲得関数として TS(Thompson Sampling),EI(Expected Improvement),PI(Probability of Improvement)を選択できます.
引数
引数名 |
型 |
説明 |
|---|---|---|
|
str |
実験条件ファイルのパス |
|
str |
提案ファイルのパス |
|
int |
目的関数の個数 |
|
int |
1サイクルで提案する実験条件の数 |
|
str |
獲得関数.単目的の場合は |
|
bool |
|
|
bool |
|
|
bool |
|
ライセンスと引用
ライセンス:Mozilla Public License version 2.0 (MPL v2)
PHYSBOを使用した際は,以下の文献を引用してください.
Yuichi Motoyama, Ryo Tamura, Kazuyoshi Yoshimi, Kei Terayama, Tsuyoshi Ueno, and Koji Tsuda, Bayesian optimization package: PHYSBO, Computer Physics Communications 278, 108405 (2022). Available from https://www.sciencedirect.com/science/article/pii/S0010465522001242?via%3Dihub.
使用例
import ai_tool_physbo
ai_tool_physbo.PHYSBO(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 1,
num_proposals = 2,
physbo_score = "EI",
minimization = False,
output_res = False,
training_res = False
).select()
PTR:目標範囲確率最大化
概要
ai_tool_ptr.py はPTR(Probability of Target Range)を実装したモジュールです.
ガウス過程回帰で各目的関数を予測し,ユーザーが指定した目標範囲内に入る確率が最大となる実験条件を提案します.
多目的最適化において,各目的関数に対して異なる目標範囲を設定できます.
引数
引数名 |
型 |
説明 |
|---|---|---|
|
str |
実験条件ファイルのパス |
|
str |
提案ファイルのパス |
|
int |
目的関数の個数 |
|
int |
1サイクルで提案する実験条件の数 |
|
list |
各目的関数の目標範囲. |
|
bool |
|
ライセンスと引用
PTRを使用した際は,以下の文献を引用してください.
Akira Takahashi, Kei Terayama, Yu Kumagai, Ryo Tamura, and Fumiyasu Oba, Fully autonomous materials screening methodology combining first-principles calculations, machine learning and high-performance computing system, Science and Technology of Advanced Materials: Methods 3, 1, 2261834 (2023). Available from https://www.tandfonline.com/doi/full/10.1080/27660400.2023.2261834.
使用例
import ai_tool_ptr
ai_tool_ptr.PTR(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 2,
num_proposals = 2,
ptr_ranges = [[10.0, 20.0], [0.5, 1.0]],
output_res = False
).select()
RE:ランダム探索
概要
ai_tool_re.py はランダム探索(Random Exploration)を実装したモジュールです.
未実験の候補の中からランダムに実験条件を選択します.
初期探索や他の手法との比較ベースラインとして使用されます.
引数
引数名 |
型 |
説明 |
|---|---|---|
|
str |
実験条件ファイル(candidates file)のパス |
|
str |
提案ファイル(proposals file)のパス |
|
int |
目的関数の個数 |
|
int |
1サイクルで提案する実験条件の数 |
|
list |
プロセスパラメータのインデックスリスト. |
|
int |
乱数シード. |
使用例
import ai_tool_re
ai_tool_re.RE(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 1,
num_proposals = 2,
process_X = None,
re_seed = 0
).select()
RSVM:ランクSVM
概要
ai_tool_rsvm.py はランクSVM(Ranking Support Vector Machine)を実装したモジュールです.
目的関数の絶対値ではなく,観測データの大小関係(ランク情報)を学習し,未観測データのスコアを予測して実験条件を選択します.
other_datasets に外部データセットを追加することで,他の材料系のランク情報を転移学習的に活用できます.
引数
引数名 |
型 |
説明 |
|---|---|---|
|
str |
実験条件ファイルのパス |
|
str |
提案ファイルのパス |
|
int |
目的関数の個数 |
|
int |
1サイクルで提案する実験条件の数 |
|
list |
転移学習に使用する外部データセットのパスリスト.使用しない場合は空リスト |
|
bool |
|
|
bool |
|
ライセンスと引用
RSVMを使用した際は,以下の文献を引用してください.
Weilin Yuan, Yusuke Hibi, Ryo Tamura, Masato Sumita, Yasuyuki Nakamura, Masanobu Naito, and Koji Tsuda, Revealing factors influencing polymer degradation with rank-based machine learning, Patterns 4, 100846 (2023). Available from https://linkinghub.elsevier.com/retrieve/pii/S2666389923002258.
使用例
import ai_tool_rsvm
ai_tool_rsvm.RSVM(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 1,
num_proposals = 2,
other_datasets = [],
minimization = False,
output_res = False
).select()