MyLibs 1.0
Расширенные библиотеки для STM32
Loading...
Searching...
No Matches
Genetic optimizer

Библиотека для эволюционного подбора параметров 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);
Заголовочный файл для адаптивного подбора параметров

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.