/// <summary> /// Get performance measure as optimization objective /// </summary> /// <returns></returns> public static List <string> GetDecideable() { List <string> dr = new List <string>(); // Type r = typeof(PerformanceMatrix); PerformanceMatrix r = new PerformanceMatrix(); foreach (var pi in r.GetType().GetProperties()) { if (!pi.GetAccessors()[0].IsPublic) { continue; } var pt = pi.PropertyType; if ((pt == typeof(decimal)) || (pt == typeof(int))) { dr.Add(pi.Name); } } foreach (var pi in r.GetType().GetFields()) { if (!pi.IsPublic) { continue; } var pt = pi.FieldType; if ((pt == typeof(decimal)) || (pt == typeof(int))) { dr.Add(pi.Name); } } var tmp = dr.ToArray(); Array.Sort(tmp); return(new List <string>(tmp)); }
/// <summary> /// Get the optimized objective from a permformance result /// </summary> bool GetResult(PerformanceMatrix r, out decimal result) { result = 0; if (_resultproperty == null) { foreach (var pr in r.GetType().GetProperties()) { if (pr.Name == OptimizeDecisionsName) { _resultproperty = pr; break; } } } try { var o = _resultproperty.GetValue(r, null); result = (decimal)o; return(true); } catch (Exception ex) { Debug("error getting result from OptimizeDecision name: " + OptimizeDecisionsName + " err: " + ex.Message + ex.StackTrace); } return(false); }