AI ツールモジュール

NIMOで利用できる探索アルゴリズムのモジュール一覧です. 各モジュールは nimo.selection 関数から method 引数で指定するか,直接インポートして使用することができます.


BLOX:無目的探索

概要

ai_tool_blox.py はBLOXアルゴリズムを実装したモジュールです. 目的関数の最大化を目指すのではなく,目的関数空間における多様性(Stein Novelty)を指標として未探索領域を効率的に探索します. 目的関数を事前に定義せずに探索を行う「無目的探索」に適しています.

引数

引数名

説明

input_file

str

実験条件ファイルのパス

output_file

str

提案ファイルのパス

num_objectives

int

目的関数の個数

num_proposals

int

1サイクルで提案する実験条件の数

output_res

bool

True の場合,予測値・獲得関数値を output_res.csv に出力する

ライセンスと引用

ライセンス: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 で指定したプロセスパラメータを固定した上で, 残りのパラメータ空間を最適化する「プロセス制約付き」ベイズ最適化を実行します.

引数

引数名

説明

input_file

str

実験条件ファイルのパス

output_file

str

提案ファイルのパス

num_objectives

int

目的関数の個数

num_proposals

int

1サイクルで提案する実験条件の数

physbo_score

str

獲得関数.'TS''EI''PI' から選択.None の場合,単目的は 'EI' ,多目的は 'TS'

minimization

bool

True の場合,最小化問題として扱う.None の場合は False

process_X

list

固定するプロセスパラメータのインデックスリスト

output_res

bool

True の場合,予測結果を output_res.csv に出力する

training_res

bool

True の場合,学習データの予測結果を training_res.csv に出力する

使用例

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)法を実装したモジュールです. ベイズ最適化で最良の組成点をまず決定し,その組成を起点として指定した元素ペア間で組成を連続的に変化させた候補群(組成スプレッド)を提案し,その中で最もポテンシャルの高い元素ペアも提案します. コンビナトリアル実験に適した手法です.

引数

引数名

説明

input_file

str

実験条件ファイルのパス

output_file

str

提案ファイルのパス

num_objectives

int

目的関数の個数

num_proposals

int

1サイクルで提案する実験条件の数(組成スプレッドの分割数)

physbo_score

str

獲得関数.'TS''EI''PI''RE' から選択

minimization

bool

True の場合,最小化問題として扱う.None の場合は False

combi_ranges

list

各元素の組成範囲 [[最小値, 最大値], ...]

spread_elements

list

組成スプレッドを行う元素ペアのインデックスリスト [[i, j], ...]

ライセンスと引用

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)に基づくモジュールです. 既存の観測点との距離や行列式を基準として,探索空間を均一にカバーする実験条件を選択します. greedydistanced_optimallhs の4つのモードを選択できます.

引数

引数名

説明

input_file

str

実験条件ファイルのパス

output_file

str

提案ファイルのパス

num_objectives

int

目的関数の個数

num_proposals

int

1サイクルで提案する実験条件の数

mode

str

サンプリングモード.'greedy''distance''d_optimal''lhs' から選択.None の場合は 'distance'

max_iter

int

交換法(Exchange Algorithm)の反復回数.None の場合は 1000

使用例

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 件を提案します. 全候補を順番に実験したい場合や,候補数が少ない場合に使用します.

引数

引数名

説明

input_file

str

実験条件ファイルのパス

output_file

str

提案ファイルのパス

num_objectives

int

目的関数の個数

num_proposals

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 により閾値の厳しさを調整できます.

引数

引数名

説明

input_file

str

実験条件ファイルのパス

output_file

str

提案ファイルのパス

num_objectives

int

目的関数の個数(現在は1のみ対応)

num_proposals

int

1サイクルで提案する実験条件の数

sample_mode

str

閾値スケールのモード.'aggressive' (0.99), 'moderate' (0.95), 'conservative' (0.9)から選択

minimization

bool

True の場合,最小化問題として扱う.None の場合は False (最大化)

use_dpp

bool

True の場合,DPPを用いてバッチ内の多様性を考慮する

re_seed

int

乱数シード

output_res

bool

True の場合,予測値・分散・獲得関数値を output_res.csv に出力する

使用例

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)を用いて各実験条件の相を予測し, 不確実性の高い領域を優先的に探索することで,効率的な相図作成を実現します.

引数

引数名

説明

input_file

str

実験条件ファイルのパス

output_file

str

提案ファイルのパス

num_objectives

int

目的関数の個数(相ラベルの列数).PDCでは 1 のみ指定可能

num_proposals

int

1サイクルで提案する実験条件の数

pdc_estimation

str

相推定アルゴリズム.'LP' (Label Propagation)または 'LS' (Label Spreading).None の場合は 'LP'

pdc_sampling

str

サンプリング戦略.'LC' (Least Confidence), 'MS' (Margin Sampling), 'EA' (Entropy)から選択.None の場合は 'LC'

output_res

bool

True の場合,各相の予測確率を output_res.csv に出力する

ライセンスと引用

ライセンス: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)を選択できます.

引数

引数名

説明

input_file

str

実験条件ファイルのパス

output_file

str

提案ファイルのパス

num_objectives

int

目的関数の個数

num_proposals

int

1サイクルで提案する実験条件の数

physbo_score

str

獲得関数.単目的の場合は 'TS''EI''PI' から選択.多目的の場合は 'TS''HVPI''EHVI' から選択.None の場合,単目的は 'EI' ,多目的は 'TS' が使用される

minimization

bool

True の場合,最小化問題として扱う.None の場合は False (最大化)

output_res

bool

True の場合,予測値・分散・獲得関数値を output_res.csv に出力する

training_res

bool

True の場合,学習データの予測結果を training_res.csv に出力する

ライセンスと引用

ライセンス: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)を実装したモジュールです. ガウス過程回帰で各目的関数を予測し,ユーザーが指定した目標範囲内に入る確率が最大となる実験条件を提案します. 多目的最適化において,各目的関数に対して異なる目標範囲を設定できます.

引数

引数名

説明

input_file

str

実験条件ファイルのパス

output_file

str

提案ファイルのパス

num_objectives

int

目的関数の個数

num_proposals

int

1サイクルで提案する実験条件の数

ptr_ranges

list

各目的関数の目標範囲.[[下限1, 上限1], [下限2, 上限2], ...] の形式.'max''min' を指定すると観測済み最大・最小値が使用される

output_res

bool

True の場合,予測値・獲得関数値を output_res.csv に出力する

ライセンスと引用

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)を実装したモジュールです. 未実験の候補の中からランダムに実験条件を選択します. 初期探索や他の手法との比較ベースラインとして使用されます.

引数

引数名

説明

input_file

str

実験条件ファイル(candidates file)のパス

output_file

str

提案ファイル(proposals file)のパス

num_objectives

int

目的関数の個数

num_proposals

int

1サイクルで提案する実験条件の数

process_X

list

プロセスパラメータのインデックスリスト.None の場合は使用しない

re_seed

int

乱数シード.None の場合はシードを固定しない

使用例

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 に外部データセットを追加することで,他の材料系のランク情報を転移学習的に活用できます.

引数

引数名

説明

input_file

str

実験条件ファイルのパス

output_file

str

提案ファイルのパス

num_objectives

int

目的関数の個数

num_proposals

int

1サイクルで提案する実験条件の数

other_datasets

list

転移学習に使用する外部データセットのパスリスト.使用しない場合は空リスト []

minimization

bool

True の場合,最小化問題として扱う.None の場合は False

output_res

bool

True の場合,予測スコアを output_res.csv に出力する

ライセンスと引用

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()