Javaの数値計算ライブラリApache Commons Mathを使う(6) OptimizationのNelder-Mead SimplexでRosenbrock関数(5パラメータ)を最小になる点を探す。今回からGoogle Geminiも使ってみる。
今回はこの例題。
Apache Commons MathにはNelderMeadSimplexというクラスはあるのだが全然使い方がわからん…検索してもこれ、というのがない。
そこでGoogle Gemini 2.5 Proに聞いてみた。一発で動くのができた。
コードはこんな感じで。
|
import org.apache.commons.math3.analysis.MultivariateFunction;
import org.apache.commons.math3.optim.InitialGuess;
import org.apache.commons.math3.optim.MaxEval;
import org.apache.commons.math3.optim.PointValuePair;
import org.apache.commons.math3.optim.nonlinear.scalar.GoalType;
import org.apache.commons.math3.optim.nonlinear.scalar.ObjectiveFunction;
import org.apache.commons.math3.optim.nonlinear.scalar.noderiv.NelderMeadSimplex;
import org.apache.commons.math3.optim.nonlinear.scalar.noderiv.SimplexOptimizer;
import java.util.Arrays;
public class RosenbrockOptimizer {
public static void main(String[] args) {
// 1. 目的関数の定義 (5パラメータのRosenbrock関数)
// MultivariateFunctionインターフェースをラムダ式で実装します。
MultivariateFunction rosenbrock = (double[] x) -> {
double sum = 0.0;
// N次元のRosenbrock関数の公式に従って計算
for (int i = 0; i < x.length - 1; i++) {
double term1 = x[i+1] - x[i] * x[i];
double term2 = 1.0 - x[i];
sum += 100.0 * term1 * term1 + term2 * term2;
}
return sum;
};
// 2. オプティマイザの準備 (Nelder-Mead法)
// コンストラクタの引数は収束判定のための許容誤差です。
// (relative threshold, absolute threshold)
SimplexOptimizer optimizer = new SimplexOptimizer(1e-12, 1e-12);
// 3. 最適化の実行
System.out.println("5次元Rosenbrock関数の最小化を開始します...");
System.out.println("アルゴリズム: Nelder-Mead Simplex");
// 初期値 (原点から開始)
double[] startPoint = new double[]{1.3, 0.7, 0.8, 1.9, 1.2};
// Nelder-Meadシンプレックスを5次元で初期化
int dimension = 5;
NelderMeadSimplex simplex = new NelderMeadSimplex(dimension);
// 最適化を実行し、結果を取得
PointValuePair result = optimizer.optimize(
new MaxEval(20000), // 最大評価回数(終了条件)
new ObjectiveFunction(rosenbrock), // 目的関数
GoalType.MINIMIZE, // 目的(最小化)
new InitialGuess(startPoint), // 初期推測値
simplex // 使用するアルゴリズム(シンプレックス)
);
// 4. 結果の表示
System.out.println("----------------------------------------");
System.out.println("計算完了");
System.out.println("評価回数: " + optimizer.getEvaluations());
System.out.println("反復回数: " + optimizer.getIterations());
System.out.println("最小値 (f(x)): " + result.getValue());
System.out.println("その時の点 (x): " + Arrays.toString(result.getPoint()));
System.out.println("----------------------------------------");
System.out.println("理論上の最小値は f(1,1,1,1,1) = 0 です。");
}
}
|
結果:
5次元Rosenbrock関数の最小化を開始します...
アルゴリズム: Nelder-Mead Simplex
----------------------------------------
計算完了
評価回数: 617
反復回数: 386
最小値 (f(x)): 1.129924260917651E-12
その時の点 (x): [1.0000000580197625, 1.0000001155585465, 1.0000002391902205, 1.0000004894555592, 1.0000008896018324]
----------------------------------------
理論上の最小値は f(1,1,1,1,1) = 0 です。
すごいな。もう人間いらない…
« マクドナルドからの暗号をGoogle ColabのJulia言語で解く。 | トップページ | 高周波・RFニュース 2025年9月30日 Next G Allianceの6Gウェビナーは10月14日、Ansysのアレーアンテナ設計ウェビナーは本日、QualcommのWi-Fi 8解説記事、Huaweiが5G-AとAIの講演、Marvell、Semtechらが1.6T光インターコネクト発表 »
「パソコン・インターネット」カテゴリの記事
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2026年2月7日 NGMNが5Gフレームワークのホワイトペーパー発行、TaoglasがAIを使ったアンテナリコメンデーションエンジン発表、SHFが100GHz 22dBゲインのアンプ発表、SiTimeがルネサスのタイミングビジネス取得、YoleのRF GaNレポート(2026.02.07)
- 高周波・RFニュース 2025年2月6日 Texas InstrumentsがSilicon Labsを買収、JDIとKymetaが衛星通信用アンテナガラス基板の共同開発、Emersonの計測に特化したNI Nigel AI、TDKが200A垂直給電用μPOLモジュール量産、ATISがOpen Access Network Forum発足(2026.02.06)
- 高周波・RFニュース 2026年2月5日 BroadcomがエンタープライスWi-Fi 8アクセスポイントとスイッチ発表、Vishayが民生と車載向けパワーインダクタ発表、ABI Researchの6Gスペクトラムレポート、Mini-CircuitsのMMIC LNAアプリケーションノートなど(2026.02.05)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2026年2月7日 NGMNが5Gフレームワークのホワイトペーパー発行、TaoglasがAIを使ったアンテナリコメンデーションエンジン発表、SHFが100GHz 22dBゲインのアンプ発表、SiTimeがルネサスのタイミングビジネス取得、YoleのRF GaNレポート(2026.02.07)
- 高周波・RFニュース 2025年2月6日 Texas InstrumentsがSilicon Labsを買収、JDIとKymetaが衛星通信用アンテナガラス基板の共同開発、Emersonの計測に特化したNI Nigel AI、TDKが200A垂直給電用μPOLモジュール量産、ATISがOpen Access Network Forum発足(2026.02.06)
- 高周波・RFニュース 2026年2月5日 BroadcomがエンタープライスWi-Fi 8アクセスポイントとスイッチ発表、Vishayが民生と車載向けパワーインダクタ発表、ABI Researchの6Gスペクトラムレポート、Mini-CircuitsのMMIC LNAアプリケーションノートなど(2026.02.05)
« マクドナルドからの暗号をGoogle ColabのJulia言語で解く。 | トップページ | 高周波・RFニュース 2025年9月30日 Next G Allianceの6Gウェビナーは10月14日、Ansysのアレーアンテナ設計ウェビナーは本日、QualcommのWi-Fi 8解説記事、Huaweiが5G-AとAIの講演、Marvell、Semtechらが1.6T光インターコネクト発表 »


コメント