Skip to content

yn-cloud/CMAES.NET

Repository files navigation

CMAES.NET

CMAES.NET

Covariance Matrix Adaptation Evolution Strategy (CMA-ES) [1] implementation on .NET

This software is a C# implementation of CyberAgent's CMAES library.

Usage

using System;
using System.Collections.Generic;

using CMAESnet;

namespace CMAESnetExample
{
    class Program
    {
        static void Main(string[] args)
        {
            double[] initial = new double[] { 0, 0 };
            CMAESOptimizer cmaoptimizer = new CMAESOptimizer(TestFunctions, initial, 1.5);

            cmaoptimizer.Optimize();

            double[] optimizedArray = cmaoptimizer.ResultVector;

            Console.WriteLine("x1={0}, x2={1}", optimizedArray[0], optimizedArray[1]);
        }

        private static double TestFunctions(IList<double> x)
        {
            return Math.Pow(x[0] - 3, 2) + Math.Pow(10 * (x[1] + 2), 2);
        }
    }
}

Requirements

  • .Net Standard 2.0 or higher
  • Math.Net Numerics 4.11.0 or higher

Link

Other libraries

I respect all libraries involved in CMA-ES.

  • pycma: Most famous CMA-ES implementation by Nikolaus Hansen.
  • libcmaes: Multithreaded C++11 library with Python bindings.
  • cma-es: A Tensorflow v2 implementation
  • CMA-ES: Lightweight Covariance Matrix Adaptation Evolution Strategy (CMA-ES) implementation.

References