/
shmachilin
/
MathCore
Обзор
Документация
Войти
/
shmachilin
/
MathCore
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
Tests/MathCore.Tests/Optimization/Swarm1DTests.cs
72 строки
2 KB
Infarh
v0.0.89 - Поддержка NET8
23 ноя 2023, 17:34
23 ноя 2023, 17:34
6382129
Код
Авторство
О чём код?
using MathCore.Optimization.ParticleSwarm; namespace MathCore.Tests.Optimization; [TestClass] public class Swarm1DTests { private const double __X0 = 3; private const double __Y0 = 2; private static double Sqr(double x) => x * x; private static double F(double x) => Sqr(x - __X0) + __Y0; private static double FNegate(double x) => -F(-x); [TestMethod] public void Minimize() { var swarm = new Swarm1D(); swarm.Minimize( F, MinX: -100, MaxX: 100, IterationCount: 1000, out var X, out var Y); Assert.That.Value(X).IsEqual(__X0, 2.0e-8); Assert.That.Value(Y).IsEqual(__Y0); } [TestMethod] public void MinimizeInterval() { var swarm = new Swarm1D(); swarm.Minimize( F, (-100, 100), IterationCount: 1000, out var X, out var Y); Assert.That.Value(X).IsEqual(__X0, 2e-8); Assert.That.Value(Y).IsEqual(__Y0); } [TestMethod] public void Maximize() { var swarm = new Swarm1D(); swarm.Maximize( FNegate, MinX: -5, MaxX: 5, IterationCount: 10000, out var X, out var Y); Assert.That.Value(X).IsEqual(-__X0, 6e-5); Assert.That.Value(Y).IsEqual(-__Y0, 2e-9); } [TestMethod] public void MaximizeInterval() { var swarm = new Swarm1D(); swarm.Maximize( FNegate, (-5, 5), IterationCount: 1000, out var X, out var Y); Assert.That.Value(X).IsEqual(-__X0, 5.0e-4); Assert.That.Value(Y).IsEqual(-__Y0, 1.0e-7); } }