Пример #1
0
        static void Main(string[] args)
        {
            /*
             * This program primarily demonstrates how to wrap and calibrate a model written
             * in a native language. While technological aspects of what it demonstrates
             * are not inherently limited nor specific to optimisation, this is
             * a use case often encountered (e.g. to calibrate existing models written in
             * C++ , C, or Fortran)
             */
            IClonableObjectiveEvaluator <IHyperCube <double> > evaluator;
            IEvolutionEngine <IHyperCube <double> >            uniformRandomSampling;

            NativeModelWrapper.AwbmWrapper.PermitMultiThreading = true;

            using (var simulation = new AwbmWrapper())
            {
                var data = DataHandling.GetSampleClimate();
                SimulationFactory.SetSampleSimulation(simulation, data);
                int from = simulation.GetStart();
                int to   = simulation.GetEnd();

                evaluator = AWBM_URS.MainClass.BuildUrsEvaluator(simulation, data.Runoff, from, to);

                var paramSpace = AWBM_URS.MainClass.CreateFeasibleAwbmParameterSpace(simulation);
                uniformRandomSampling = new UniformRandomSampling <IHyperCube <double> >(evaluator, new BasicRngFactory(0), paramSpace, 3000);
                var ursResults = uniformRandomSampling.Evolve();
                Console.WriteLine(MetaheuristicsHelper.GetHumanReadable(ursResults));
            }
        }
Пример #2
0
        public static void Main(string[] args)
        {
            /*
             * The context of this tutorial is that you have an existing time stepping simulation
             * model.
             */
            IClonableObjectiveEvaluator <IHyperCube <double> > evaluator;
            IEvolutionEngine <IHyperCube <double> >            uniformRandomSampling;


            var simulation = SimulationFactory.CreateAwbmSimulation();
            var data       = DataHandling.GetSampleClimate();

            SimulationFactory.SetSampleSimulation(simulation, data);
            int from = simulation.GetStart();
            int to   = simulation.GetEnd();

            evaluator = BuildUrsEvaluator(simulation, data.Runoff, from, to);

            var paramSpace = CreateFeasibleAwbmParameterSpace(simulation);

            uniformRandomSampling = new UniformRandomSampling <IHyperCube <double> >(evaluator, new BasicRngFactory(0), paramSpace, 3000);
            var ursResults = uniformRandomSampling.Evolve();

            Console.WriteLine(MetaheuristicsHelper.GetHumanReadable(ursResults));
        }
Пример #3
0
 protected override void Context()
 {
     _objectBaseFactory = A.Fake <IObjectBaseFactory>();
     _simulationBuildingBlockUpdater = A.Fake <ISimulationBuildingBlockUpdater>();
     _simulationModelCreator         = A.Fake <ISimulationModelCreator>();
     _simulationParametersUpdater    = A.Fake <ISimulationParametersUpdater>();
     _modelPropertiesTask            = A.Fake <IModelPropertiesTask>();
     _cloner = A.Fake <ICloner>();
     _diagramModelFactory = A.Fake <IDiagramModelFactory>();
     _interactionTask     = A.Fake <IInteractionTask>();
     _individual          = A.Fake <Individual>();
     _compounds           = new List <Compound>();
     A.CallTo(() => _individual.BuildingBlockType).Returns(PKSimBuildingBlockType.Individual);
     _population = A.Fake <Population>();
     A.CallTo(() => _population.BuildingBlockType).Returns(PKSimBuildingBlockType.Population);
     _originData                = new OriginData();
     _modelProperties           = A.Fake <ModelProperties>();
     _individualSimulation      = A.Fake <IndividualSimulation>();
     _populationSimulation      = A.Fake <PopulationSimulation>();
     _objectIdResetter          = A.Fake <IObjectIdResetter>();
     _compoundPropertiesUpdater = A.Fake <ICompoundPropertiesUpdater>();
     A.CallTo(() => _objectBaseFactory.Create <IndividualSimulation>()).Returns(_individualSimulation);
     A.CallTo(() => _objectBaseFactory.Create <PopulationSimulation>()).Returns(_populationSimulation);
     _individual.OriginData = _originData;
     A.CallTo(() => _individual.Organism).Returns(A.Fake <Organism>());
     sut = new SimulationFactory(_objectBaseFactory,
                                 _simulationBuildingBlockUpdater, _simulationModelCreator, _objectIdResetter, _compoundPropertiesUpdater, _simulationParametersUpdater,
                                 _modelPropertiesTask, _cloner, _diagramModelFactory, _interactionTask);
 }
Пример #4
0
 protected override void Context()
 {
     _idGenerator           = A.Fake <IIdGenerator>();
     _metaDataFactory       = A.Fake <ICreationMetaDataFactory>();
     _parameterIdUpdater    = A.Fake <ISimulationParameterOriginIdUpdater>();
     _diagramManagerFactory = A.Fake <IDiagramManagerFactory>();
     sut = new SimulationFactory(_idGenerator, _metaDataFactory, _parameterIdUpdater, _diagramManagerFactory);
 }
Пример #5
0
        public static void Main()
        {
            if (!Settings.ShowFullOutput)
            {
                Log.Options = new SummaryOnlyLogOptions();
            }

            SimulationFactory
            .CreateSimulation()
            .Execute();

            System.Console.ReadLine();
        }
Пример #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        public void ReadXml(XmlReader reader)
        {
            XDocument doc = XDocument.Load(reader);

            //Get the list of models
            XElement projectElement = doc.Element("Project");

            //Set the project properties
            CreatedBy = XMLUtilities.readXMLAttribute(projectElement.Attribute("CreatedBy"));
            DateTime?createdDate = DateUtilities.TryParseDate(XMLUtilities.readXMLAttribute(projectElement.Attribute("CreationDate")).Split(new char[] { ' ' })[0], "dd/MM/yyyy");

            CreatedDate    = createdDate == null ? new DateTime(1, 1, 1) : createdDate.Value;
            ContactDetails = XMLUtilities.readXMLAttribute(projectElement.Attribute("ContactDetails"));
            ModifiedBy     = XMLUtilities.readXMLAttribute(projectElement.Attribute("ModifiedBy"));

            Name = projectElement.Element("Name").Value.ToString();

            //Read all of the climate data models
            List <XElement> ClimateDatalements = new List <XElement>(projectElement.Elements("ClimateData").Elements("DataFile"));

            //Read all of the models
            List <XElement> TemplateElements = new List <XElement>(projectElement.Elements().Where(x => x.Name.ToString().Contains("Templates")));
            List <XElement> TypeElements     = new List <XElement>();

            foreach (XElement te in TemplateElements)
            {
                foreach (XElement xe in te.Elements())
                {
                    TypeElements.Add(xe);
                }
            }
            //Read all of the simualtions
            SimulationElements = new List <XElement>();

            foreach (XElement simChild in projectElement.Elements("Simulations").Elements())
            {
                if (simChild.Name.ToString() == "SimulationObject")
                {
                    SimulationElements.Add(simChild);
                }
                else if (simChild.Name.ToString() == "Folder")
                {
                    SimulationElements.AddRange(simChild.Elements("SimulationObject"));
                }
            }

            InputDataModels = new List <InputModel>();

            //Create input models from the xml elements
            foreach (XElement xe in TypeElements)
            {
                InputDataModels.Add(RawInputModelFactory.GenerateRawInputModel(xe));
            }

            //Create the Climate models - these aren't deserialised so don't come out of the factory
            foreach (XElement xe in ClimateDatalements)
            {
                ClimateInputModel cim = new ClimateInputModel();
                cim.FileName = xe.Attribute("href").Value.ToString();
                InputDataModels.Add(cim);
            }

            //Initialise the models
            foreach (InputModel im in InputDataModels)
            {
                im.Init();
            }

            //Create the simualtions
            foreach (XElement xe in SimulationElements)
            {
                Simulations.Add(SimulationFactory.GenerateSimulationXML(this, xe, InputDataModels));
            }

            //Just one for testing
            //Simulations = new List<Simulation>();
            //Simulations.Add(SimulationFactory.GenerateSimulationXML(SimulationElements[0], InputDataModels));

            OutputDataElements = OutputModelController.GetProjectOutputs(this);
        }
Пример #7
0
 public static void Initialize()
 {
     App.SimulationConfig = ConfigurationManager.GetSection("simulationConfig") as SimulationConfig;
     App.AnimalFactory    = SimulationFactory.GetAnimalFactory();
 }