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()
LLMEP:LLMによる実験提案
概要
ai_tool_llmep.py はLarge Language Model(LLM)を用いた実験提案モジュール(LLM-based Experimental Planner)です.
候補リストと実験背景をMarkdown形式のプロンプトとして入力し,LLMが複数の独立した探索戦略を実行・多数決により最終提案を決定します. 目的関数は数値に限らず,相名・結晶構造・テキストなどのカテゴリ変数にも対応しており,状態図作成・物性最適化・プロセス探索など幅広い問題に適用できます.
引数
引数名 |
型 |
説明 |
|---|---|---|
|
str |
実験条件ファイルのパス(CSV形式,右端の |
|
str |
提案ファイルのパス |
|
int |
目的関数の個数 |
|
int |
1サイクルで提案する実験条件の数 |
|
str |
実験背景を記述したMarkdownファイルのパス |
|
str |
LLMの役割設定を記述したMarkdownファイルのパス |
|
str |
使用するAnthropicモデルのID |
|
int |
独立した選択ランの回数(多数決に使用,デフォルト: |
|
str |
選択過程のログを保存するMarkdownファイルのパス(省略可) |
|
str |
Anthropic APIキー |
|
int |
LLMレスポンスの最大トークン数(デフォルト: |
入力ファイル形式
CSVファイルの右端 num_objectives 列が目的関数,それ以外が説明変数として扱われます.
説明変数・目的関数ともに数値・カテゴリ・テキストが使用可能です.
未測定の行は目的関数列を空欄にしてください.
Co,Al,Ge,phase
0.5,0.25,0.25,B2 CoAl(Ge)
0.5,0.0,0.5,
0.8,0.0,0.2,
依存パッケージ
pip install anthropic numpy
プロンプトファイル
prompt_file には実験の背景・目的・制約条件を自由に記述します.
候補テーブルはコードが自動で挿入するため,プロンプトに含める必要はありません.
状態図作成の例 (prompt.md)
We want to construct a ternary phase diagram of the Co-Al-Ge system at 900 degC.
Select 8 compositions for the next round of experiments.
物性最適化の例 (prompt.md)
We are searching for superconducting materials with high critical temperature (Tc).
The `Tc` column shows the measured critical temperature in Kelvin. Higher Tc is better.
Select 8 candidates likely to have high Tc, balancing exploitation and exploration.
system_prompt_file にはLLMの専門家役割を記述します.
状態図作成の例 (system.md)
You are an expert materials scientist specializing in alloy phase diagram construction.
Your task is to select the most informative experimental compositions from a candidate list
to efficiently map an unknown phase diagram.
使用例
import ai_tool_llmep
ai_tool_llmep.LLMEP(
input_file = "candidates.csv",
output_file = "proposals.csv",
num_objectives = 1,
num_proposals = 8,
prompt_file = "prompt.md",
system_prompt_file = "system.md",
model = "claude-opus-4-6",
num_runs = 10,
log_file = "log.md",
api_key = "your-api-key-here",
).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()