Loading...
Searching...
No Matches
Genetic optimizer
My Libs » Debug Tools

Библиотека для эволюционного подбора параметров More...

Collaboration diagram for Genetic optimizer:

## Classes

struct | GenOptimizer_t

## Macros

#define | GenOptimizer_Init(opt, n_params, n_cand, n_best, mutation_amp, start_params)
#define | GenOptimizer_Step(opt, params, LossFunc)
#define | PARAM_SCALE(x, min_val, max_val)
#define | PARAM_UNSCALE(val, min_val, max_val)

## Detailed Description

Библиотека для эволюционного подбора параметров

Поддерживает:

- Любое количество параметров
- Генерацию новых параметров на основе лучших кандидатов
- Мутацию для поиска оптимальных параметров
- Несколько независимых оптимизаторов в одной программе

Параметры для конфигурации:

- GEN_OPTIMIZATION_ENABLE - Включить оптимизацию параметров Если библиотека отключена GEN_OPTIMIZATION_ENABLE, то вставляются заглушки, никак не влияющие на параметры и остальную программу
- GEN_MAX_PARAMS - Максимальное количество параметров
- GEN_MAX_CANDIDATES - Максимальное количество кандидатов для обучения
- (опционально) GEN_MUTATION_MIN_PCT - Минимальная мутация в процентах от Loss (по умолчанию 10%)
- (опционально) GEN_MUTATION_MAX_PCT - Максимальная мутация в процентах от Loss (по умолчанию 100%)
- (опционально) ELOVLE_N_ELITE_CANDIDATE - Количество кандидатов, которые проходят в поколение без изменений

Пример использования:
  #include "gen_optimizer.h"
  #define N_PARAMS 4
  #define N_CANDIDATES 100
  #define N_BEST 10
  #define MUTATION 0.1f
  float params[N_PARAMS];
  GenOptimizer_t optimizer;
  // Формирование параметров
  uint16_t param_u16 = 800;
  float param_f = 0.01f;
  uint8_t param_u8 = 40;
  int16_t param_i16 = 1600;
  params[0] = PARAM_SCALE(param_u16, 0.0f, 1000.0f);
  params[1] = PARAM_SCALE(param_f, 0.001f, 0.1f);
  params[2] = PARAM_SCALE(param_u8, 10.0f, 100.0f);
  params[3] = PARAM_SCALE(param_i16, 500.0f, 5000.0f);
  // Инициалиазция
  GenOptimizer_Init(&optimizer, N_PARAMS, N_CANDIDATES, N_BEST, MUTATION, params);
  // Шаг эволюции
  float loss = calc_loss(); // расчет эффективности параметров (от 0 до 1)
  GenOptimizer_Step(&optimizer, params, loss);
  // Взятие следующих для эволюции параметров
  param_u16 = PARAM_UNSCALE(params[0], 0.0f, 1000.0f);
  param_f = PARAM_UNSCALE(params[1], 0.001f, 0.1f);
  param_u8 = PARAM_UNSCALE(params[2], 10.0f, 100.0f);
  param_i16 = PARAM_UNSCALE(params[3], 500.0f, 5000.0f);
  gen_optimizer.h
  Заголовочный файл для адаптивного подбора параметров
  GenOptimizer_t
  Definition gen_optimizer.h:319

## Macro Definition Documentation

## GenOptimizer_Init

#define GenOptimizer_Init | ( |  | opt,
|  |  | n_params,
|  |  | n_cand,
|  |  | n_best,
|  |  | mutation_amp,
|  |  | start_params )

Definition at line 327 of file gen_optimizer.h.

## GenOptimizer_Step

#define GenOptimizer_Step | ( |  | opt,
|  |  | params,
|  |  | LossFunc )

Definition at line 328 of file gen_optimizer.h.

## PARAM_SCALE

#define PARAM_SCALE | ( |  | x,
|  |  | min_val,
|  |  | max_val )

Value:
(x)

Definition at line 329 of file gen_optimizer.h.

## PARAM_UNSCALE

#define PARAM_UNSCALE | ( |  | val,
|  |  | min_val,
|  |  | max_val )

Value:
(val)

Definition at line 330 of file gen_optimizer.h.