Exemple #1
0
        /// <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());
        }
Exemple #2
0
 public static RCompositeObjectiveEvaluator <TSysConfig> Create(RexpObjectiveDefinition objDefn)
 {
     if (singleton == null)
     {
         singleton = new RCompositeObjectiveEvaluator <TSysConfig>(objDefn);
     }
     return(singleton);
 }