optima 0.1.3

Dart native js
Flutter Android iOS web

A collection of n-dimensional test functions to evaluate performance, precision, and robustness of optimization algorithms.

Optima #

A collection of test functions for optimization useful to evaluate characteristics of optimization algorithms, such as convergence rate, precision, robustness, general performance.

Getting started #

Add this dependency to your pubspec.yaml file:

dependencies:
  optima: #latest version
  # And optionally:
  evolution: #latest version

Add this import statement to your source files:

import 'package:optima/optima.dart';
// and optionally:
import 'package:evolution/evolution.dart';

To give it a try, simply run the example.

dart ./example/main.dart 

This example optimizes versions of the sphere function and the Ackley function.

  • Sphere100 is version of the sphere function with a global minimum at (100.0, ..., 100.0).
  • Sphere100 (restricted) is the same problem to be solved within a restricted search space.
  • Ackley10 is a version of the ackley function with a global minimum at (10.0, ..., 10.0).
  • Ackley100 is a version of the ackley function with a global minimum at (100.0, ..., 100.0).
  • Ackley100 (restricted) is the same problem to be solved within a restricted search space.

Example #

Use optima to benchmark a version of the Differential Evolution algorithm provided by package:evolution.

import 'package:optima/optima.dart';
import 'package:evolution/evolution.dart';

void main() {
  //var seed = DateTime.now().millisecond;

  print("Optimize a version of the sphere function centered at (100.0, ... , 100.0) on the unrestricted version of the problem.");
  10.times((int i) {
    var ret = diff(4, 25, 10, 10, 25, i, 500, 10.0, sphere100);
    print("Sphere100 - Trial Nr.: ${i} - f: ${ret.fitness()} - ag: ${ret}");
    return ret;
  });

  print("Use the version confined within (50, 150) in each dimension.");
  10.times((int i) {
    var ret = diff2(4, 25, 10, 10, 25, i, 500, 10.0, sphere100, 50, 150);
    print("Sphere100 (restricted) - Trial Nr.: ${i} - f: ${ret.fitness()} - ag: ${ret}");
    return ret;
  });

  print("Optimize a version of the Ackley function centered at (10.0, ... , 10.0) on the unrestricted version of the problem.");
  10.times((int i) {
    var ret = diff(4, 25, 10, 10, 25, i, 1000, 10.0, ackley10);
    print("Ackley10 - Trial Nr.: ${i} - f: ${ret.fitness()} - ag: ${ret}   ");
    return ret;
  });

  print("Optimize a version of the Ackley function centered at (100.0, ... , 100.0) on the unrestricted version of the problem.");
  print("This will not find a solution to the problem.");

  10.times((int i) {
    var ret = diff(4, 25, 10, 10, 25, i, 1000, 10.0, ackley100);
    print("Ackley100 - Trial Nr.: ${i} - f: ${ret.fitness()} - ag: ${ret}");
    return ret;
  });

  print("Use the version of the Ackley function centered at (100.0, ... , 100.0) confined within (50, 150) in each dimension.");
  10.times((int i) {
    var ret = diff2(4, 25, 10, 10, 25, i, 1000, 10.0, ackley100, 50, 150);
    print(
        "Ackley100 (restricted) - Trial Nr.: ${i} - f: ${ret.fitness()} - ag: ${ret}");
    return ret;
  });
}
1
likes
110
pub points
25%
popularity

Publisher

welopment.com

A collection of n-dimensional test functions to evaluate performance, precision, and robustness of optimization algorithms.

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (COPYING)

Dependencies

evolution

More

Packages that depend on optima