internal QSAI(IAdjustableItem item) { Contract.Requires(item != null); this.item = item; var limited = item as ILimitedAdjustableItem; double max; if (limited != null) { min = limited.Min; max = limited.Max; } else { min = -1.0; max = 1.0; } size = max - min; }
public QuantumStatedAdjustableItem(IAdjustableItem item) { Contract.Requires(item != null); this.item = item; var limited = item as IRangedAdjustableItem; double max; if (limited != null) { min = limited.Range.MinValue; max = limited.Range.MaxValue; } else { min = -1.0; max = 1.0; } size = max - min; }
internal QSAItem(IAdjustableItem item) { Contract.Requires(item != null); this.item = item; }
private IRuleParameters GetCurrentParameters(IAdjustableItem item) { var pars = item as IRuleParameters; return pars != null ? pars : DefaultParameters; }
private void Initialize(IAdjustableItem item) { var pars = GetCurrentParameters(item); item.Adjustment = (pars.WeightInititlizationNoise * RandomGenerator.Random.NextDouble()) * 2.0 - pars.WeightInititlizationNoise; }
private void Adjust(IAdjustableItem item, double error, double input, DeltaContext context) { var pars = GetCurrentParameters(item); double delta = pars.StepSize * error * input; if (pars.Momentum != 0.0) { if (context.Delta == null) { context.Delta = delta; } else { context.Delta = delta = (pars.Momentum * context.Delta.Value) + ((1.0 - pars.Momentum) * delta); } } item.Adjustment += delta; }