Program for the study of global optimization algorithms.
- Gravitation Search Algorithm (GSA);
- Noise Resistance Gravitation Search Algorithm (NR-GSA);
- Algorithm Selective Averaging Coordinates (SAC);
- Algorithm Selective Averaging Coordinates with asymmetric change of search area (SAC-ACSA).
The default algorithms must be in the folder algorithms_exe
.
The default output is saved as json files to a folder algorithms_exe/result
.
- line chart (the dependence of the probability estimate on the parameter of the algorithm);
- point graph;
- heat map;
- convergence in function values;
- convergence in coordinate values;
- dispersion;
- best point motion.
Поддерживается работа со следующими многоэкстремальными тестовыми функциями:
- функции Фельдбаума (using the operation of a minimum);
- гиперболические потенциальные функции;
- экспоненциальные потенциальные функции.
Пример содержимого json-файла с тестовой функцией сконструированной по методу Фельдбаума:
{
"index": 5,
"dimension": 2,
"type": "feldbaum_function",
"number_extrema": 10,
"coordinates":
[
[-2, 4], [0, 0], [4, 4], [4, 0], [-2, 0],
[0, -2], [-4, 2], [2, -4], [2, 2], [-4, -2]
],
"func_values": [0, 3, 5, 6, 7, 8, 9, 10, 11, 12],
"degree_smoothness":
[
[0.6, 1.6], [1.6, 2], [0.6, 0.6], [1.1, 1.8], [0.5, 0.5],
[1.3, 1.3], [0.8, 1.2], [0.9, 0.3], [1.1, 1.7], [1.2, 0.5]
],
"coefficients_abruptness":
[
[6, 6], [6, 7], [6, 7], [5, 5], [5, 5],
[5, 5], [4, 3], [2, 4], [6, 4], [3, 3]
],
"constraints_high": [6, 6],
"constraints_down": [-6, -6],
"global_min": [-2, 4],
"global_max": [6, 6],
"amp_noise": 11.5,
"min_value": 0,
"Max_value": 23
}
График изолиний данной функции будт следующим:
Пример из файла ./example_tf/func5.json
имеет следующий графический вид:
Compile the algorithmic part of the project by running the command:
cd C:/GlobalOptimization/algorithms_exe/alg_go/src
go build -o ../../algorithms.exe main.go
Run the program:
cd C:/GlobalOptimization/
python main.py
Для добавления дополнительных алгоритмов необходимо выполнить следующие шаги:
- Добавить класс алгоритма на языке python и поместить в папку
./algorithms/
. Класс должен быть унаследован от класса Algorithm либо от существующих классов групп (GSA, SAC), если вы хотите добавить свою группу алгоритмов, то унаследуйте ее от класса Algorithm, а затем класс конкретного алгоритма делайте наследником новой группы. Класс для группы алгоритмов должен реализовать метод__init__
и имть поле с названием группы. Класс консретного алгоритма должен реализовать метод__init__
иget_identifier_name
. Они должны быть реализованы по аналогии с методами классов в файлах./algorithms/StandardSAC.py
,./algorithms/StandardGSA.py
. - Добавить недостающие параметру алгоритма в файл AlgorithmParameter.py, по аналогии с уже созданными.
- Добавить алгоритм к списку используемых в поле
self.active_alg_1
класса MainWindow. - Добавить реализацию алгоритма на языце Golang в папку
./algorithms_exe/alg_go/algorithms
, либо .exe файл в папку./algorithms_exe/
.
API к алгоритму: (будет добавлено позже)