public void trainloop(MInt64 m, long oSetMin, long oSetMax, bool output = true) { ts = DateTime.Now; while (!Train(m, oSetMin, oSetMax, output)) { } }
private void Finished(MInt64 m) { Console.Write("Finished in " + (DateTime.Now - ts) + $" Final Vaule:{m.Variable}, FInal Longs:"); for (var i = 0; i < m.length; i++) { Console.Write($"doubs[{i}]: {m.Doubles[i]}, "); } Console.WriteLine(); }
public bool Train(MInt64 m, long oSetMin, long oSetMax, bool output = true) { if (m.doubs) { if (m.w == 0) { if (m.addition) { m.w = oSetMin; } else { m.w = -oSetMin; } } var prev = (long)m.Variable; m.Longs[m.currentIndex] += m.w; m.algo.OnMainInt64(m); if (m.Variable > m.Ziehl && m.Variable < prev) { m.addition = false; } else if ((m.Variable < m.Ziehl && m.Variable < prev) || (m.Variable > m.Ziehl && m.Variable > prev)) { m.addition = !m.addition; } else if (m.Variable < m.Ziehl && m.Variable > prev) { m.addition = true; } m.w = 0; if (m.Variable < m.Ziehl + m.tolleranz && m.Variable > m.Ziehl - m.tolleranz) { Finished(m); return(true); } if (prev == m.Variable) { m.w += m.addition ? oSetMax : -oSetMin; } if (output) { Console.WriteLine($"ONext:{m.w}, prew:{prev}, post:{m.Variable}, tolleranz:{m.tolleranz}"); } m.round += 1; } if (m.round == 10) { m.currentIndex += 1; if (m.currentIndex >= m.Longs.Length) { m.currentIndex = 0; } } if (m.round > 20) { m.round = 0; } return(false); }
public virtual void OnMainInt64(MInt64 m) { }
private static MInt64 init(MInt64 m) { m.init = true; return(m); }