Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/30/15 18:42:18 (9 years ago)
Author:
gkronber
Message:

#2434: merged r12787:12819 from trunk to branch

Location:
branches/crossvalidation-2434
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/crossvalidation-2434

  • branches/crossvalidation-2434/HeuristicLab.Algorithms.GradientDescent/3.3/LbfgsUpdateResults.cs

    r12012 r12820  
    3737    private const string StateParameterName = "State";
    3838    private const string ApproximateGradientsParameterName = "ApproximateGradients";
     39    private const string MaximizationParameterName = "Maximization";
    3940
    4041    #region Parameter Properties
     
    5152      get { return (ILookupParameter<LbfgsState>)Parameters[StateParameterName]; }
    5253    }
     54    public ILookupParameter<BoolValue> MaximizationParameter {
     55      get { return (ILookupParameter<BoolValue>)Parameters[MaximizationParameterName]; }
     56    }
    5357    #endregion
    5458
     
    5862    private DoubleValue Quality { get { return QualityParameter.ActualValue; } }
    5963    private LbfgsState State { get { return StateParameter.ActualValue; } }
     64
     65    private BoolValue Maximization {
     66      get {
     67        // BackwardsCompatibility3.3
     68        #region Backwards compatible code, remove with 3.4
     69        // the parameter is new, previously we assumed minimization problems
     70        if (MaximizationParameter.ActualValue == null) return new BoolValue(false);
     71        #endregion
     72        return MaximizationParameter.ActualValue;
     73      }
     74    }
     75
    6076    #endregion
    6177
     
    7086      Parameters.Add(new LookupParameter<BoolValue>(ApproximateGradientsParameterName,
    7187                                                    "Flag that indicates if gradients should be approximated."));
     88      Parameters.Add(new LookupParameter<BoolValue>(MaximizationParameterName, "Flag that indicates if we solve a maximization problem."));
    7289      // in & out
    7390      Parameters.Add(new LookupParameter<LbfgsState>(StateParameterName, "The state of the LM-BFGS algorithm."));
     91    }
     92
     93    [StorableHook(HookType.AfterDeserialization)]
     94    private void AfterDeserialization() {
     95      // BackwardsCompatibility3.3
     96
     97      #region Backwards compatible code, remove with 3.4
     98      if (!Parameters.ContainsKey(MaximizationParameterName)) {
     99        // previous behaviour defaulted to minimization
     100        Parameters.Add(new LookupParameter<BoolValue>(MaximizationParameterName, "Flag that indicates if we solve a maximization problem."));
     101      }
     102      #endregion
    74103    }
    75104
     
    80109    public override IOperation Apply() {
    81110      var state = State;
    82       var f = Quality.Value;
     111      var sign = Maximization.Value ? -1.0 : 1.0;
     112      var f = sign * Quality.Value;
    83113      state.State.f = f;
    84114      if (!ApproximateGradients.Value) {
    85         var g = QualityGradients.ToArray();
     115        var g = QualityGradients.Select(gi => sign * gi).ToArray();
    86116        state.State.g = g;
    87117      }
Note: See TracChangeset for help on using the changeset viewer.