/// <summary> /// Initializes a new instance of the <see cref="MultiCatchmentCompositeObjectiveEvaluator" /> class. /// </summary> /// <param name="objDefn"> The objective definition. </param> private RCompositeObjectiveEvaluator(RexpObjectiveDefinition objDefn) { objectiveDefinition = objDefn; string pathToRDynLib = objDefn.DirectoryForRLibrary; string rhome = Environment.GetEnvironmentVariable("R_HOME"); if (!Directory.Exists(pathToRDynLib)) { REngine.SetEnvironmentVariables(); } else { if (string.IsNullOrEmpty(rhome)) { var plat = NativeUtility.GetPlatform(); switch (plat) { case PlatformID.Win32NT: if (string.IsNullOrEmpty(rhome)) { rhome = Path.Combine(pathToRDynLib, @"..\.."); // Assume R more recent than 2.12 : binaries under bin\x64 for instance; folder containing 'bin' is R_HOME Log.WarnFormat("R_HOME environment variable not set. Setting R_HOME = {0}", rhome); } break; case PlatformID.Unix: Log.Debug("R init: detected Unix platform"); if (String.IsNullOrEmpty(rhome)) { throw new Exception("R_HOME environment variable is not set"); } break; default: throw new NotSupportedException(string.Format("Platform not supported: {0}", plat)); } } Log.Debug("R init: R_HOME = " + rhome); REngine.SetEnvironmentVariables(pathToRDynLib, rhome); } Log.Debug("R init: creating R engine"); rEngine = REngine.GetInstance(dll: null, initialize: false, parameter: null, device: null); Log.Debug("R init: initialising R engine"); StartupParameter rStartParams = new StartupParameter { Quiet = true, SaveAction = StartupSaveAction.NoSave, Slave = false, Interactive = true, Verbose = false, LoadInitFile = true, LoadSiteFile = true, RestoreAction = StartupRestoreAction.NoRestore, NoRenviron = false }; rEngine.Initialize(rStartParams); Log.Debug("Created rEngine: " + rEngine.ToString()); }
public static RCompositeObjectiveEvaluator <TSysConfig> Create(RexpObjectiveDefinition objDefn) { if (singleton == null) { singleton = new RCompositeObjectiveEvaluator <TSysConfig>(objDefn); } return(singleton); }