diff --git a/Esiur.Analysis.Test/FSoft.cs b/Esiur.Analysis.Test/FSoft.cs index 7f19c71..aa55afa 100644 --- a/Esiur.Analysis.Test/FSoft.cs +++ b/Esiur.Analysis.Test/FSoft.cs @@ -343,8 +343,20 @@ namespace Esiur.Analysis.Test foreach (var (generation, fitness, k) in genetic.Evaluate(100)) - CalculateFuzzyPIDStepError(k, -(stability / 2), stability / 2, -(stability / 2), stability / 2, true, $"Fuzzy PID: Generation {generation} Fitness {fitness}\r\n{k}"); + { + if (float.IsNaN(k.KiStart) + || float.IsNaN(k.KiLength) + || float.IsNaN(k.KpStart) + || float.IsNaN(k.KiLength) + || float.IsNaN(k.KdStart) + || float.IsNaN(k.KiLength)) + continue; + if (k.KiLength < 0 || k.KpLength < 0 || k.KdLength < 0)// k.KiStart > k.KiEnd || k.KpStart > k.KpEnd || k.KdStart > k.KdEnd) + continue; + + CalculateFuzzyPIDStepError(k, -(stability / 2), stability / 2, -(stability / 2), stability / 2, true, $"Fuzzy PID: Generation {generation} Fitness {fitness}\r\n{k}"); + } // Console.WriteLine(best); } diff --git a/Esiur.Analysis/Signals/Codes/Generators.cs b/Esiur.Analysis/Signals/Codes/Generators.cs new file mode 100644 index 0000000..91cd4c7 --- /dev/null +++ b/Esiur.Analysis/Signals/Codes/Generators.cs @@ -0,0 +1,59 @@ +using Esiur.Data; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Esiur.Analysis.Signals.Codes +{ + public static class Generators + { + + //public double[][] GenerateMaximumLengthSequence(uint octalPolynomialCoefficients) + //{ + // // convert octal to uint + // var bits = Convert.ToUInt32(octalPolynomialCoefficients.ToString(), 8); + + // var taps = new List(); + + // // find maximum exponent + // var maxExponent = 0; + // for (var i = 31; i >= 0; i--) + // if ((bits & (0x1 << i)) != 0) + // { + // maxExponent = i; + // taps.Add(i); + // break; + // } + + // // make taps + + // for (var i = 0; i < maxExponent; i++) + // if (((bits & (0x1 << i)) != 0)) + // taps.Add(maxExponent - i); + + + // var startState = 1 << | 1; + + // startState[length - 1] = 1; + + // while (true) + // { + + // } + + // var rt = new double[length][]; + + // for (var i = 0; i < length; i++) + // { + // rt[i] = new double[length]; + + // for (var j = 0; j < maxExponent; j++) + // { + // rt[i] = coefficients[j]; + // } + // } + + // return rt; + //} + } +}