/// <summary> /// Gets the heuristic value for the given relative state (in the context of backward search). /// </summary> /// <param name="relativeState">Relative state to be evaluated.</param> /// <returns>Heuristic value for the specified relative state.</returns> protected override double GetValueImpl(IRelativeState relativeState) { if (Random.NextDouble() < Heuristics.First().Item2) { return(Heuristics.First().Item1.GetValue(relativeState)); } return(Heuristics.Sum(heuristic => heuristic.Item2 * heuristic.Item1.GetValue(relativeState))); }
/// <summary> /// Gets the heuristic value for the given conditions (in the context of backward search). /// </summary> /// <param name="conditions">Conditions to be evaluated.</param> /// <returns>Heuristic value for the specified conditions.</returns> protected override double GetValueImpl(IConditions conditions) { if (Random.NextDouble() < Heuristics.First().Item2) { return(Heuristics.First().Item1.GetValue(conditions)); } return(Heuristics.Sum(heuristic => heuristic.Item2 * heuristic.Item1.GetValue(conditions))); }