<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://sumowiki.ilabt.imec.be/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin</id>
	<title>SUMOwiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://sumowiki.ilabt.imec.be/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin"/>
	<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/Special:Contributions/Admin"/>
	<updated>2026-05-18T08:40:25Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.13</generator>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Contact&amp;diff=5948</id>
		<title>Contact</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Contact&amp;diff=5948"/>
		<updated>2020-09-23T08:37:17Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Feedback ==&lt;br /&gt;
&lt;br /&gt;
For general feedback see the [[Feedback]] page first. To report problems see the [[Reporting problems]] page.&lt;br /&gt;
&lt;br /&gt;
== Contact persons ==&lt;br /&gt;
&lt;br /&gt;
* For practical issues related to downloading, using, installing and extending the toolbox contact [http:///sumo.intec.ugent.be/icouckuy Ivo Couckuyt]&lt;br /&gt;
* For more formal, organizational issues (e.g., collaboration proposal) contact [http://www.sumo.intec.ugent.be/?q=tomd Tom Dhaene]&lt;br /&gt;
&lt;br /&gt;
You may also use this [http://www.sumo.intec.ugent.be/?q=contact contact form].&lt;br /&gt;
&lt;br /&gt;
== Blog ==&lt;br /&gt;
&lt;br /&gt;
A blog about our current research is available here [http://sumolab.blogspot.com http://sumolab.blogspot.com]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Running&amp;diff=5929</id>
		<title>Running</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Running&amp;diff=5929"/>
		<updated>2015-08-10T16:59:27Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Getting started */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Getting started ==&lt;br /&gt;
&lt;br /&gt;
If you are just getting started with the toolbox and you want to find out how everything works, this section should help you on your way.&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;features&#039;&#039;&#039; and scope of the SUMO Toolbox are detailed on this [[About#Intended_use|page]] where you can find out whether the SUMO Toolbox suits your needs. To find out more about the SUMO Toolbox in general, check out the documentation on this [[About#Documentation|page]].&lt;br /&gt;
&lt;br /&gt;
* If you want to get hands-on with the SUMO Toolbox, we recommend using this [http://www.sumo.intec.ugent.be/sites/sumo/files//hands-on.pdf guide]. The guide explains the basic SUMO framework, how to &#039;&#039;&#039;install&#039;&#039;&#039; the SUMO Toolbox on your computer and provides some &#039;&#039;&#039;examples&#039;&#039;&#039; on running the toolbox.&lt;br /&gt;
&lt;br /&gt;
* Since the SUMO Toolbox is [[Configuration|configured]] by editing XML files it might be a good idea to read [[FAQ#What is XML?|this page]], if you are not familiar with XML files. You can also check out this [[Config:ToolboxConfiguration#Interpreting_the_configuration_file| page]] which has more info on how the SUMO Toolbox uses XML.&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;installation&#039;&#039;&#039; information can also be found [[Installation|on this wiki]] and more information on running a different example the SUMO Toolbox can be found [[Running#Running_different_examples|here]]. &lt;br /&gt;
&lt;br /&gt;
* The SUMO Toolbox also comes with a set of &#039;&#039;&#039;demo&#039;s&#039;&#039;&#039; showing the different uses of the toolbox. You can find the configuration files for these demo&#039;s in the &#039;config/demo&#039; directory.&lt;br /&gt;
&lt;br /&gt;
* We have also provided some [[General_guidelines|general modelling guidelines]] which you can use a starting point to model your problems.&lt;br /&gt;
&lt;br /&gt;
* Also be sure to check out the &#039;&#039;&#039;Frequently Asked Questions&#039;&#039;&#039; ([[FAQ|FAQ]]) page as it might answer some of your questions.&lt;br /&gt;
&lt;br /&gt;
Finally if you get stuck or have any problems [[Reporting problems|feel free to let us know]] and will do our best to help you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;We are well aware that documentation is not always complete and possibly even out of date in some cases. We try to document everything as best we can but much is limited by available time and manpower.  We are are a university research group after all. The most up to date documentation can always be found (if not here) in the default.xml configuration file and, of course, in the source files.  If something is unclear please don&#039;t hesitate to [[Reporting problems|ask]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Running different examples  ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
This section is about running a different example problem, if you want to model your own problem see [[Adding an example]].  Make sure you [[configuration|understand the difference between the simulator configuration file and the toolbox configuration file]] and understand how these configuration files are [[Toolbox configuration#Structure|structured]].&lt;br /&gt;
&lt;br /&gt;
=== Changing the configuration xml ===&lt;br /&gt;
The &amp;lt;code&amp;gt;examples/&amp;lt;/code&amp;gt; directory contains many example simulators that you can use to test the toolbox with. These examples range from predefined functions, to datasets from various domains, to native simulation code. If you want to try one of the examples, open &amp;lt;code&amp;gt;config/default.xml&amp;lt;/code&amp;gt; and edit the [[Simulator| &amp;lt;Simulator&amp;gt;]] tag to suit your needs (for more information about editing the configuration xml, go to this [[Config:ToolboxConfiguration#Interpreting_the_configuration_file|page]]).&lt;br /&gt;
&lt;br /&gt;
For example, originally the default &#039;&#039;&#039;configuration xml&#039;&#039;&#039; file, default.xml, contains:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Simulator&amp;gt;Math/Academic/Academic2DTwice.xml&amp;lt;/Simulator&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The toolbox will look in the examples directory for a project directory called &amp;lt;code&amp;gt;Math/Academic&amp;lt;/code&amp;gt; and load the &#039;&#039;&#039;simulator xml&#039;&#039;&#039; file named &#039;Academic2DTwice.xml&#039;. If no simulator xml file name is specified, the SUMO Toolbox will load the simulator xml with the same name as directory. For example &amp;lt;code&amp;gt;Math/Peaks&amp;lt;/code&amp;gt; is equivalent to &amp;lt;code&amp;gt;Math/Peaks/Peaks.xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Now let&#039;s say you want to run one of the different example problems, for example, lets say you want to try the &#039;Michalewicz&#039; example.  In this case you would replace the original Simulator tag with: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Simulator&amp;gt;Math/Michalewicz&amp;lt;/Simulator&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition you would have to change the &amp;lt;code&amp;gt;&amp;lt;Outputs&amp;gt;&amp;lt;/code&amp;gt; tag.  The &amp;lt;code&amp;gt;Math/Academic/Academic2DTwice.xml&amp;lt;/code&amp;gt; example has two outputs (&#039;&#039;out&#039;&#039; and &#039;&#039;outinverse&#039;&#039;).  However, the Michalewicz example has only one (&#039;&#039;out&#039;&#039;).  Thus telling the SUMO Toolbox to model the &#039;&#039;outinverse&#039;&#039; output in that case makes no sense since it does not exist for the &#039;Michalewicz&#039; example.  So the following output configuration suffices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Outputs&amp;gt;&lt;br /&gt;
   &amp;lt;Output name=&amp;quot;out&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/Output&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rest of default.xml can be kept the same, then simply type in &#039;&amp;lt;code&amp;gt;go&amp;lt;/code&amp;gt;&#039; in the SUMO root to run the example. If you do not specify any arguments, the SUMO Toolbox will use the settings in the default.xml file. If you wish run a different configuration file use the following command &#039;&amp;lt;code&amp;gt;go(pathToYourConfig/yourConfig.xml)&amp;lt;/code&amp;gt;&#039; where pathToYourConfig is the path to where your configuration XML-file is located, and yourConfig.xml is the name of your configuration XML-file.&lt;br /&gt;
&lt;br /&gt;
As noted above, it is also possible to specify an absolute path or refer to a particular simulator xml file directly.  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Simulator&amp;gt;/path/to/your/project/directory&amp;lt;/Simulator&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Simulator&amp;gt;Ackley/Ackley2D.xml&amp;lt;/Simulator&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Important notes ===&lt;br /&gt;
&lt;br /&gt;
If you start changing default.xml to try out different examples, there are a number of important things you should be aware of.&lt;br /&gt;
&lt;br /&gt;
==== Select matching Inputs and Outputs ====&lt;br /&gt;
Using the &amp;lt;code&amp;gt;&amp;lt;Inputs&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;Outputs&amp;gt;&amp;lt;/code&amp;gt; tags in the SUMO-Toolbox configuration file you can tell the toolbox which outputs should be modeled and how.  Note that these tags are optional.  You can delete them and then the toolbox will simply model all available inputs and outputs.  If you do specify a particular output, for example say you tell the toolbox to model output &#039;&#039;temperature&#039;&#039; of the simulator &#039;ChemistryProblem&#039;.  If you then change the configuration file to model &#039;BiologyProblem&#039; you will have to change the name of the selected output (or input) since most likely &#039;BiologyProblem&#039; will not have an output called &#039;&#039;temperature&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Information on how to further customize to modelling of the outputs can be found [[Outputs|here]].&lt;br /&gt;
&lt;br /&gt;
==== Select a matching DataSource ====&lt;br /&gt;
There is one important caveat. Some examples consist of a fixed data set, some are implemented as a Matlab function, others as a C++ executable, etc.  When running a different example you have to tell the SUMO Toolbox how the example is implemented so the toolbox knows how to extract data (eg: should it load a data file or should it call a Matlab function).  This is done by specifying the correct [[Config:DataSource|DataSource]] tag.  The default DataSource is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DataSource&amp;gt;matlab&amp;lt;/DataSource&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So this means that the toolbox expects the example you want to run is implemented as a Matlab function.  Thus it is no use running an example that is implemented as a static dataset using the &#039;[[Config:DataSource#matlab|matlab]]&#039; or &#039;[[Config:DataSource#local|local]]&#039; sample evaluators.  Doing this will result in an error.  In this case you should use &#039;[[Config:DataSource#scatteredDataset|scatteredDataset]]&#039; (or sometimes [[Config:DataSource#griddedDataset|griddedDataset]]).&lt;br /&gt;
&lt;br /&gt;
To see how an example is implemented open the XML file inside the example directory and look at the &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Implementation&amp;gt;&amp;lt;/source&amp;gt; tag.  To see which DataSources are available see [[Config:DataSource]].&lt;br /&gt;
&lt;br /&gt;
=== Select an appropriate model type ===&lt;br /&gt;
The choice of the model type which you use to model your problem has a great impact on the overall accuracy. If you switch to a different example you may also have to change the model type used. For example, if you are using a spline model (which only works in 2D) and you decide to model a problem with many dimensions (e.g., CompActive or BostonHousing) you will have to switch to a different model type (e.g., any of the SVM or LS-SVM model builders). &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;ModelBuilder&amp;gt; tag specifies which model type is used to model problem. In most cases the &#039;ModelBuilder&#039; also specifies an optimization algorithm to find the best &#039;hyperparameters&#039; of the models. Hyperparameters are parameters which define model, such as the order of a polynomial or the the number of hidden nodes of an Artificial Neural Network. To see all the ModelBuilder options and what they do go to [[Config:ModelBuilder| this page]].&lt;br /&gt;
&lt;br /&gt;
=== One-shot designs ===&lt;br /&gt;
If you want to use the toolbox to simply model all your data without instead of using the default sequential approach,  see [[Adaptive_Modeling_Mode]] for how to do this.&lt;br /&gt;
&lt;br /&gt;
== Running different configuration files ==&lt;br /&gt;
&lt;br /&gt;
If you just type &amp;quot;go&amp;quot; the SUMO-Toolbox will run using the configuration options in default.xml.  However you may want to make a copy of default.xml and play around with that, leaving your original default.xml intact.  So the question is, how do you run that file?  Lets say your copy is called MyConfigFile.xml.  In order to tell SUMO to run that file you would type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
go(&#039;/path/to/MyConfigFile.xml&#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The path can be an absolute path, or a path relative to the SUMO Toolbox root directory.&lt;br /&gt;
To see what other options you have when running go type &#039;&#039;help go&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remember to always run go from the toolbox root directory.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Merging your configuration ===&lt;br /&gt;
&lt;br /&gt;
If you know what you are doing, you can merge your own custom configuration with the default configuration by using the &#039;-merge&#039; option.  Options or tags that are missing in this custom file will then be filled up with the values from the default configuration.  This prevents you from having to duplicate tags in default.xml and creates xml files which are easier to manipulate. However, if you are unfamiliar with XML and not quite sure what you are doing we advise against using it.&lt;br /&gt;
&lt;br /&gt;
=== Running optimization examples ===&lt;br /&gt;
The SUMO toolbox can also be used for minimizing the simulator in an intelligent way. There are 2 examples in included in &amp;lt;code&amp;gt;config/Optimization&amp;lt;/code&amp;gt;. To run these examples is exactly the same as always, e.g. &amp;lt;code&amp;gt;go(&#039;config/optimization/Branin.xml&#039;)&amp;lt;/code&amp;gt;. The only difference is in the sample selector which is specified in the configuration file itself.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:ISCSampleSelector2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
The example configuration files are well documented, it is advised to go through them for more detailed information.&lt;br /&gt;
&lt;br /&gt;
== Understanding the control flow ==&lt;br /&gt;
&lt;br /&gt;
[[Image:sumo-control-flow.png|thumb|300px|right|The general SUMO-Toolbox control flow]]&lt;br /&gt;
&lt;br /&gt;
When the toolbox is running you might wonder what exactly is going on. The high level control flow that the toolbox goes through is illustrated in the flow chart and explained in more detail below.  You may also refer to the [[About#Presentation|general SUMO presentation]].&lt;br /&gt;
&lt;br /&gt;
# Select samples according to the [[InitialDesign|initial design]] and execute the [[Simulator]] for each of the points&lt;br /&gt;
# Once enough points are available, start the [[Add_Model_Type#Models.2C_Model_builders.2C_and_Factories|Model builder]] which will start producing models as it optimizes the model parameters&lt;br /&gt;
## the number of models generated depends on the [[Config:ModelBuilder|ModelBuilder]] used. Usually the ModelBuilder tag contains a setting like &#039;&#039;maxFunEvals&#039;&#039; or &#039;&#039;popSize&#039;&#039;.  This indicates to the algorithm that is optimizing the model parameters (and thus generating models) how many models it should maximally generate before stopping.  By increasing this number you will generate more models in between sampling iterations, thus have a higher chance of getting a better model, but increasing the computation time.  This step is what we refer to as a &#039;&#039;modeling iteration&#039;&#039;.&lt;br /&gt;
## optimization over the model parameters is driven by the [[Measures|Measure(s)]] that are enabled. Selection of the Measure is thus very important for the modeling process!&lt;br /&gt;
## each time the model builder generates a model that has a lower measure score than the previous best model, the toolbox will trigger a &amp;quot;New best model found&amp;quot; event, save the model, generate a plot, and trigger all the profilers to update themselves.&lt;br /&gt;
## so note that by default, you only see something happen when a new best model is found, you do not see all the other models that are being generated in the background.  If you want to see those, you must increase the logging granularity (or just look in the log file) or [[FAQ#How_do_I_enable_more_profilers.3F|enable more profilers]].&lt;br /&gt;
# So the model builder will run until it has completed&lt;br /&gt;
# Then, if the current best model satisfies all the targets in the enabled Measures, it means we have reached the requirements and the toolbox terminates.&lt;br /&gt;
# If not, the [[Config:SequentialDesign|SequentialDesign]] selects a new set of samples (= a &#039;&#039;sampling iteration&#039;&#039;), they are simulated, and the model building resumes or is restarted according to the configured restart strategy&lt;br /&gt;
# This whole loop continues (thus the toolbox will keep running) until one of the following conditions is true:&lt;br /&gt;
## the targets specified in the active measure tags have been reached (each Measure has a target value which you can set). Note though, that when you are using multiple measures (see [[Multi-Objective Modeling]]) or when using single measures like AIC or LRM, it becomes difficult to set a priori targets since you cant really interpret the scores (in contrast to the simple case with a single measure like CrossValidation where your target is simply the error you require).  In those cases you should usually set the targets to 0 and use one of the other criteria below to make sure the toolbox stops.&lt;br /&gt;
## the maximum running time has been reached (&#039;&#039;maximumTime&#039;&#039; property in the [[Config:SUMO]] tag)&lt;br /&gt;
## the maximum number of samples has been reached (&#039;&#039;maximumTotalSamples&#039;&#039; property in the [[Config:SUMO]] tag)&lt;br /&gt;
## the maximum number of modeling iterations has been reached (&#039;&#039;maxModelingIterations&#039;&#039; property in the [[Config:SUMO]] tag)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that it is also possible to disable the sample selection loop, see [[Adaptive Modeling Mode]].  Also note that while you might think the toolbox is not doing anything, it is actually building models in the background (see above for how to see the details).  The toolbox will only inform you (unless configured otherwise) if it finds a model that is better than the previous best model (using that particular measure!!).  If not it will continue running until one of the stopping conditions is true.&lt;br /&gt;
&lt;br /&gt;
== SUMO Toolbox output ==&lt;br /&gt;
&lt;br /&gt;
All output is stored under the [[Config:ContextConfig#OutputDirectory|directory]] specified in the [[Config:ContextConfig]] section of the configuration file (by default this is set to &amp;quot;&amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt;&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
Starting from version 6.0 the output directory is always relative to the project directory of your example.  Unless you specify an absolute path.&lt;br /&gt;
&lt;br /&gt;
After completion of a SUMO Toolbox run, the following files and directories can be found there (e.g. : in &amp;lt;code&amp;gt;output/&amp;lt;run_name+date+time&amp;gt;/&amp;lt;/code&amp;gt; subdirectory) :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;config.xml&amp;lt;/code&amp;gt;: The xml file that was used by this run. Can be used to reproduce the entire modeling process for that run.&lt;br /&gt;
* &amp;lt;code&amp;gt;randstate.dat&amp;lt;/code&amp;gt;: contains states of the random number generators, so that it becomes possible to deterministically repeat a run (see the [[Random state]] page).&lt;br /&gt;
* &amp;lt;code&amp;gt;samples.txt&amp;lt;/code&amp;gt;: a list of all the samples that were evaluated, and their outputs.&lt;br /&gt;
* &amp;lt;code&amp;gt;profilers&amp;lt;/code&amp;gt;-dir: contains information and plots about convergence rates, resource usage, and so on.&lt;br /&gt;
* &amp;lt;code&amp;gt;best&amp;lt;/code&amp;gt;-dir: contains the best models (+ plots) of all outputs that were constructed during the run.  This is continuously updated as the modeling progresses.&lt;br /&gt;
* &amp;lt;code&amp;gt;models_outputName&amp;lt;/code&amp;gt;-dir: contains a history of all intermediate models (+ plots + movie) for each output that was modeled.&lt;br /&gt;
&lt;br /&gt;
If you generated models [[Multi-Objective Modeling|multi-objectively]] you will also find the following directory:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;paretoFronts&amp;lt;/code&amp;gt;-dir: contains snapshots of the population during multi-objective optimization of the model parameters.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
&lt;br /&gt;
Remember to always check the log file first if problems occur!&lt;br /&gt;
When [[reporting problems]] please attach your log file and the xml configuration file you used.&lt;br /&gt;
&lt;br /&gt;
To aid understanding and debugging you should set the console and file logging level to FINE (or even FINER, FINEST)&lt;br /&gt;
as follows: &lt;br /&gt;
&lt;br /&gt;
Change the level of the ConsoleHandler tag to FINE, FINER or FINEST.  Do the same for the FileHandler tag. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Configure ConsoleHandler instances --&amp;gt;&lt;br /&gt;
&amp;lt;ConsoleHandler&amp;gt;&lt;br /&gt;
	&amp;lt;Option key=&amp;quot;Level&amp;quot; value=&amp;quot;FINE&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/ConsoleHandler&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using models ==&lt;br /&gt;
&lt;br /&gt;
Once you have generated a model, you might wonder what you can do with it. To see how to load, export, and use SUMO generated models see the [[Using a model]] page.&lt;br /&gt;
&lt;br /&gt;
== Modelling complex outputs ==&lt;br /&gt;
&lt;br /&gt;
The toolbox supports the modeling of complex valued data.  If you do not specify any specific &amp;lt;[[Outputs|Output]]&amp;gt; tags, all outputs will be modeled with [[Outputs#Complex_handling|complexHandling]] set to &#039;&amp;lt;code&amp;gt;complex&amp;lt;/code&amp;gt;&#039;. This means that a real output will be modeled as a real value, and a complex output will be modeled as a complex value (with a real and imaginary part).  If you don&#039;t want this (i.e., you want to model the modulus of a complex output or you want to model real and imaginary parts separately), you explicitly have to set [[Outputs#Complex_handling|complexHandling]] to &#039;modulus&#039;, &#039;real&#039;, &#039;imaginary&#039;, or &#039;split&#039;.&lt;br /&gt;
 &lt;br /&gt;
More information on this subject can be found at the [[Outputs#Complex_handling|Outputs]] page.&lt;br /&gt;
&lt;br /&gt;
== Models with multiple outputs ==&lt;br /&gt;
&lt;br /&gt;
If multiple [[Outputs]] are selected, by default the toolbox will model each output separately using a separate adaptive model builder object.  So if you have a system with 3 outputs you will get three different models each with one output.  However, sometimes you may want a single model with multiple outputs.  For example instead of having a neural network for each component of a complex output (real/imaginary) you might prefer a single network with 2 outputs.  To do this simply set the &#039;combineOutputs&#039; attribute of the &amp;lt;AdaptiveModelBuilder&amp;gt; tag to &#039;true&#039;.  That means that each time that model builder is selected for an output, the same model builder object will be used instead of creating a new one.&lt;br /&gt;
&lt;br /&gt;
Note though, that not all model types support multiple outputs.  If they don&#039;t you will get an error message.&lt;br /&gt;
&lt;br /&gt;
Also note that you can also generate models with multiple outputs in a multi-objective fashion.  For information on this see the page on [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
== Multi-Objective Model generation ==&lt;br /&gt;
&lt;br /&gt;
See the page on [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
== Interfacing with the SUMO Toolbox ==&lt;br /&gt;
&lt;br /&gt;
To learn how to interface with the toolbox or model your own problem see the [[Adding an example]] and [[Interfacing with the toolbox]] pages.&lt;br /&gt;
&lt;br /&gt;
== Test Suite ==&lt;br /&gt;
&lt;br /&gt;
A test harness is provided that can be run manually or automatically as part of a cron job.  The test suite consists of a number of test XML files (in the config/test/ directory), each describing a particular surrogate modeling experiment.  The file config/test/suite.xml dictates which tests are run and their order.  The suite.xml file also contains the accuracy and sample bounds that are checked after each test.  If the final model found does not fall within the accuracy or number-of-samples bounds, the test is considered failed.&lt;br /&gt;
&lt;br /&gt;
Note also that some of the predefined test cases may rely on data sets or simulation code that are not publically available for confidentiality reasons.  However, since these test problems typically make very good benchmark problems we left them in for illustration purposes.&lt;br /&gt;
&lt;br /&gt;
The coordinating class is the Matlab TestSuite class found in the src/matlab directory. Besides running the tests defined in suite.xml it also tests each of the model member functions.&lt;br /&gt;
&lt;br /&gt;
Assuming the SUMO Toolbox is setup properly and the necessary libraries are compiled ([[Installation#Optional:_Compiling_libraries|see here]]), the test suite should be run as follows (from the SUMO root directory):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
s = TestEngine(&#039;config/test/suite.xml&#039;) ; s.run()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;run()&amp;quot; method also supports an optional parameter (a vector) that dictates which tests to run (e.g., run([2 5 3]) will run tests 2,5 and 3).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note that due to randomization the final accuracy and number of samples used may vary slightly from run to run (causing failed tests).  Thus the bounds must be set sufficiently loose.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
&lt;br /&gt;
See the [[Tips]] page for various tips and gotchas.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Changelog&amp;diff=5927</id>
		<title>Changelog</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Changelog&amp;diff=5927"/>
		<updated>2015-05-16T08:56:43Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below you will find the detailed list of changes in every new release.  For a more high level overview see the [[Whats new]] page.&lt;br /&gt;
&lt;br /&gt;
== 2015a - 10 May 2015 ==&lt;br /&gt;
&lt;br /&gt;
*    Support for Matlab  2015a&lt;br /&gt;
*    Addition of the NLOPT optimization library. This allows usage of many optimization algorithms (both local/global and gradient based/free algorithms.&lt;br /&gt;
**        See the new NLOptimizer class&lt;br /&gt;
*    Addition of a sequential space-filling design (fuzzy-density)&lt;br /&gt;
*    Added PCTOptimizer: An optimizer which ensures that the ‘best’ candidates (obtained using a user-specified base optimizer) are sufficiently far apart from each other.&lt;br /&gt;
*    Added HillbertCurve: A space filling curve for use as an initial design where measurements are performed in lines instead of points.&lt;br /&gt;
*    Removed support for the NNSYSID neural network library&lt;br /&gt;
*    Removed the MPS algorithm&lt;br /&gt;
*    Improved the Gaussian Process models&lt;br /&gt;
**        Optimization of the hyperparameters is much better now&lt;br /&gt;
**        Updated the GPML toolbox to version 3.4&lt;br /&gt;
*    Improved the Efficient MultiObjective optimization method&lt;br /&gt;
**        reference point is chosen more intelligently&lt;br /&gt;
*    Simplified the random number generator&lt;br /&gt;
**        Now only a seed is used (see randomSeed option in xml)&lt;br /&gt;
*    Removal of DACE (deprecated by ooDACE)&lt;br /&gt;
*    RBF Refactor: FastRBF support removed, code has been updated to fit better within the toolbox&lt;br /&gt;
*    Addition of a CombiOptimizer to optimize with several optimizers at the same time&lt;br /&gt;
*    ScatteredDataset also has a native MATLAB implementation&lt;br /&gt;
*    LOLA-Voronoi algorithm has a &#039;directedSearch&#039; option to look for classification boundaries more aggressively&lt;br /&gt;
*    Reworked some ELM code&lt;br /&gt;
*    Various bugfixes&lt;br /&gt;
&lt;br /&gt;
== 2014a - 11 May 2014 ==&lt;br /&gt;
&lt;br /&gt;
* Support for new matlab versions (tested upto Matlab 2014a)&lt;br /&gt;
*    Important: renamed several components in SUMO, existing xml files will not work anymore!&lt;br /&gt;
**        SampleSelector is now SequentialDesign&lt;br /&gt;
**        SampleEvaluator is now DataSource&lt;br /&gt;
**        AdaptiveModelBuilder is now ModelBuilder&lt;br /&gt;
**    Added new space-filling sequential design algorithms (see density and density-optimizer components in default.xml)&lt;br /&gt;
*    Added the TPLHD Algorithm, which is now the default for lhdWithCornerPoints&lt;br /&gt;
*    Added new Input-Output sequential design algorithm (FLOLA-Voronoi)&lt;br /&gt;
*    Added new surrogate model types (Eureqa, Extreme Learning Machines, WEKA library)&lt;br /&gt;
*    Added the CombinedModelBuilder&lt;br /&gt;
**        applies different ModelBuilders (and thus Model types) on the same data and optionally builds an Ensemble model of the best ones&lt;br /&gt;
**        similar to the heterogenetic ModelBuilder but faster&lt;br /&gt;
**        see the default.xml for an example (heterosequential)&lt;br /&gt;
*    Updated third-party surrogate model libraries (LS-SVM, FANN, GPML)&lt;br /&gt;
*    Input validation for the xml files (SUMO now gives an error for unknown options)&lt;br /&gt;
*    Many SUMO components (Optimizers, SequentialDesigns, ...) are now directly usable from custom Matlab scripts&lt;br /&gt;
**        This bypasses the xml configuration and allows implementation of custom surrogate modeling algorithms&lt;br /&gt;
**        See runKrigingOptimization, etc. scripts (inside src/scripts/matlab)&lt;br /&gt;
*    Added the Efficient Multi-objective Optimization (EMO) algorithm (multi-objective expected improvement)&lt;br /&gt;
*    Added the Probability of Feasibility (PoF) criterion for constrained optimization problems&lt;br /&gt;
*    Added the well-known NSGAII, SPEA2 and SMS-EMOA evolutionary algorithms (for multi-objective optimization)&lt;br /&gt;
*    Reworked and improved the Kriging surrogate model&lt;br /&gt;
*    New and much faster Matlab DataSource (former SampleEvaluator) that avoids the java overhead (it is the default now)&lt;br /&gt;
*    Improved the log files generated by SUMO&lt;br /&gt;
**        Added a timestamp&lt;br /&gt;
**        Added the component name that outputs each line (useful for debugging)&lt;br /&gt;
*    Support for the Matlab Compiler Runtime (MCR) environment. This is useful for running the toolbox on a cluster where matlab may not be available otherwise&lt;br /&gt;
&lt;br /&gt;
== 7.0.2 - 1 August 2010 ==&lt;br /&gt;
&lt;br /&gt;
* Minor cosmetic updates&lt;br /&gt;
&lt;br /&gt;
== 7.0.1 - 15 June 2010 ==&lt;br /&gt;
&lt;br /&gt;
* Bugfix release&lt;br /&gt;
&lt;br /&gt;
== 7.0 - 29 January 2010 ==&lt;br /&gt;
&lt;br /&gt;
* Move to a dual license model, with an open source licence (AGPLv3)  for non-commercial use, see [[License terms]]&lt;br /&gt;
* Experimental support for classification and 3D geometric modeling  problems (see the 2 new demos)&lt;br /&gt;
* Thorough cleanup of SampleEvaluator related classes and package structure&lt;br /&gt;
* Improved speed and stability in (Blind) Kriging models and fixed the correlation function derivatives.&lt;br /&gt;
* Vastly improved the utilization of compute nodes if a distributed sample evaluator is used that interfaces with a cluster or grid&lt;br /&gt;
* Support for plotting the prediction uncertainty in the model browser GUI &lt;br /&gt;
* Support for quasi random sequences as initial design&lt;br /&gt;
&lt;br /&gt;
== 6.2.1 - 19 October 2009 ==&lt;br /&gt;
&lt;br /&gt;
* This release fixes a number of bugs from 6.2. All users are strongly requested to upgrade.&lt;br /&gt;
&lt;br /&gt;
== 6.2 - 6 October 2009 ==&lt;br /&gt;
&lt;br /&gt;
* A new neural network modelbuilder &amp;quot;ann&amp;quot;.  This is a lot faster than the existing &amp;quot;anngenetic&amp;quot; and the quality of the models is roughly the same&lt;br /&gt;
* The sample selection infrastructure is now much more powerful, sample selection criteria can be combined with much more flexibility. This opens the way to dynamic variation of sampling criteria.&lt;br /&gt;
* Support for Input constraints / multiple output sampling in the LOLA-Voronoi sample selection algorithm&lt;br /&gt;
* Support for auto-sampled inputs (e.g., frequency in an EM context) in LOLA-Voronoi.  This is useful if a particular input is already sampled by your simulator.&lt;br /&gt;
* Automatic filtering of samples close to each other in CombinedSampleSelector&lt;br /&gt;
* Support for TriScatteredInterp in InterpolationModel when it is available (Matlab version 2009a and later)&lt;br /&gt;
* Sample selectors that support it (for example: LOLA-Voronoi) now give priorities to new samples, to that samples are submitted and evaluated in order of importance.&lt;br /&gt;
* Support for pre-calculated Latin Hypercube Designs, these will be automatically downloaded and used where possible and will improve performance&lt;br /&gt;
* The Blind Kriging models have been improved and can now also be used as ordinary Kriging models.  Since these models are superior to the existing DACE Toolbox models, the DACE Toolbox backend has been removed.&lt;br /&gt;
* The EGOModelBuilder (do model parameter optimization using the EGO algorithm) now uses a nested blind kriging model instead of one based on the DACE Toolbox.  This allows for better accuracy&lt;br /&gt;
* The Kriging correlation functions can now be chosen automatically (instead of only the correlation parameters)&lt;br /&gt;
* Support for multiobjective optimization in the EGO framewok (extended version of probability of improvement)&lt;br /&gt;
* DelaunaySampleSelector, OptimizeCriterion support the same set of criterions&lt;br /&gt;
* EGO Improvement criteria can now be used together with DACEModel, RBFModel, and SVMModel (LS-SVM backend only)&lt;br /&gt;
* Added a model type and builder that does linear/cubic/nearest neighbour interpolation&lt;br /&gt;
* All error functions and measures now consistently deal with complex valued data and multiple output models&lt;br /&gt;
* Various improvements in the Model Info GUI as part of the Model browser tool&lt;br /&gt;
* Improved stability in LRMMeasure, a behavioral complexity metric to help ensure parsimonious models&lt;br /&gt;
* The profiler GUI has been updated and improved, and support for textual profilers has been added.&lt;br /&gt;
* Improved performance when using Measures, especially for models with multiple outputs.&lt;br /&gt;
* Improved management of the best model trace, also in pareto mode&lt;br /&gt;
* Removed the debug output when using (LS-)SVM models and added compiled mex files for Windows&lt;br /&gt;
* Ported the remaining classes to Matlabs Classdef format&lt;br /&gt;
* Increased use of the parallel computing toolbox (if available) in order to speed up modeling&lt;br /&gt;
* Improved the Matlab file headers so the help text is more informative (always includes at least the signature)&lt;br /&gt;
* Support for plotting the model prediction uncertainty in the model browser (only for 1D plots and not supported by all model types)&lt;br /&gt;
* Added support for so-called &amp;quot;reference by id&amp;quot; on every level of the config. If a tag of a particular type is defined on top-level with an id, it can be referenced everywhere else, instead of copying it entirely. See rationalPoleSupression sample selector and patternsearch Optimizer, for example.&lt;br /&gt;
* EmptyModelBuilder added - in case you just want to use the sequential design facilities of the toolbox, but not its models.&lt;br /&gt;
* Various cleanups and bugfixes&lt;br /&gt;
&lt;br /&gt;
== 6.1.1 - 17 April 2009 ==&lt;br /&gt;
&lt;br /&gt;
* Various cleanups and bugfixes (see [[Known bugs]] for 6.1)&lt;br /&gt;
&lt;br /&gt;
== 6.1 - 16 February 2009 ==&lt;br /&gt;
&lt;br /&gt;
* The default error function is now the Bayesian Error Estimation Quotient (BEEQ)&lt;br /&gt;
* Full support for multi-objective model generation, multiple measures can now be enforced simultaneously.  This can also be applied to generating models with multiple outputs (combineOutputs = true).  Together with the automatic model type selection algorithm (heterogenetic) this allows the automatic selection of the best model type per output.&lt;br /&gt;
* The model browser GUI now supports QQ plots&lt;br /&gt;
* The Gradient Sample Selection Algorithm has been renamed to the Local Linear Sample Selector (LOLASampleSelector)&lt;br /&gt;
* The modelbuilders have been refactored and some removed.  This is a result of the optimizer hierarchy being cleaned up.  Adding a new model parameter optimization routine should now be more straightforward.&lt;br /&gt;
* The interface classes have been renamed to factories as this is more correct.  All implementations have been  ported to Matlab&#039;s new Classdef format and the inherritance hierarchy has been cleaned up.  It should now be significantly easier to add support for new approximation types.&lt;br /&gt;
* The ModelInterfaces are now known as ModelFactories, this is more correct.  Note that the XML tagnames have been changed as well.&lt;br /&gt;
* The Model class hierarchy has been converted to the new Classdef format.  This means that models generated with previous versions of the toolbox will no longer be loadable in this version.&lt;br /&gt;
* The heterogenetic model builder for automatic model type selection has been cleaned up and made more robust.&lt;br /&gt;
* Rational models now support all available modelbuilders.  This means that order selection can be done by PSO DIRECT, Simulated Annealing, ... instead of just GA and Sequential.&lt;br /&gt;
* New optimizers added are (they can also be used as model builders): Differential Evolution&lt;br /&gt;
* Added a Blind Kriging model type implementation as a backend of KrigingModel&lt;br /&gt;
* Addition of an EGO model builder.  This allows optimization of the model parameters using the well known Efficient Global Optimization (EGO) algorithm.  In essence this uses a nested Kriging Model to predict which parameters should be used to build the next model.&lt;br /&gt;
* Trivial dependencies on the Statistics Toolbox have been removed&lt;br /&gt;
* Added a new smoothness measure (LRMMeasure) that helps to ensure smooth models and reduce erratic bumps.  It works best when combined with other Measures (such as SampleError for ANN models) &lt;br /&gt;
* Models now have a simple evaluateDerivative() method that allows one to easily get gradient information.  The base class implementation is very simple but works. Models can override this method to get more efficient implementations.&lt;br /&gt;
* Added experimental support for the Matlab Parallel Computing Toolbox (local scheduler only).  This means that when the parallelMode option in ContextConfig is switched on, model construction will make use of all available cores/cpu&#039;s.&lt;br /&gt;
* Many speed improvements, some quite significant.&lt;br /&gt;
* Various cleanups and bugfixes&lt;br /&gt;
&lt;br /&gt;
== 6.0.1 - Released 23 August 2008 ==&lt;br /&gt;
&lt;br /&gt;
* Fixed a number of (minor) bugs in the 6.0 release&lt;br /&gt;
&lt;br /&gt;
== 6.0 - Released 6 August 2008 ==&lt;br /&gt;
&lt;br /&gt;
* Many important bugs have been fixed that could have resulted in sub-optimal models&lt;br /&gt;
* Addition of a Model Browser GUI, this allows you to easily &#039;walk&#039; through multi-dimensional models&lt;br /&gt;
* Moved the InitialDesign tag outside of the SUMO tag&lt;br /&gt;
* Some speed improvements&lt;br /&gt;
* Removed support for dummy inputs&lt;br /&gt;
* Measure scores and input/output names are saved inside the models, allowing for more usable plots&lt;br /&gt;
* Added the project directory concept, each example is now self contained in its own directory&lt;br /&gt;
* #simulatorname# can now be used in the run name, it will get replaced	by the real simulator name&lt;br /&gt;
* Input dimensions can be ignored during sampling if the simulator samples them for you. This is useful in EM applications for example where frequency points can be cheap.&lt;br /&gt;
* Logging framework revamped, logs can now be saved on a per run basis&lt;br /&gt;
* The global score calculation has changed! it is a weighted sum of all individual measures. (the weights are configurable but default to 1)&lt;br /&gt;
* Added a simple polynomial model where the orders can be chosen manually&lt;br /&gt;
* Countless cleanups, minor bugfixes and feature enhancements&lt;br /&gt;
&lt;br /&gt;
== 5.0 - Released 8 April 2008 ==&lt;br /&gt;
&lt;br /&gt;
* In April 2008, the first public release of the &#039;&#039;&#039;Surrogate Modeling (SUMO) Toolbox&#039;&#039;&#039; (v5.0) occurred. &lt;br /&gt;
* A major new release with countless fixes, improvements, new sampling and modeling algorithms, and much more.&lt;br /&gt;
&lt;br /&gt;
List of changes:&lt;br /&gt;
&lt;br /&gt;
* Fixed the &#039;Known bugs&#039; for v4.2 (see Wiki)&lt;br /&gt;
* data points now have priorities (assigned by the sample selectors)&lt;br /&gt;
* Vastly reworked and improved the sample evaluator framework&lt;br /&gt;
** robust handling of failed or &#039;lost&#039; data points&lt;br /&gt;
** pluggable input queue infrastructure to make advanced scheduling policies possible&lt;br /&gt;
* The number of samples to select each iteration is now selected dynamically, based on the time needed for modeling, the length of one simulation, the number of compute nodes available, ... A user specified upper bound can till be specified of course.&lt;br /&gt;
* Model plots are now in the original space instead of the normalized ([-1 1]) space&lt;br /&gt;
* The default error function is now the root relative square error (= a global relative error)&lt;br /&gt;
* Intelligent seeding of each new model parameter optimization iteration. This means the model parameter space is searched much more efficiently and completely&lt;br /&gt;
* Added a fast Neural Network Modeler based on FANN (http://fann.sf.net)&lt;br /&gt;
* Added a Neural Network Modeler based on NNSYSID (http://www.iau.dtu.dk/research/control/nnsysid.html)&lt;br /&gt;
* The LS-SVM model type has been merged with the SVM model type.  The SVM model now supports three backends: libSVM, SVMlight, and lssvm&lt;br /&gt;
* Added a SampleSelector using infill sampling criterions (ISC).&lt;br /&gt;
** The expected improvement from EGO/superEGO is provided among others. (only usable with Kriging and RBF)&lt;br /&gt;
* More robust handling of SSH sessions when running simulators on a remote cluster&lt;br /&gt;
* The TestSamples measure has been renamed to ValidationSet&lt;br /&gt;
* The Polynomial model type has been renamed to the more apt Rational model&lt;br /&gt;
* The grid and voronoi sample selectors have been renamed to Error and Density respectively&lt;br /&gt;
* Drastically reduced memory usage when performing many runs with multiple datasets (datasets are cached)&lt;br /&gt;
* Added utility functions for easily summarizing profiler data from a large number of runs&lt;br /&gt;
* Lots of speed improvements in the gradient sample selector&lt;br /&gt;
* The default settings have been harmonized and much improved&lt;br /&gt;
* The (LS)SVM parameter space is now searched in log10 instead of ln space&lt;br /&gt;
* Added a TestMinimum measure &lt;br /&gt;
** compares the minimum of the surrogate model against a predefined value (for instance a known minimum)&lt;br /&gt;
* Added a MinimumProfiler&lt;br /&gt;
** tracks the minimum of the surrogate model versus the number of iterations&lt;br /&gt;
* Movie creation now works on all supported platforms&lt;br /&gt;
* Added an optimizer class hierarchy for solving subproblems transparantly&lt;br /&gt;
* Cleaned up the structure of all the model classes so they no longer contain an interface object.  This was confusing and led to error prone code.  Virtually all subsref and subassgn implementations have also been removed.&lt;br /&gt;
* The MinMax measure is now enabled by default&lt;br /&gt;
* The Optimization framework was removed (and replaced) for various reasons, see: http://sumowiki.intec.ugent.be/index.php/FAQ#What_about_surrogate_driven_optimization.3F&lt;br /&gt;
* Fixed the file output of the profiler, formatting is correct now&lt;br /&gt;
* New implementation of a maximin latin hypercube design&lt;br /&gt;
** Minimizes pairwise correlation&lt;br /&gt;
** Minimizes intersite distance&lt;br /&gt;
* Removed dependency of factorial design on the statistics toolbox&lt;br /&gt;
* Added a plotOptions tag, this allows for more customisability of model plots (grey scale, light effects, ...)&lt;br /&gt;
* Profiler plots can now also be saved as JPG, PNG, EPS, PDF, PS and SVG&lt;br /&gt;
* Countless cleanups, minor bugfixes and feature enhancements&lt;br /&gt;
&lt;br /&gt;
== 4.2 - Released 18 October 2007 ==&lt;br /&gt;
&lt;br /&gt;
* Fixed the &#039;Known bugs&#039; for v4.1 (see Wiki)&lt;br /&gt;
* Simulators can be passed options through an &amp;lt;Options&amp;gt; tag&lt;br /&gt;
* Added a fixed model builder so you can manually force which model parameters to use&lt;br /&gt;
* Removed ProActive dependency for the SGE distributed backend&lt;br /&gt;
* Improved Makefile under unix/linux&lt;br /&gt;
* Data produced by simulators no longer needs to be pre-scaled to [-1 1], this can be done automatically from the simulator configuration file&lt;br /&gt;
* Deprecated the optimization framework. It is currently under re-design and a better, more integrated version, will be released with the next toolbox version.&lt;br /&gt;
* Lots of cleanups, minor bugfixes and small feature enhancements&lt;br /&gt;
* In October 2007, the development of the M3-Toolbox was discontinued.&lt;br /&gt;
&lt;br /&gt;
== 4.1 - Released 27 July 2007 ==&lt;br /&gt;
&lt;br /&gt;
* Fixed the &#039;Known bugs&#039; for v4.0 (see Wiki)&lt;br /&gt;
* Vastly improved test sample distribution if a test set is created on the fly&lt;br /&gt;
* Gradient sample selector now works with complex outputs and has improved neighbourhood selection&lt;br /&gt;
* Speed and usability improvements in the profiler framework&lt;br /&gt;
* Improvements in the profiler DockedView widget (added a right click context menu)&lt;br /&gt;
* Addition of some new examples&lt;br /&gt;
* Added an option (on by default) that selects a certain percentage of the grid sample selector&#039;s points randomly, making the algorithm more robust&lt;br /&gt;
* Some cleanups, minor bugfixes and feature enhancements&lt;br /&gt;
&lt;br /&gt;
== 4.0 - Released 22 June 2007 ==&lt;br /&gt;
&lt;br /&gt;
* IMPORTANT: the best model score is now 0 instead of 1, this is more intuitive&lt;br /&gt;
* Reworked and improved the model scoring mechanism, now based on a pareto analysis.  This makes it possible to combine multpile measures in a sensible way.&lt;br /&gt;
* Added a proof of concept surrogate driven optimization framework.  Note this is an initial implementation which works, but don&#039;t expect state of the art results.&lt;br /&gt;
* Cleanup and refactoring of the profiler framework&lt;br /&gt;
* The profiling of model parameters has been totally reworked and this can now easily be tracked in a nice GUI widget&lt;br /&gt;
* Cleanup of error function logic so you can now easily use different error functions (relative, RMS, ...) in the measures&lt;br /&gt;
* Improved model plotting&lt;br /&gt;
* Support for the SVMlight library (you must download it yourself in order to use it)&lt;br /&gt;
* Added a MinMax measure which can be used to suppress spikes in rational models&lt;br /&gt;
* Support for extinction prevention in the heterogenetic modeler&lt;br /&gt;
* Fixed warnings (and in some cases errors) when loading models from disk&lt;br /&gt;
* Respect the maximum running time more accurately&lt;br /&gt;
* Many cleanups, minor bugfixes and feature enhancements&lt;br /&gt;
&lt;br /&gt;
== 3.3 - Released 2 May 2007 ==&lt;br /&gt;
&lt;br /&gt;
* Fixed incorrect summary at the end of a run&lt;br /&gt;
* Fixed bug due to duplicate sample points&lt;br /&gt;
* Ability to evaluate multiple samples in parallel locally (support for dual/multi-core machines)&lt;br /&gt;
* Speedups when reading in datasets&lt;br /&gt;
* Added 2 new modelbuilders that optimize the parameters using;&lt;br /&gt;
** Pattern Search (requires the Matlab direct search toolbox)&lt;br /&gt;
** Simulated Annealing (requires Matlab v7.4 and the direct search toolbox)&lt;br /&gt;
** The Matlab Optimization Toolbox (includes different gradient based methods like BGFS)&lt;br /&gt;
* A new density based sample selction algorithm (VoronoiSampleSelector)&lt;br /&gt;
* New simulator examples to test with&lt;br /&gt;
* Addition of a profiler to generate levelplots&lt;br /&gt;
* Ability to generate Matlab API documentation using m2html&lt;br /&gt;
* New neural network training algorithms based on Differential Evolution and Particle Swarm Optimization&lt;br /&gt;
* It is now possible to call the toolbox with specific samples/values directly, e.g., go(&#039;myConfigFile.xml&#039;,xValues,yValues);&lt;br /&gt;
* Many minor bugfixes and feature enhancements&lt;br /&gt;
&lt;br /&gt;
== 3.2 - Released 9 Mar 2007 ==&lt;br /&gt;
&lt;br /&gt;
* Many important bugfixes&lt;br /&gt;
* Documentation improvements&lt;br /&gt;
* Fully working support for RBF models&lt;br /&gt;
* New measure profilers that track the errors on measures&lt;br /&gt;
* Many new predefined functions and datasets to test with.  We now have over 50 examples!&lt;br /&gt;
&lt;br /&gt;
==  3.1 - Released 28 Feb 2007 ==&lt;br /&gt;
&lt;br /&gt;
* Small bugfixes and usability improvements&lt;br /&gt;
* Improved documentation&lt;br /&gt;
* Working implementation of a heterogenous evolutionary modelbuilder&lt;br /&gt;
* More examples&lt;br /&gt;
&lt;br /&gt;
== 3.0 - Released 14 Feb 2007 ==&lt;br /&gt;
&lt;br /&gt;
* Availability of pre-built binaries&lt;br /&gt;
* Extensive refactoring and code cleanups&lt;br /&gt;
* Many bugfixes and usability improvements&lt;br /&gt;
* Resilience against simulator crashes&lt;br /&gt;
* Ability to set the maximum running time for one sample evaluation&lt;br /&gt;
* Vastly improved Genetic model builder + a neural network implementation&lt;br /&gt;
* Addition of a RandomModelBuilder to use as a baseline benchmark&lt;br /&gt;
* Possible to add dummy input variables or to model only a subset of the available inputs while clamping others&lt;br /&gt;
* Improved multiple output support&lt;br /&gt;
** outputs can be modeled in parallel&lt;br /&gt;
** each output can be configured separately (eg. per output: model type, accuracy requirements (measure), sample selection algorithm, complex handling flag, etc) &lt;br /&gt;
** mutliple outputs can be combined into one model if the model type supports this&lt;br /&gt;
* Noisy (gaussian, outliers, ...) versions of a given output can be automatically added &lt;br /&gt;
* New and improved directory structure for output data&lt;br /&gt;
* New model types:&lt;br /&gt;
** Kriging (based on the DACE MATLAB Kriging Toolbox by Lophaven, Nielsen and Sondergaard)&lt;br /&gt;
** Splines (based on the MATLAB Splines Toolbox, only for 1D and 2D)&lt;br /&gt;
* Now matlab scripts can be used as datasources (simulators) as well&lt;br /&gt;
* New initial experimental design&lt;br /&gt;
** Based on a dataset&lt;br /&gt;
** Combination of existing designs&lt;br /&gt;
** Based on the complexity of different 1D fits&lt;br /&gt;
* Addition of new datasets and predefined functions as modeling examples&lt;br /&gt;
&lt;br /&gt;
== 2.0 - Released 15 Nov 2006 ==&lt;br /&gt;
&lt;br /&gt;
* Initial release of the M3-Toolbox - open source&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=About&amp;diff=5926</id>
		<title>About</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=About&amp;diff=5926"/>
		<updated>2015-03-17T09:24:12Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== History ==&lt;br /&gt;
In 2004, research within the (former) COMS research group, led by professor [http://www.sumo.intec.ugent.be/?q=tomd Tom Dhaene], was focused on developing efficient, adaptive and accurate algorithms for polynomial and rational modeling of linear time-invariant (LTI) systems. This work resulted in a set of Matlab scripts that were used as a testing ground for new ideas and concepts. Research progressed, and with time these scripts were re-worked and refactored into one coherent Matlab toolbox, tentatively named the Multivariate MetaModeling (M3) Toolbox. The first public release of the toolbox (v2.0) occurred in November 2006. In October 2007, the development of the M3 Toolbox was discontinued.&lt;br /&gt;
&lt;br /&gt;
[[Image:Sumo.jpg|150 px|right|blindDACE Toolbox]]&lt;br /&gt;
In April 2008, the first public release of the Surrogate Modeling (SUMO) Toolbox (v5.0) occurred.&lt;br /&gt;
&lt;br /&gt;
For a list of changes since then refer to the [[Changelog]] and [[Whats new]] pages.&lt;br /&gt;
&lt;br /&gt;
== Intended use ==&lt;br /&gt;
&lt;br /&gt;
=== Global Surrogate Models ===&lt;br /&gt;
The SUMO Toolbox was originally designed to solve the following problem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&#039;&#039;Automatically generate a highly accurate surrogate model (= a regression model) for a computational expensive simulation code&lt;br /&gt;
&amp;lt;br&amp;gt;requiring as little data points and as little user-interaction as possible.&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition the toolbox provides powerful, adaptive algorithms and a whole suite of model types for&lt;br /&gt;
* data fitting problems (regression, function approximation, curve fitting)&lt;br /&gt;
* response surface modeling (RSM)&lt;br /&gt;
* scattered data interpolation&lt;br /&gt;
* model selection&lt;br /&gt;
* Design Of Experiments (DoE)&lt;br /&gt;
* model parameter optimization, e.g., finding the optimal neural network topology, SVM kernel parameters, rational function order, etc. (= hyperparameter optimization)&lt;br /&gt;
* iterative adaptive sample selection (also known as sequential design or active learning)&lt;br /&gt;
&lt;br /&gt;
Note that the SUMO toolbox is able to drive the simulation code directly.&lt;br /&gt;
&lt;br /&gt;
For domain experts or engineers the SUMO Toolbox provides a flexible, pluggable platform to which the response surface modeling task can be delegated. For researchers in surrogate modeling it provides a common framework to implement, test and benchmark new modeling and sampling algorithms.&lt;br /&gt;
&lt;br /&gt;
See the Wikipedia [http://en.wikipedia.org/wiki/Surrogate_model surrogate model] page to find out more.&lt;br /&gt;
&lt;br /&gt;
=== Surrogate Driven Optimization ===&lt;br /&gt;
While the main focus of the SUMO Toolbox is to create accurate global surrogate models, it can be used for other goals too.&lt;br /&gt;
&lt;br /&gt;
For instance, the toolbox can be used to create consecutive local surrogate models for optimization purposes. The information obtained from the local surrogate models is used to guide the adaptive sampling process to the global optimum.&lt;br /&gt;
&lt;br /&gt;
A good sample strategy for surrogate driven optimization seeks a balance between local search and global search, or refining the surrogate model and finding the optimum.&lt;br /&gt;
Such a sample strategy is implemented (akin to (Super)EGO), see the different [[Sample_Selectors#expectedImprovement|sample selectors]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Dynamic systems or Time series prediction ===&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#What_about_dynamical.2C_time_dependent_data.3F]].&lt;br /&gt;
&lt;br /&gt;
=== Classification ===&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#What_about_classification_problems.3F]].&lt;br /&gt;
&lt;br /&gt;
== Application range ==&lt;br /&gt;
The SUMO Toolbox has already been applied successfully to a wide range of problems from domains as diverse as aerodynamics, geology, metallurgy, electro-magnetics (EM), electronics, engineering and economics.  The SUMO Toolbox can be applied to any situation where the problem can be described as a function that maps a set of inputs onto a set of outputs.  We generally refer to this function as the [[Simulator]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:sumotask.png|center|SUMO-Toolbox : Generating an approximation for a reference model]]&lt;br /&gt;
&lt;br /&gt;
Across the different problems to which we have applied the toolbox, the input dimension has ranged from 1 to 130 and the output dimension from 1 to 70 (including both complex and real valued outputs). The number of data points has ranged from as little as 15 to as many as 100000.&lt;br /&gt;
&lt;br /&gt;
== Design goals ==&lt;br /&gt;
&lt;br /&gt;
The SUMO Toolbox was designed with a number of goals in mind:&lt;br /&gt;
&lt;br /&gt;
* A flexible tool that integrates different modeling methods and does not tie the user down to one particular set of problems. Reliance on domain specific features should be avoided.&lt;br /&gt;
&lt;br /&gt;
* The focus should be on adaptivity, i.e., relieving the burden on the domain expert as much as possible. Given a simulation model, the software should produce an accurate surrogate model with minimal user interaction. This also includes easily integrating with the existing design environment.&lt;br /&gt;
&lt;br /&gt;
* At the same time keeping in mind that there is no such thing as a `one-size-fits-all&#039;. Different problems need to be modeled differently and require different a priori process knowledge. Therefore the software should be modular and easily extensible to new methods.&lt;br /&gt;
&lt;br /&gt;
* Engineers or domain experts do not tend to trust a black box system that generates models but is unclear about the reasons why a particular model should be preferred. Therefore an important design goal was that the expert user should be able to have full manual control over the modeling process if necessary. In addition the toolbox should support fine grain logging and profiling capabilities so its modeling and sampling decisions can be retraced.&lt;br /&gt;
&lt;br /&gt;
Given this design philosophy, the toolbox can cater to both the researchers working on novel surrogate modeling techniques as well as to the engineers who need the surrogate model as part of their design process. For the former, the toolbox provides a common platform on which to deploy, test, and compare new modeling algorithms and sampling techniques. For the latter, the software functions as a highly configurable and flexible component to which surrogate model construction can be delegated, easing the burden of the user and enhancing productivity.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
The main features of the toolbox are listed below.  For an overview of recent changes see the [[Whats new]] page.  A detailed list of changes can be found in the [[Changelog]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
! Implementation Language &lt;br /&gt;
| Matlab, Java, and where applicable C, C++&lt;br /&gt;
|- &lt;br /&gt;
! Design patterns&lt;br /&gt;
| Fully object oriented, with the focus on clean design and encapsulation.&lt;br /&gt;
|- &lt;br /&gt;
! Minimum Requirements&lt;br /&gt;
| See the [[system requirements]] page&lt;br /&gt;
|-&lt;br /&gt;
! Supported data sources*&lt;br /&gt;
| Local executable/script, simulation engine, Java class, Matlab script, dataset (txt file) (see [[Interfacing with the toolbox]])&lt;br /&gt;
|-&lt;br /&gt;
! Supported data types&lt;br /&gt;
| Supports multi-dimensional inputs and outputs. Outputs can be any combination of real/complex.&lt;br /&gt;
|-&lt;br /&gt;
! Supported problem types&lt;br /&gt;
| Regression ([[FAQ#What_about_classification_problems.3F|classification]], [[FAQ#What_about_dynamical.2C_time_dependent_data.3F|time series prediction]])&lt;br /&gt;
|-&lt;br /&gt;
! Configuration&lt;br /&gt;
| Extensively configurable through one main [[FAQ#What_is_XML.3F|XML]] configuration file.&lt;br /&gt;
|-&lt;br /&gt;
! Flexibility&lt;br /&gt;
| Virtually every component of the modeling process can be configured, replaced or extended by a user specific, custom implementation&lt;br /&gt;
|-&lt;br /&gt;
! Predefined accuracy&lt;br /&gt;
| The toolbox will run until the user required accuracy has been reached, the maximum number of samples has been exceeded or a timeout has occurred&lt;br /&gt;
|-&lt;br /&gt;
! Model Types*&lt;br /&gt;
| Out of the box support for:&lt;br /&gt;
* Polynomial/Rational functions&lt;br /&gt;
* Feedforward Neural Networks, 3 implementations&lt;br /&gt;
** One based on the [http://www.mathworks.com/products/neuralnet/ Matlab Neural Network toolbox]&lt;br /&gt;
** One based on the [http://leenissen.dk/fann/ Fast Artificial Neural Network Library (FANN)]&lt;br /&gt;
** One based on the [http://www.iau.dtu.dk/research/control/nnsysid.html NNSYSID Toolbox]&lt;br /&gt;
** One based on Extreme Learning Machine (ELM)&lt;br /&gt;
* Radial Basis Function (RBF) Models&lt;br /&gt;
* RBF Neural Networks&lt;br /&gt;
* Gaussian Process Models (based on [http://www.GaussianProcess.org/gpml/code GPML])&lt;br /&gt;
* Kriging Models (two custom implementations)&lt;br /&gt;
* Blind Kriging Models&lt;br /&gt;
* Smoothing spline models&lt;br /&gt;
* Support Vector Machines (SVM)&lt;br /&gt;
** Least Squares SVM (based on [http://www.esat.kuleuven.ac.be/sista/lssvmlab/ LS-SVMlab])&lt;br /&gt;
** epsilon-SVM (based on [http://www.csie.ntu.edu.tw/~cjlin/libsvm/ LIBSVM] or [http://svmlight.joachims.org/ SVMlight])&lt;br /&gt;
** nu-SVM (based on [http://www.csie.ntu.edu.tw/~cjlin/libsvm/ LIBSVM])&lt;br /&gt;
* Support for model types from the [http://www.cs.waikato.ac.nz/ml/weka/ WEKA] data mining library &lt;br /&gt;
** Classification, regression and clustering algorithms present in WEKA can be used simply by adding entries in the configuration. Please refer to the &#039;weka&#039; ModelBuilder in the demo configuration file. A list of algorithms can be found [http://wiki.pentaho.com/display/DATAMINING/Data+Mining+Algorithms+and+Tools+in+Weka here].&lt;br /&gt;
|-&lt;br /&gt;
! Model parameter optimization algorithms*&lt;br /&gt;
| Pattern Search, EOG, Simulated Annealing, Genetic Algorithm, BGFS, DIRECT, Particle Swarm Optimization (PSO), NSGA-II ...&lt;br /&gt;
|-&lt;br /&gt;
! Sample selection algorithms (=sequential design, active learning)*&lt;br /&gt;
| Random, error-based, density-based, gradient-based, and many different hybrids&lt;br /&gt;
|-&lt;br /&gt;
! Experimental design*&lt;br /&gt;
| Latin Hypercube Sampling, Central Composite, Box-Behnken, random, user defined, full factorial&lt;br /&gt;
|-&lt;br /&gt;
! Model selection measures*&lt;br /&gt;
| Validation set, cross-validation, leave-one-out, model difference, AIC (also in a multi-objective context, see [[Multi-Objective Modeling]]), LRM&lt;br /&gt;
|-&lt;br /&gt;
! Sample Evaluation*&lt;br /&gt;
| On the local machine (taking advantage of multi-core CPUs) or in parallel on a cluster/grid&lt;br /&gt;
|-&lt;br /&gt;
! Supported distributed middlewares*&lt;br /&gt;
| [http://gridengine.sunsource.net/ Sun Grid Engine], LCG Grid middleware (both accessed through a SSH accessible frontnode)&lt;br /&gt;
|-&lt;br /&gt;
! Logging&lt;br /&gt;
| Extensive logging to enable close monitoring of the modeling process.  Logging granularity is fully configurable and log streams can be easily redirected (to file, console, a remote machine, ...).&lt;br /&gt;
|-&lt;br /&gt;
! Profiling*&lt;br /&gt;
| Extensive profiling framework for easy gathering (and plotting) of modeling metrics (average sample evaluation time, hyperparameter optimization trace, ...)&lt;br /&gt;
|-&lt;br /&gt;
! Easy tracking of modeling progress&lt;br /&gt;
| Automatic storing of best models and their plots. Ability to automatically generate a movie of the sequence of plots.&lt;br /&gt;
|-&lt;br /&gt;
! Model browser GUI&lt;br /&gt;
| A graphical tool is available to easily visualize high dimensional models and browse through data ([[Model Visualization GUI|more information here]])&lt;br /&gt;
|-&lt;br /&gt;
! Available test problems*&lt;br /&gt;
| Out of the box support for many built-in functions (Ackley, Camel Back, Goldstein-Price, ...) and datasets (Abalone, Boston Housing, FishLength, ...) from various application domains. Including a number of datasets (and some simulation code) from electronics. In total over 50 examples are available.&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| [[License terms]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Custom implementations can easily be added&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
A number of screenshots to give a feel of the SUMO Toolbox. Note these screenshots do not necessarily reflect the latest toolbox version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:octagon.png&lt;br /&gt;
Image:metamodel-sumo-hourglass.png&lt;br /&gt;
Image:SUMO_Toolbox1.png&lt;br /&gt;
Image:SUMO_Toolbox2.png&lt;br /&gt;
Image:SUMO_Toolbox3.png&lt;br /&gt;
Image:SUMO_Toolbox4.png&lt;br /&gt;
Image:ISCSampleSelector1.png&lt;br /&gt;
Image:ISCSampleSelector2.png&lt;br /&gt;
Image:SUMO_Gui1.png&lt;br /&gt;
Image:SUMO_Gui2.png&lt;br /&gt;
Image:Contour1.png&lt;br /&gt;
Image:TwoDim1.png&lt;br /&gt;
Image:TwoDim2.png&lt;br /&gt;
Image:ThreeDim1.png&lt;br /&gt;
Image:ThreeDim2.png‎&lt;br /&gt;
Image:ThreeDim3.png&lt;br /&gt;
Image:FEBioTrekEI.png&lt;br /&gt;
Image:FEBioTrekFunc.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Movies ==&lt;br /&gt;
&lt;br /&gt;
[[Image:youtube-logo.jpg|right|70px|link=http://www.youtube.com/sumolab|]] A number of video clips generated by or related to the SUMO Toolbox [http://www.youtube.com/sumolab can be found at our YouTube channel].  Feel free to make suggestions or leave comments.&lt;br /&gt;
&lt;br /&gt;
Note these movies do not necessarily reflect the latest toolbox version. Improvements and/or interface adjustments may have been made since then.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
An in depth overview of the rationale and philosophy, including a treatment of the software architecture underlying the SUMO Toolbox is available in the form of a PhD dissertation.  A copy of this dissertation [[Media:2010Gorissen_SUMO.pdf|is available here]].&lt;br /&gt;
&lt;br /&gt;
In addition the following poster and presentation give a high level overview:&lt;br /&gt;
&lt;br /&gt;
* Poster: [[Media:SUMO_poster.pdf|SUMO poster]]&lt;br /&gt;
* Presentation: [[Media:SUMO_presentation.pdf|SUMO slides]]&lt;br /&gt;
&lt;br /&gt;
A blog covering related research can be found here [http://sumolab.blogspot.com http://sumolab.blogspot.com].&lt;br /&gt;
&lt;br /&gt;
== Citations ==&lt;br /&gt;
&lt;br /&gt;
See [[Citing|Citing the toolbox]].&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=About&amp;diff=5925</id>
		<title>About</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=About&amp;diff=5925"/>
		<updated>2015-03-17T09:23:16Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== History ==&lt;br /&gt;
In 2004, research within the (former) COMS research group, led by professor [http://www.sumo.intec.ugent.be/?q=tomd Tom Dhaene], was focused on developing efficient, adaptive and accurate algorithms for polynomial and rational modeling of linear time-invariant (LTI) systems. This work resulted in a set of Matlab scripts that were used as a testing ground for new ideas and concepts. Research progressed, and with time these scripts were re-worked and refactored into one coherent Matlab toolbox, tentatively named the Multivariate MetaModeling (M3) Toolbox. The first public release of the toolbox (v2.0) occurred in November 2006. In October 2007, the development of the M3 Toolbox was discontinued.&lt;br /&gt;
&lt;br /&gt;
[[Image:Sumo.jpg|150 px|right|blindDACE Toolbox]]&lt;br /&gt;
In April 2008, the first public release of the Surrogate Modeling (SUMO) Toolbox (v5.0) occurred.&lt;br /&gt;
&lt;br /&gt;
For a list of changes since then refer to the [[Changelog]] and [[Whats new]] pages.&lt;br /&gt;
&lt;br /&gt;
== Intended use ==&lt;br /&gt;
&lt;br /&gt;
=== Global Surrogate Models ===&lt;br /&gt;
The SUMO Toolbox was originally designed to solve the following problem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&#039;&#039;Automatically generate a highly accurate surrogate model (= a regression model) for a computational expensive simulation code&lt;br /&gt;
&amp;lt;br&amp;gt;requiring as little data points and as little user-interaction as possible.&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition the toolbox provides powerful, adaptive algorithms and a whole suite of model types for&lt;br /&gt;
* data fitting problems (regression, function approximation, curve fitting)&lt;br /&gt;
* response surface modeling (RSM)&lt;br /&gt;
* scattered data interpolation&lt;br /&gt;
* model selection&lt;br /&gt;
* Design Of Experiments (DoE)&lt;br /&gt;
* model parameter optimization, e.g., finding the optimal neural network topology, SVM kernel parameters, rational function order, etc. (= hyperparameter optimization)&lt;br /&gt;
* iterative adaptive sample selection (also known as sequential design or active learning)&lt;br /&gt;
&lt;br /&gt;
Note that the SUMO toolbox is able to drive the simulation code directly.&lt;br /&gt;
&lt;br /&gt;
For domain experts or engineers the SUMO Toolbox provides a flexible, pluggable platform to which the response surface modeling task can be delegated. For researchers in surrogate modeling it provides a common framework to implement, test and benchmark new modeling and sampling algorithms.&lt;br /&gt;
&lt;br /&gt;
See the Wikipedia [http://en.wikipedia.org/wiki/Surrogate_model surrogate model] page to find out more.&lt;br /&gt;
&lt;br /&gt;
=== Surrogate Driven Optimization ===&lt;br /&gt;
While the main focus of the SUMO Toolbox is to create accurate global surrogate models, it can be used for other goals too.&lt;br /&gt;
&lt;br /&gt;
For instance, the toolbox can be used to create consecutive local surrogate models for optimization purposes. The information obtained from the local surrogate models is used to guide the adaptive sampling process to the global optimum.&lt;br /&gt;
&lt;br /&gt;
A good sample strategy for surrogate driven optimization seeks a balance between local search and global search, or refining the surrogate model and finding the optimum.&lt;br /&gt;
Such a sample strategy is implemented (akin to (Super)EGO), see the different [[Sample_Selectors#expectedImprovement|sample selectors]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Dynamic systems or Time series prediction ===&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#What_about_dynamical.2C_time_dependent_data.3F]].&lt;br /&gt;
&lt;br /&gt;
=== Classification ===&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#What_about_classification_problems.3F]].&lt;br /&gt;
&lt;br /&gt;
== Application range ==&lt;br /&gt;
The SUMO Toolbox has already been applied successfully to a wide range of problems from domains as diverse as aerodynamics, geology, metallurgy, electro-magnetics (EM), electronics, engineering and economics.  The SUMO Toolbox can be applied to any situation where the problem can be described as a function that maps a set of inputs onto a set of outputs.  We generally refer to this function as the [[Simulator]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:sumotask.png|center|SUMO-Toolbox : Generating an approximation for a reference model]]&lt;br /&gt;
&lt;br /&gt;
Across the different problems to which we have applied the toolbox, the input dimension has ranged from 1 to 130 and the output dimension from 1 to 70 (including both complex and real valued outputs). The number of data points has ranged from as little as 15 to as many as 100000.&lt;br /&gt;
&lt;br /&gt;
== Design goals ==&lt;br /&gt;
&lt;br /&gt;
The SUMO Toolbox was designed with a number of goals in mind:&lt;br /&gt;
&lt;br /&gt;
* A flexible tool that integrates different modeling methods and does not tie the user down to one particular set of problems. Reliance on domain specific features should be avoided.&lt;br /&gt;
&lt;br /&gt;
* The focus should be on adaptivity, i.e., relieving the burden on the domain expert as much as possible. Given a simulation model, the software should produce an accurate surrogate model with minimal user interaction. This also includes easily integrating with the existing design environment.&lt;br /&gt;
&lt;br /&gt;
* At the same time keeping in mind that there is no such thing as a `one-size-fits-all&#039;. Different problems need to be modeled differently and require different a priori process knowledge. Therefore the software should be modular and easily extensible to new methods.&lt;br /&gt;
&lt;br /&gt;
* Engineers or domain experts do not tend to trust a black box system that generates models but is unclear about the reasons why a particular model should be preferred. Therefore an important design goal was that the expert user should be able to have full manual control over the modeling process if necessary. In addition the toolbox should support fine grain logging and profiling capabilities so its modeling and sampling decisions can be retraced.&lt;br /&gt;
&lt;br /&gt;
Given this design philosophy, the toolbox can cater to both the researchers working on novel surrogate modeling techniques as well as to the engineers who need the surrogate model as part of their design process. For the former, the toolbox provides a common platform on which to deploy, test, and compare new modeling algorithms and sampling techniques. For the latter, the software functions as a highly configurable and flexible component to which surrogate model construction can be delegated, easing the burden of the user and enhancing productivity.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
The main features of the toolbox are listed below.  For an overview of recent changes see the [[Whats new]] page.  A detailed list of changes can be found in the [[Changelog]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
! Implementation Language &lt;br /&gt;
| Matlab, Java, and where applicable C, C++&lt;br /&gt;
|- &lt;br /&gt;
! Design patterns&lt;br /&gt;
| Fully object oriented, with the focus on clean design and encapsulation.&lt;br /&gt;
|- &lt;br /&gt;
! Minimum Requirements&lt;br /&gt;
| See the [[system requirements]] page&lt;br /&gt;
|-&lt;br /&gt;
! Supported data sources*&lt;br /&gt;
| Local executable/script, simulation engine, Java class, Matlab script, dataset (txt file) (see [[Interfacing with the toolbox]])&lt;br /&gt;
|-&lt;br /&gt;
! Supported data types&lt;br /&gt;
| Supports multi-dimensional inputs and outputs. Outputs can be any combination of real/complex.&lt;br /&gt;
|-&lt;br /&gt;
! Supported problem types&lt;br /&gt;
| Regression ([[FAQ#What_about_classification_problems.3F|classification]], [[FAQ#What_about_dynamical.2C_time_dependent_data.3F|time series prediction]])&lt;br /&gt;
|-&lt;br /&gt;
! Configuration&lt;br /&gt;
| Extensively configurable through one main [[FAQ#What_is_XML.3F|XML]] configuration file.&lt;br /&gt;
|-&lt;br /&gt;
! Flexibility&lt;br /&gt;
| Virtually every component of the modeling process can be configured, replaced or extended by a user specific, custom implementation&lt;br /&gt;
|-&lt;br /&gt;
! Predefined accuracy&lt;br /&gt;
| The toolbox will run until the user required accuracy has been reached, the maximum number of samples has been exceeded or a timeout has occurred&lt;br /&gt;
|-&lt;br /&gt;
! Model Types*&lt;br /&gt;
| Out of the box support for:&lt;br /&gt;
* Polynomial/Rational functions&lt;br /&gt;
* Feedforward Neural Networks, 3 implementations&lt;br /&gt;
** One based on the [http://www.mathworks.com/products/neuralnet/ Matlab Neural Network toolbox]&lt;br /&gt;
** One based on the [http://leenissen.dk/fann/ Fast Artificial Neural Network Library (FANN)]&lt;br /&gt;
** One based on the [http://www.iau.dtu.dk/research/control/nnsysid.html NNSYSID Toolbox]&lt;br /&gt;
** One based on Extreme Learning Machine (ELM)&lt;br /&gt;
* Radial Basis Function (RBF) Models&lt;br /&gt;
* RBF Neural Networks&lt;br /&gt;
* Gaussian Process Models (based on [http://www.GaussianProcess.org/gpml/code GPML])&lt;br /&gt;
* Kriging Models (two custom implementations)&lt;br /&gt;
* Blind Kriging Models&lt;br /&gt;
* Smoothing spline models&lt;br /&gt;
* Support Vector Machines (SVM)&lt;br /&gt;
** Least Squares SVM (based on [http://www.esat.kuleuven.ac.be/sista/lssvmlab/ LS-SVMlab])&lt;br /&gt;
** epsilon-SVM (based on [http://www.csie.ntu.edu.tw/~cjlin/libsvm/ LIBSVM] or [http://svmlight.joachims.org/ SVMlight])&lt;br /&gt;
** nu-SVM (based on [http://www.csie.ntu.edu.tw/~cjlin/libsvm/ LIBSVM])&lt;br /&gt;
* Support for model types from the [http://www.cs.waikato.ac.nz/ml/weka/ WEKA] data mining library &lt;br /&gt;
** Classification, regression and clustering algorithms present in WEKA can be used simply by adding entries in the configuration. Please refer to the &#039;weka&#039; ModelBuilder in the demo configuration file. A list of algorithms can be found [http://wiki.pentaho.com/display/DATAMINING/Data+Mining+Algorithms+and+Tools+in+Weka here].&lt;br /&gt;
|-&lt;br /&gt;
! Model parameter optimization algorithms*&lt;br /&gt;
| Pattern Search, EOG, Simulated Annealing, Genetic Algorithm, BGFS, DIRECT, Particle Swarm Optimization (PSO), NSGA-II ...&lt;br /&gt;
|-&lt;br /&gt;
! Sample selection algorithms (=sequential design, active learning)*&lt;br /&gt;
| Random, error-based, density-based, gradient-based, and many different hybrids&lt;br /&gt;
|-&lt;br /&gt;
! Experimental design*&lt;br /&gt;
| Latin Hypercube Sampling, Central Composite, Box-Behnken, random, user defined, full factorial&lt;br /&gt;
|-&lt;br /&gt;
! Model selection measures*&lt;br /&gt;
| Validation set, cross-validation, leave-one-out, model difference, AIC (also in a multi-objective context, see [[Multi-Objective Modeling]]), LRM&lt;br /&gt;
|-&lt;br /&gt;
! Sample Evaluation*&lt;br /&gt;
| On the local machine (taking advantage of multi-core CPUs) or in parallel on a cluster/grid&lt;br /&gt;
|-&lt;br /&gt;
! Supported distributed middlewares*&lt;br /&gt;
| [http://gridengine.sunsource.net/ Sun Grid Engine], LCG Grid middleware (both accessed through a SSH accessible frontnode)&lt;br /&gt;
|-&lt;br /&gt;
! Logging&lt;br /&gt;
| Extensive logging to enable close monitoring of the modeling process.  Logging granularity is fully configurable and log streams can be easily redirected (to file, console, a remote machine, ...).&lt;br /&gt;
|-&lt;br /&gt;
! Profiling*&lt;br /&gt;
| Extensive profiling framework for easy gathering (and plotting) of modeling metrics (average sample evaluation time, hyperparameter optimization trace, ...)&lt;br /&gt;
|-&lt;br /&gt;
! Easy tracking of modeling progress&lt;br /&gt;
| Automatic storing of best models and their plots. Ability to automatically generate a movie of the sequence of plots.&lt;br /&gt;
|-&lt;br /&gt;
! Model browser GUI&lt;br /&gt;
| A graphical tool is available to easily visualize high dimensional models and browse through data ([[Model Visualization GUI|more information here]])&lt;br /&gt;
|-&lt;br /&gt;
! Available test problems*&lt;br /&gt;
| Out of the box support for many built-in functions (Ackley, Camel Back, Goldstein-Price, ...) and datasets (Abalone, Boston Housing, FishLength, ...) from various application domains. Including a number of datasets (and some simulation code) from electronics. In total over 50 examples are available.&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| [[License terms]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Custom implementations can easily be added&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
A number of screenshots to give a feel of the SUMO Toolbox. Note these screenshots do not necessarily reflect the latest toolbox version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:octagon.png&lt;br /&gt;
Image:metamodel-sumo-hourglass.png&lt;br /&gt;
Image:SUMO_Toolbox1.png&lt;br /&gt;
Image:SUMO_Toolbox2.png&lt;br /&gt;
Image:SUMO_Toolbox3.png&lt;br /&gt;
Image:SUMO_Toolbox4.png&lt;br /&gt;
Image:ISCSampleSelector1.png&lt;br /&gt;
Image:ISCSampleSelector2.png&lt;br /&gt;
Image:SUMO_Gui1.png&lt;br /&gt;
Image:SUMO_Gui2.png&lt;br /&gt;
Image:Contour1.png&lt;br /&gt;
Image:TwoDim1.png&lt;br /&gt;
Image:TwoDim2.png&lt;br /&gt;
Image:ThreeDim1.png&lt;br /&gt;
Image:ThreeDim2.png‎&lt;br /&gt;
Image:ThreeDim3.png&lt;br /&gt;
Image:FEBioTrekEI.png&lt;br /&gt;
Image:FEBioTrekFunc.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Movies ==&lt;br /&gt;
&lt;br /&gt;
[[Image:youtube-logo.jpg|right|70px|link=http://www.youtube.com/sumolab|]] A number of video clips generated by or related to the SUMO Toolbox [http://www.youtube.com/sumolab can be found at our YouTube channel].  Feel free to make suggestions or leave comments.&lt;br /&gt;
&lt;br /&gt;
Note these movies do not necessarily reflect the latest toolbox version. Improvements and/or interface adjustments may have been made since then.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
An in depth overview of the rationale and philosophy, including a treatment of the software architecture underlying the SUMO Toolbox is available in the form of a PhD dissertation.  A copy of this dissertation [[Media:2010Gorissen_SUMO.ogg|is available here]].&lt;br /&gt;
&lt;br /&gt;
In addition the following poster and presentation give a high level overview:&lt;br /&gt;
&lt;br /&gt;
* Poster: [[Media:SUMO_poster.pdf|SUMO poster]]&lt;br /&gt;
* Presentation: [[Media:SUMO_presentation.pdf|SUMO slides]]&lt;br /&gt;
&lt;br /&gt;
A blog covering related research can be found here [http://sumolab.blogspot.com http://sumolab.blogspot.com].&lt;br /&gt;
&lt;br /&gt;
== Citations ==&lt;br /&gt;
&lt;br /&gt;
See [[Citing|Citing the toolbox]].&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=About&amp;diff=5924</id>
		<title>About</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=About&amp;diff=5924"/>
		<updated>2015-03-17T09:19:07Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== History ==&lt;br /&gt;
In 2004, research within the (former) COMS research group, led by professor [http://www.sumo.intec.ugent.be/?q=tomd Tom Dhaene], was focused on developing efficient, adaptive and accurate algorithms for polynomial and rational modeling of linear time-invariant (LTI) systems. This work resulted in a set of Matlab scripts that were used as a testing ground for new ideas and concepts. Research progressed, and with time these scripts were re-worked and refactored into one coherent Matlab toolbox, tentatively named the Multivariate MetaModeling (M3) Toolbox. The first public release of the toolbox (v2.0) occurred in November 2006. In October 2007, the development of the M3 Toolbox was discontinued.&lt;br /&gt;
&lt;br /&gt;
[[Image:Sumo.jpg|150 px|right|blindDACE Toolbox]]&lt;br /&gt;
In April 2008, the first public release of the Surrogate Modeling (SUMO) Toolbox (v5.0) occurred.&lt;br /&gt;
&lt;br /&gt;
For a list of changes since then refer to the [[Changelog]] and [[Whats new]] pages.&lt;br /&gt;
&lt;br /&gt;
== Intended use ==&lt;br /&gt;
&lt;br /&gt;
=== Global Surrogate Models ===&lt;br /&gt;
The SUMO Toolbox was originally designed to solve the following problem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&#039;&#039;Automatically generate a highly accurate surrogate model (= a regression model) for a computational expensive simulation code&lt;br /&gt;
&amp;lt;br&amp;gt;requiring as little data points and as little user-interaction as possible.&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition the toolbox provides powerful, adaptive algorithms and a whole suite of model types for&lt;br /&gt;
* data fitting problems (regression, function approximation, curve fitting)&lt;br /&gt;
* response surface modeling (RSM)&lt;br /&gt;
* scattered data interpolation&lt;br /&gt;
* model selection&lt;br /&gt;
* Design Of Experiments (DoE)&lt;br /&gt;
* model parameter optimization, e.g., finding the optimal neural network topology, SVM kernel parameters, rational function order, etc. (= hyperparameter optimization)&lt;br /&gt;
* iterative adaptive sample selection (also known as sequential design or active learning)&lt;br /&gt;
&lt;br /&gt;
Note that the SUMO toolbox is able to drive the simulation code directly.&lt;br /&gt;
&lt;br /&gt;
For domain experts or engineers the SUMO Toolbox provides a flexible, pluggable platform to which the response surface modeling task can be delegated. For researchers in surrogate modeling it provides a common framework to implement, test and benchmark new modeling and sampling algorithms.&lt;br /&gt;
&lt;br /&gt;
See the Wikipedia [http://en.wikipedia.org/wiki/Surrogate_model surrogate model] page to find out more.&lt;br /&gt;
&lt;br /&gt;
=== Surrogate Driven Optimization ===&lt;br /&gt;
While the main focus of the SUMO Toolbox is to create accurate global surrogate models, it can be used for other goals too.&lt;br /&gt;
&lt;br /&gt;
For instance, the toolbox can be used to create consecutive local surrogate models for optimization purposes. The information obtained from the local surrogate models is used to guide the adaptive sampling process to the global optimum.&lt;br /&gt;
&lt;br /&gt;
A good sample strategy for surrogate driven optimization seeks a balance between local search and global search, or refining the surrogate model and finding the optimum.&lt;br /&gt;
Such a sample strategy is implemented (akin to (Super)EGO), see the different [[Sample_Selectors#expectedImprovement|sample selectors]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Dynamic systems or Time series prediction ===&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#What_about_dynamical.2C_time_dependent_data.3F]].&lt;br /&gt;
&lt;br /&gt;
=== Classification ===&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#What_about_classification_problems.3F]].&lt;br /&gt;
&lt;br /&gt;
== Application range ==&lt;br /&gt;
The SUMO Toolbox has already been applied successfully to a wide range of problems from domains as diverse as aerodynamics, geology, metallurgy, electro-magnetics (EM), electronics, engineering and economics.  The SUMO Toolbox can be applied to any situation where the problem can be described as a function that maps a set of inputs onto a set of outputs.  We generally refer to this function as the [[Simulator]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:sumotask.png|center|SUMO-Toolbox : Generating an approximation for a reference model]]&lt;br /&gt;
&lt;br /&gt;
Across the different problems to which we have applied the toolbox, the input dimension has ranged from 1 to 130 and the output dimension from 1 to 70 (including both complex and real valued outputs). The number of data points has ranged from as little as 15 to as many as 100000.&lt;br /&gt;
&lt;br /&gt;
== Design goals ==&lt;br /&gt;
&lt;br /&gt;
The SUMO Toolbox was designed with a number of goals in mind:&lt;br /&gt;
&lt;br /&gt;
* A flexible tool that integrates different modeling methods and does not tie the user down to one particular set of problems. Reliance on domain specific features should be avoided.&lt;br /&gt;
&lt;br /&gt;
* The focus should be on adaptivity, i.e., relieving the burden on the domain expert as much as possible. Given a simulation model, the software should produce an accurate surrogate model with minimal user interaction. This also includes easily integrating with the existing design environment.&lt;br /&gt;
&lt;br /&gt;
* At the same time keeping in mind that there is no such thing as a `one-size-fits-all&#039;. Different problems need to be modeled differently and require different a priori process knowledge. Therefore the software should be modular and easily extensible to new methods.&lt;br /&gt;
&lt;br /&gt;
* Engineers or domain experts do not tend to trust a black box system that generates models but is unclear about the reasons why a particular model should be preferred. Therefore an important design goal was that the expert user should be able to have full manual control over the modeling process if necessary. In addition the toolbox should support fine grain logging and profiling capabilities so its modeling and sampling decisions can be retraced.&lt;br /&gt;
&lt;br /&gt;
Given this design philosophy, the toolbox can cater to both the researchers working on novel surrogate modeling techniques as well as to the engineers who need the surrogate model as part of their design process. For the former, the toolbox provides a common platform on which to deploy, test, and compare new modeling algorithms and sampling techniques. For the latter, the software functions as a highly configurable and flexible component to which surrogate model construction can be delegated, easing the burden of the user and enhancing productivity.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
The main features of the toolbox are listed below.  For an overview of recent changes see the [[Whats new]] page.  A detailed list of changes can be found in the [[Changelog]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
! Implementation Language &lt;br /&gt;
| Matlab, Java, and where applicable C, C++&lt;br /&gt;
|- &lt;br /&gt;
! Design patterns&lt;br /&gt;
| Fully object oriented, with the focus on clean design and encapsulation.&lt;br /&gt;
|- &lt;br /&gt;
! Minimum Requirements&lt;br /&gt;
| See the [[system requirements]] page&lt;br /&gt;
|-&lt;br /&gt;
! Supported data sources*&lt;br /&gt;
| Local executable/script, simulation engine, Java class, Matlab script, dataset (txt file) (see [[Interfacing with the toolbox]])&lt;br /&gt;
|-&lt;br /&gt;
! Supported data types&lt;br /&gt;
| Supports multi-dimensional inputs and outputs. Outputs can be any combination of real/complex.&lt;br /&gt;
|-&lt;br /&gt;
! Supported problem types&lt;br /&gt;
| Regression ([[FAQ#What_about_classification_problems.3F|classification]], [[FAQ#What_about_dynamical.2C_time_dependent_data.3F|time series prediction]])&lt;br /&gt;
|-&lt;br /&gt;
! Configuration&lt;br /&gt;
| Extensively configurable through one main [[FAQ#What_is_XML.3F|XML]] configuration file.&lt;br /&gt;
|-&lt;br /&gt;
! Flexibility&lt;br /&gt;
| Virtually every component of the modeling process can be configured, replaced or extended by a user specific, custom implementation&lt;br /&gt;
|-&lt;br /&gt;
! Predefined accuracy&lt;br /&gt;
| The toolbox will run until the user required accuracy has been reached, the maximum number of samples has been exceeded or a timeout has occurred&lt;br /&gt;
|-&lt;br /&gt;
! Model Types*&lt;br /&gt;
| Out of the box support for:&lt;br /&gt;
* Polynomial/Rational functions&lt;br /&gt;
* Feedforward Neural Networks, 3 implementations&lt;br /&gt;
** One based on the [http://www.mathworks.com/products/neuralnet/ Matlab Neural Network toolbox]&lt;br /&gt;
** One based on the [http://leenissen.dk/fann/ Fast Artificial Neural Network Library (FANN)]&lt;br /&gt;
** One based on the [http://www.iau.dtu.dk/research/control/nnsysid.html NNSYSID Toolbox]&lt;br /&gt;
** One based on Extreme Learning Machine (ELM)&lt;br /&gt;
* Radial Basis Function (RBF) Models&lt;br /&gt;
* RBF Neural Networks&lt;br /&gt;
* Gaussian Process Models (based on [http://www.GaussianProcess.org/gpml/code GPML])&lt;br /&gt;
* Kriging Models (two custom implementations)&lt;br /&gt;
* Blind Kriging Models&lt;br /&gt;
* Smoothing spline models&lt;br /&gt;
* Support Vector Machines (SVM)&lt;br /&gt;
** Least Squares SVM (based on [http://www.esat.kuleuven.ac.be/sista/lssvmlab/ LS-SVMlab])&lt;br /&gt;
** epsilon-SVM (based on [http://www.csie.ntu.edu.tw/~cjlin/libsvm/ LIBSVM] or [http://svmlight.joachims.org/ SVMlight])&lt;br /&gt;
** nu-SVM (based on [http://www.csie.ntu.edu.tw/~cjlin/libsvm/ LIBSVM])&lt;br /&gt;
* Support for model types from the [http://www.cs.waikato.ac.nz/ml/weka/ WEKA] data mining library &lt;br /&gt;
** Classification, regression and clustering algorithms present in WEKA can be used simply by adding entries in the configuration. Please refer to the &#039;weka&#039; ModelBuilder in the demo configuration file. A list of algorithms can be found [http://wiki.pentaho.com/display/DATAMINING/Data+Mining+Algorithms+and+Tools+in+Weka here].&lt;br /&gt;
|-&lt;br /&gt;
! Model parameter optimization algorithms*&lt;br /&gt;
| Pattern Search, EOG, Simulated Annealing, Genetic Algorithm, BGFS, DIRECT, Particle Swarm Optimization (PSO), NSGA-II ...&lt;br /&gt;
|-&lt;br /&gt;
! Sample selection algorithms (=sequential design, active learning)*&lt;br /&gt;
| Random, error-based, density-based, gradient-based, and many different hybrids&lt;br /&gt;
|-&lt;br /&gt;
! Experimental design*&lt;br /&gt;
| Latin Hypercube Sampling, Central Composite, Box-Behnken, random, user defined, full factorial&lt;br /&gt;
|-&lt;br /&gt;
! Model selection measures*&lt;br /&gt;
| Validation set, cross-validation, leave-one-out, model difference, AIC (also in a multi-objective context, see [[Multi-Objective Modeling]]), LRM&lt;br /&gt;
|-&lt;br /&gt;
! Sample Evaluation*&lt;br /&gt;
| On the local machine (taking advantage of multi-core CPUs) or in parallel on a cluster/grid&lt;br /&gt;
|-&lt;br /&gt;
! Supported distributed middlewares*&lt;br /&gt;
| [http://gridengine.sunsource.net/ Sun Grid Engine], LCG Grid middleware (both accessed through a SSH accessible frontnode)&lt;br /&gt;
|-&lt;br /&gt;
! Logging&lt;br /&gt;
| Extensive logging to enable close monitoring of the modeling process.  Logging granularity is fully configurable and log streams can be easily redirected (to file, console, a remote machine, ...).&lt;br /&gt;
|-&lt;br /&gt;
! Profiling*&lt;br /&gt;
| Extensive profiling framework for easy gathering (and plotting) of modeling metrics (average sample evaluation time, hyperparameter optimization trace, ...)&lt;br /&gt;
|-&lt;br /&gt;
! Easy tracking of modeling progress&lt;br /&gt;
| Automatic storing of best models and their plots. Ability to automatically generate a movie of the sequence of plots.&lt;br /&gt;
|-&lt;br /&gt;
! Model browser GUI&lt;br /&gt;
| A graphical tool is available to easily visualize high dimensional models and browse through data ([[Model Visualization GUI|more information here]])&lt;br /&gt;
|-&lt;br /&gt;
! Available test problems*&lt;br /&gt;
| Out of the box support for many built-in functions (Ackley, Camel Back, Goldstein-Price, ...) and datasets (Abalone, Boston Housing, FishLength, ...) from various application domains. Including a number of datasets (and some simulation code) from electronics. In total over 50 examples are available.&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| [[License terms]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Custom implementations can easily be added&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
A number of screenshots to give a feel of the SUMO Toolbox. Note these screenshots do not necessarily reflect the latest toolbox version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:octagon.png&lt;br /&gt;
Image:metamodel-sumo-hourglass.png&lt;br /&gt;
Image:SUMO_Toolbox1.png&lt;br /&gt;
Image:SUMO_Toolbox2.png&lt;br /&gt;
Image:SUMO_Toolbox3.png&lt;br /&gt;
Image:SUMO_Toolbox4.png&lt;br /&gt;
Image:ISCSampleSelector1.png&lt;br /&gt;
Image:ISCSampleSelector2.png&lt;br /&gt;
Image:SUMO_Gui1.png&lt;br /&gt;
Image:SUMO_Gui2.png&lt;br /&gt;
Image:Contour1.png&lt;br /&gt;
Image:TwoDim1.png&lt;br /&gt;
Image:TwoDim2.png&lt;br /&gt;
Image:ThreeDim1.png&lt;br /&gt;
Image:ThreeDim2.png‎&lt;br /&gt;
Image:ThreeDim3.png&lt;br /&gt;
Image:FEBioTrekEI.png&lt;br /&gt;
Image:FEBioTrekFunc.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Movies ==&lt;br /&gt;
&lt;br /&gt;
[[Image:youtube-logo.jpg|right|70px|link=http://www.youtube.com/sumolab|]] A number of video clips generated by or related to the SUMO Toolbox [http://www.youtube.com/sumolab can be found at our YouTube channel].  Feel free to make suggestions or leave comments.&lt;br /&gt;
&lt;br /&gt;
Note these movies do not necessarily reflect the latest toolbox version. Improvements and/or interface adjustments may have been made since then.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
An in depth overview of the rationale and philosophy, including a treatment of the software architecture underlying the SUMO Toolbox is available in the form of a PhD dissertation.  A copy of this dissertation [http://www.sumo.intec.ugent.be/?q=system/files/2010_04_PhD_DirkGorissen.pdf is available here].&lt;br /&gt;
&lt;br /&gt;
In addition the following poster and presentation give a high level overview:&lt;br /&gt;
&lt;br /&gt;
* Poster: [[Media:SUMO_poster.pdf|SUMO poster]]&lt;br /&gt;
* Presentation: [[Media:SUMO_presentation.pdf|SUMO slides]]&lt;br /&gt;
&lt;br /&gt;
A blog covering related research can be found here [http://sumolab.blogspot.com http://sumolab.blogspot.com].&lt;br /&gt;
&lt;br /&gt;
== Citations ==&lt;br /&gt;
&lt;br /&gt;
See [[Citing|Citing the toolbox]].&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Installation&amp;diff=5922</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Installation&amp;diff=5922"/>
		<updated>2014-08-28T07:27:48Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Linux/Unix/OSX */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This page will walk you through the SUMO Toolbox installation. Please refer to the [[system requirements]] first. See the [[downloading]] section on how to download the toolbox.&lt;br /&gt;
&lt;br /&gt;
== Quick start ==&lt;br /&gt;
&lt;br /&gt;
Quick and dirty instructions:&lt;br /&gt;
&lt;br /&gt;
# Log into the SUMO lab website with the account information mailed to you and download the toolbox&lt;br /&gt;
# Unzip the toolbox zip file, it will create a directory (= the toolbox installation directory)&lt;br /&gt;
&amp;lt;!-- # Unzip the activation zip file &#039;&#039;&#039;INTO the toolbox installation directory&#039;&#039;&#039; (this file was mailed to you after you registered) --&amp;gt;&lt;br /&gt;
# Start Matlab&lt;br /&gt;
# Go to the toolbox directory&lt;br /&gt;
# Run &#039;&amp;lt;code&amp;gt;startup&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
# Run &#039;&amp;lt;code&amp;gt;go&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
== Basic Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Toolbox ===&lt;br /&gt;
Unzip the toolbox zip file to a directory somewhere on your harddisk, the full path of the SUMO Toolbox (including installation directory) will be referred to as the toolbox installation directory (e.g., c:\software\SUMO-Toolbox-6.3).  Note that you do &#039;&#039;&#039;not&#039;&#039;&#039; have to put the toolbox in the Matlab installation directory, we actually advise against it since it can cause confusing errors.&lt;br /&gt;
&lt;br /&gt;
Once you have unzipped the toolbox zip file the directory structure looks like this:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;toolbox installation directory&amp;gt; &#039;&#039;(e.g., c:\software\SUMO-Toolbox-6.3)&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;bin/&amp;lt;/code&amp;gt;			: binaries, executable scripts, ...&lt;br /&gt;
** &amp;lt;code&amp;gt;config/&amp;lt;/code&amp;gt;			: configuration files, location of &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;config/demo&amp;lt;/code&amp;gt;		: a couple of demo configuration files that may help you&lt;br /&gt;
** &amp;lt;code&amp;gt;doc/&amp;lt;/code&amp;gt; 			: some documentation&lt;br /&gt;
** &amp;lt;code&amp;gt;doc/apidoc&amp;lt;/code&amp;gt; 		: Javadoc and other api docs&lt;br /&gt;
** &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt; 			: required libraries (eg: dom4j)&lt;br /&gt;
** &amp;lt;code&amp;gt;output/&amp;lt;/code&amp;gt;			: some output may be placed here (e.g., a global log file)&lt;br /&gt;
** &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt;			: all source code&lt;br /&gt;
** &amp;lt;code&amp;gt;examples/&amp;lt;/code&amp;gt;		: project directories of different examples (you can test with these problems and use them as an example to [[Adding an example|add your own]])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== Activation file ===&lt;br /&gt;
&lt;br /&gt;
Once you have received the activation file simply unzip it &#039;&#039;&#039;INTO&#039;&#039;&#039; in your toolbox installation directory.  So place the zip file in the toolbox installation directory and unzip it there, it should place all files in the correct places (see also the README file in the activation zip).  DO NOT unzip the activation file into its own directory somewhere else. Make sure you restart Matlab (if it was running) after you have done this.&lt;br /&gt;
&lt;br /&gt;
=== Extension pack ===&lt;br /&gt;
&lt;br /&gt;
There are a number of third party tools and modeling libraries that the SUMO Toolbox can use but that we cannot distribute together with the toolbox. These have been bundled in an extension pack.  Only minor patches have been made to the original code to make them work better with SUMO (e.g., remove debug output).  To install the extension pack, download the zip file, and unzip it INTO your toolbox installation directory. The files should be placed in the correct directories.  Simply re-run &#039;startup&#039; to make Matlab aware of the new files.&lt;br /&gt;
&lt;br /&gt;
If you download and/or use these files  please respect their licenses (found in doc/licenses), &#039;&#039;&#039;THIS IS YOUR RESPONSIBILITY !!!&#039;&#039;&#039;.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=== Setup ===&lt;br /&gt;
&lt;br /&gt;
Setting up the toolbox is very easy.  Start Matlab, navigate to the toolbox installation directory (not anywhere else, this is important!!) and run &#039;&amp;lt;code&amp;gt;startup&amp;lt;/code&amp;gt;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Test run ===&lt;br /&gt;
&lt;br /&gt;
To ensure everything is working you can do a simple run of the toolbox with the default configuration. This means the toolbox will use the setting specified in &amp;lt;code&amp;gt;&amp;lt;SUMO-Toolbox-installation-dir&amp;gt;/config/default.xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
# Make sure that you are in the toolbox installation directory and you have run &#039;&amp;lt;code&amp;gt;startup&amp;lt;/code&amp;gt;&#039; (see above)&lt;br /&gt;
# Type &#039;&amp;lt;code&amp;gt;go&amp;lt;/code&amp;gt;&#039; and press enter.&lt;br /&gt;
# The toolbox will start to model the &#039;&#039;Academic2DTwice&#039;&#039; simulator.  This simulator has 2 inputs and 2 outputs, and will be modeled using Kriging models, scored using [[Measures#CrossValidation| CrossValidation]], and samples selected using a combined sample selection method.&lt;br /&gt;
# To see the exact settings used open &amp;lt;code&amp;gt;config/default.xml&amp;lt;/code&amp;gt;.  Feel free to edit this file and play around with the different options.&lt;br /&gt;
&lt;br /&gt;
The examples directory contains many example simulators that you can use to test the toolbox with.  See [[Running#Running_different_examples]].&lt;br /&gt;
&lt;br /&gt;
== Ok, the test run works, now what? ==&lt;br /&gt;
&lt;br /&gt;
See [[Running]] page.&lt;br /&gt;
&lt;br /&gt;
== Problems ==&lt;br /&gt;
&lt;br /&gt;
See the [[reporting problems]] page.&lt;br /&gt;
&lt;br /&gt;
== Optional: Compiling libraries ==&lt;br /&gt;
&lt;br /&gt;
There are some alternative libraries and simulators available that have to be compiled for your specific platform. Instructions depend on your operating system.&lt;br /&gt;
&lt;br /&gt;
=== Linux/Unix/OSX ===&lt;br /&gt;
&lt;br /&gt;
# Ensure you have the following environment variables set:&lt;br /&gt;
## &amp;lt;code&amp;gt;MATLABDIR=/path/to/your/matlab/installation&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;JAVA_HOME=/path/to/your/SDK/installation&amp;lt;/code&amp;gt;&lt;br /&gt;
# Ensure you have the usual build tools installed: gcc, g++, autotools, make, etc&lt;br /&gt;
# From the command line shell (so NOT from inside Matlab): Go to the toolbox installation directory and type &#039;&amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;&#039;. This will build everything for you (C/C++ files, SVM libraries, ...).  If you only want to build certain packages simply &#039;&amp;lt;code&amp;gt;make Package&amp;lt;/code&amp;gt;&#039; in the toolbox installation directory. &lt;br /&gt;
## For Matlab versions R2011a and above, in case your operating system is Mac OS X (version 10.6 - Snow Leopard upwards), and the C compiler being used is Xcode version 4.1 and above, you will need to install a patch from MathWorks, please refer to [http://www.mathworks.nl/support/solutions/en/data/1-FR6LXJ/ this]. You will also need to update the SDKROOT entry in mexopts.sh file (usually located in ~/.matlab/R2012b/mexopts.sh), according to its location in the filesystem as it has been moved in recent versions of OS X. For example, for OS X Lion the updated entry should be, &lt;br /&gt;
###&amp;lt;code&amp;gt;SDKROOT=&#039;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
### It is also advisable to change the entry for &amp;lt;code&amp;gt;CC&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;gcc-4.2&amp;lt;/code&amp;gt; to just &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;.&lt;br /&gt;
## If you encounter the message &amp;quot;This process is attempting to exclude an item from Time Machine by path without administrator privileges. This is not supported.&amp;quot; on Mac OS X while building the code, building it as a super-user by using the command &#039;&amp;lt;code&amp;gt;sudo make&amp;lt;/code&amp;gt;&#039; instead of only &#039;&amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;&#039; will solve the problem.&lt;br /&gt;
# A complete list of available packages follows:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;margin: 1em auto 1em auto&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Package&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| contrib&lt;br /&gt;
| Builds the FANN, SVM (libsvm) and NNSYSID libraries&lt;br /&gt;
|-&lt;br /&gt;
| cexamples&lt;br /&gt;
| Builds the binaries for several C/C++ simulators&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: if you want to use FANN you will have to ensure Matlab knows of the FANN libraries. See [[FAQ#When_using_FANN_models_I_sometimes_get_.22Invalid_MEX-file_createFann.mexa64.2C_libfann.so.2:_cannot_open_shared_object_file:_No_such_file_or_directory..22 | the FAQ]].&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
# Compiling C/C++ codes (examples):&lt;br /&gt;
## You will have to do this on your own using a C/C++ compiler of your choice: Dev-c++/Visual Studio/...&lt;br /&gt;
# Compiling LS-SVM libraries:&lt;br /&gt;
## In order to use the [http://www.esat.kuleuven.be/sista/lssvmlab/ LS-SVM] backend, you will have to compile the LS-SVM mex files (it will work if you dont but you will get a lot of warning messages about a missing CFile implementation).&lt;br /&gt;
## This can be done using the built-in LCC compiler of matlab, by calling &#039;&amp;lt;code&amp;gt;makeLSSVM&amp;lt;/code&amp;gt;&#039; from the Matlab command prompt (make sure the SUMO Toolbox is in your path)&lt;br /&gt;
# Compiling ANN libraries:&lt;br /&gt;
## In order to use the [http://leenissen.dk/fann/ FANN] backend, you will have to compile the FANN library and mex files.&lt;br /&gt;
## So far nobody has yet got it to work under Windows, but don&#039;t let that stop you.&lt;br /&gt;
# Compiling Java classes using Eclipse (only for SVN version of the Toolbox, on linux you can just use the make command)&lt;br /&gt;
## open Eclipse&lt;br /&gt;
## import ant buildfile&lt;br /&gt;
### File-&amp;gt;New-&amp;gt;Other&lt;br /&gt;
### Java-&amp;gt;Java Project from Existing Ant Buildfile&lt;br /&gt;
### Select build.xml in the SUMO root directory&lt;br /&gt;
### click &#039;Finish&#039;&lt;br /&gt;
### Add external jars from Matlab install to buildpath if necessary&lt;br /&gt;
## Open configure.m in the SUMO root directory and change bin/ to src/ for the java paths (the lines below &#039;&#039;% add java paths&#039;&#039;)&lt;br /&gt;
## Type in &#039;go&#039; in the Matlab command line to see whether the compilation worked&lt;br /&gt;
## If the SUMO Toolbox does not start, make sure the java virtual machine of matlab and eclipse are the same&lt;br /&gt;
### Type in &#039;version(&#039;-java&#039;)&#039; in the Matlab command line to find the jvm version used by matlab&lt;br /&gt;
### In Eclipse, right click the SUMO-Toolbox project -&amp;gt; Properties  -&amp;gt; Java Compiler&lt;br /&gt;
### Change the Java Compiler used by Eclipse by ticking the &#039;Enable project specific settings&#039; and selecting the same version of the Java Compiler as the Matlab jvm&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Installation&amp;diff=5921</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Installation&amp;diff=5921"/>
		<updated>2014-08-28T07:26:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Optional: Compiling libraries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This page will walk you through the SUMO Toolbox installation. Please refer to the [[system requirements]] first. See the [[downloading]] section on how to download the toolbox.&lt;br /&gt;
&lt;br /&gt;
== Quick start ==&lt;br /&gt;
&lt;br /&gt;
Quick and dirty instructions:&lt;br /&gt;
&lt;br /&gt;
# Log into the SUMO lab website with the account information mailed to you and download the toolbox&lt;br /&gt;
# Unzip the toolbox zip file, it will create a directory (= the toolbox installation directory)&lt;br /&gt;
&amp;lt;!-- # Unzip the activation zip file &#039;&#039;&#039;INTO the toolbox installation directory&#039;&#039;&#039; (this file was mailed to you after you registered) --&amp;gt;&lt;br /&gt;
# Start Matlab&lt;br /&gt;
# Go to the toolbox directory&lt;br /&gt;
# Run &#039;&amp;lt;code&amp;gt;startup&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
# Run &#039;&amp;lt;code&amp;gt;go&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
== Basic Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Toolbox ===&lt;br /&gt;
Unzip the toolbox zip file to a directory somewhere on your harddisk, the full path of the SUMO Toolbox (including installation directory) will be referred to as the toolbox installation directory (e.g., c:\software\SUMO-Toolbox-6.3).  Note that you do &#039;&#039;&#039;not&#039;&#039;&#039; have to put the toolbox in the Matlab installation directory, we actually advise against it since it can cause confusing errors.&lt;br /&gt;
&lt;br /&gt;
Once you have unzipped the toolbox zip file the directory structure looks like this:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;toolbox installation directory&amp;gt; &#039;&#039;(e.g., c:\software\SUMO-Toolbox-6.3)&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;bin/&amp;lt;/code&amp;gt;			: binaries, executable scripts, ...&lt;br /&gt;
** &amp;lt;code&amp;gt;config/&amp;lt;/code&amp;gt;			: configuration files, location of &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;config/demo&amp;lt;/code&amp;gt;		: a couple of demo configuration files that may help you&lt;br /&gt;
** &amp;lt;code&amp;gt;doc/&amp;lt;/code&amp;gt; 			: some documentation&lt;br /&gt;
** &amp;lt;code&amp;gt;doc/apidoc&amp;lt;/code&amp;gt; 		: Javadoc and other api docs&lt;br /&gt;
** &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt; 			: required libraries (eg: dom4j)&lt;br /&gt;
** &amp;lt;code&amp;gt;output/&amp;lt;/code&amp;gt;			: some output may be placed here (e.g., a global log file)&lt;br /&gt;
** &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt;			: all source code&lt;br /&gt;
** &amp;lt;code&amp;gt;examples/&amp;lt;/code&amp;gt;		: project directories of different examples (you can test with these problems and use them as an example to [[Adding an example|add your own]])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== Activation file ===&lt;br /&gt;
&lt;br /&gt;
Once you have received the activation file simply unzip it &#039;&#039;&#039;INTO&#039;&#039;&#039; in your toolbox installation directory.  So place the zip file in the toolbox installation directory and unzip it there, it should place all files in the correct places (see also the README file in the activation zip).  DO NOT unzip the activation file into its own directory somewhere else. Make sure you restart Matlab (if it was running) after you have done this.&lt;br /&gt;
&lt;br /&gt;
=== Extension pack ===&lt;br /&gt;
&lt;br /&gt;
There are a number of third party tools and modeling libraries that the SUMO Toolbox can use but that we cannot distribute together with the toolbox. These have been bundled in an extension pack.  Only minor patches have been made to the original code to make them work better with SUMO (e.g., remove debug output).  To install the extension pack, download the zip file, and unzip it INTO your toolbox installation directory. The files should be placed in the correct directories.  Simply re-run &#039;startup&#039; to make Matlab aware of the new files.&lt;br /&gt;
&lt;br /&gt;
If you download and/or use these files  please respect their licenses (found in doc/licenses), &#039;&#039;&#039;THIS IS YOUR RESPONSIBILITY !!!&#039;&#039;&#039;.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=== Setup ===&lt;br /&gt;
&lt;br /&gt;
Setting up the toolbox is very easy.  Start Matlab, navigate to the toolbox installation directory (not anywhere else, this is important!!) and run &#039;&amp;lt;code&amp;gt;startup&amp;lt;/code&amp;gt;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Test run ===&lt;br /&gt;
&lt;br /&gt;
To ensure everything is working you can do a simple run of the toolbox with the default configuration. This means the toolbox will use the setting specified in &amp;lt;code&amp;gt;&amp;lt;SUMO-Toolbox-installation-dir&amp;gt;/config/default.xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
# Make sure that you are in the toolbox installation directory and you have run &#039;&amp;lt;code&amp;gt;startup&amp;lt;/code&amp;gt;&#039; (see above)&lt;br /&gt;
# Type &#039;&amp;lt;code&amp;gt;go&amp;lt;/code&amp;gt;&#039; and press enter.&lt;br /&gt;
# The toolbox will start to model the &#039;&#039;Academic2DTwice&#039;&#039; simulator.  This simulator has 2 inputs and 2 outputs, and will be modeled using Kriging models, scored using [[Measures#CrossValidation| CrossValidation]], and samples selected using a combined sample selection method.&lt;br /&gt;
# To see the exact settings used open &amp;lt;code&amp;gt;config/default.xml&amp;lt;/code&amp;gt;.  Feel free to edit this file and play around with the different options.&lt;br /&gt;
&lt;br /&gt;
The examples directory contains many example simulators that you can use to test the toolbox with.  See [[Running#Running_different_examples]].&lt;br /&gt;
&lt;br /&gt;
== Ok, the test run works, now what? ==&lt;br /&gt;
&lt;br /&gt;
See [[Running]] page.&lt;br /&gt;
&lt;br /&gt;
== Problems ==&lt;br /&gt;
&lt;br /&gt;
See the [[reporting problems]] page.&lt;br /&gt;
&lt;br /&gt;
== Optional: Compiling libraries ==&lt;br /&gt;
&lt;br /&gt;
There are some alternative libraries and simulators available that have to be compiled for your specific platform. Instructions depend on your operating system.&lt;br /&gt;
&lt;br /&gt;
=== Linux/Unix/OSX ===&lt;br /&gt;
&lt;br /&gt;
# Ensure you have the following environment variables set:&lt;br /&gt;
## &amp;lt;code&amp;gt;MATLABDIR=/path/to/your/matlab/installation&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;JAVA_HOME=/path/to/your/SDK/installation&amp;lt;/code&amp;gt;&lt;br /&gt;
# Ensure you have the usual build tools installed: gcc, g++, autotools, make, etc&lt;br /&gt;
# From the command line shell (so NOT from inside Matlab): Go to the toolbox installation directory and type &#039;&amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;&#039;. This will build everything for you (C/C++ files, SVM libraries, ...).  If you only want to build certain packages simply &#039;&amp;lt;code&amp;gt;make Package&amp;lt;/code&amp;gt;&#039; in the toolbox installation directory. &lt;br /&gt;
## For Matlab versions R2011a and above, in case your operating system is Mac OS X (version 10.6 - Snow Leopard upwards), and the C compiler being used is Xcode version 4.1 and above, you will need to install a patch from MathWorks, please refer to [http://www.mathworks.nl/support/solutions/en/data/1-FR6LXJ/ this]. You will also need to update the SDKROOT entry in mexopts.sh file (usually located in ~/.matlab/R2012b/mexopts.sh), according to its location in the filesystem as it has been moved in recent versions of OS X. For example, for OS X Lion the updated entry should be, &lt;br /&gt;
###&amp;lt;code&amp;gt;SDKROOT=&#039;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
### It is also advisable to change the entry for &amp;lt;code&amp;gt;CC&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;gcc-4.2&amp;lt;/code&amp;gt; to just &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;.&lt;br /&gt;
## If you encounter the message &amp;quot;This process is attempting to exclude an item from Time Machine by path without administrator privileges. This is not supported.&amp;quot; on Mac OS X while building the code, building it as a super-user by using the command &#039;&amp;lt;code&amp;gt;sudo make&amp;lt;/code&amp;gt;&#039; instead of only &#039;&amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;&#039; will solve the problem.&lt;br /&gt;
# A complete list of available packages follows:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;margin: 1em auto 1em auto&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Package&lt;br /&gt;
! Description&lt;br /&gt;
! Requires extension pack&lt;br /&gt;
|-&lt;br /&gt;
| contrib&lt;br /&gt;
| Builds the FANN, SVM (libsvm, LS-SVMlab) and NNSYSID libraries&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| cexamples&lt;br /&gt;
| Builds the binaries for several C/C++ simulators&lt;br /&gt;
| No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: if you want to use FANN you will have to ensure Matlab knows of the FANN libraries. See [[FAQ#When_using_FANN_models_I_sometimes_get_.22Invalid_MEX-file_createFann.mexa64.2C_libfann.so.2:_cannot_open_shared_object_file:_No_such_file_or_directory..22 | the FAQ]].&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
# Compiling C/C++ codes (examples):&lt;br /&gt;
## You will have to do this on your own using a C/C++ compiler of your choice: Dev-c++/Visual Studio/...&lt;br /&gt;
# Compiling LS-SVM libraries:&lt;br /&gt;
## In order to use the [http://www.esat.kuleuven.be/sista/lssvmlab/ LS-SVM] backend, you will have to compile the LS-SVM mex files (it will work if you dont but you will get a lot of warning messages about a missing CFile implementation).&lt;br /&gt;
## This can be done using the built-in LCC compiler of matlab, by calling &#039;&amp;lt;code&amp;gt;makeLSSVM&amp;lt;/code&amp;gt;&#039; from the Matlab command prompt (make sure the SUMO Toolbox is in your path)&lt;br /&gt;
# Compiling ANN libraries:&lt;br /&gt;
## In order to use the [http://leenissen.dk/fann/ FANN] backend, you will have to compile the FANN library and mex files.&lt;br /&gt;
## So far nobody has yet got it to work under Windows, but don&#039;t let that stop you.&lt;br /&gt;
# Compiling Java classes using Eclipse (only for SVN version of the Toolbox, on linux you can just use the make command)&lt;br /&gt;
## open Eclipse&lt;br /&gt;
## import ant buildfile&lt;br /&gt;
### File-&amp;gt;New-&amp;gt;Other&lt;br /&gt;
### Java-&amp;gt;Java Project from Existing Ant Buildfile&lt;br /&gt;
### Select build.xml in the SUMO root directory&lt;br /&gt;
### click &#039;Finish&#039;&lt;br /&gt;
### Add external jars from Matlab install to buildpath if necessary&lt;br /&gt;
## Open configure.m in the SUMO root directory and change bin/ to src/ for the java paths (the lines below &#039;&#039;% add java paths&#039;&#039;)&lt;br /&gt;
## Type in &#039;go&#039; in the Matlab command line to see whether the compilation worked&lt;br /&gt;
## If the SUMO Toolbox does not start, make sure the java virtual machine of matlab and eclipse are the same&lt;br /&gt;
### Type in &#039;version(&#039;-java&#039;)&#039; in the Matlab command line to find the jvm version used by matlab&lt;br /&gt;
### In Eclipse, right click the SUMO-Toolbox project -&amp;gt; Properties  -&amp;gt; Java Compiler&lt;br /&gt;
### Change the Java Compiler used by Eclipse by ticking the &#039;Enable project specific settings&#039; and selecting the same version of the Java Compiler as the Matlab jvm&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Measures&amp;diff=5920</id>
		<title>Measures</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Measures&amp;diff=5920"/>
		<updated>2014-07-26T10:49:33Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is a Measure ==&lt;br /&gt;
A crucial aspect of generating models is estimating their quality.  Some metric is needed to decide whether a model is poor, good, very good, etc.  In the SUMO Toolbox this role is played by the &#039;&#039;Measure&#039;&#039; component.  A measure is an object that, given a model, returns an estimation of its quality.  This can be something very simple as the error of the model fit in the training data, or it may involve a complex calculation to see if a model satisfies some physical constraint.&lt;br /&gt;
&lt;br /&gt;
The Measure is used in the SUMO Toolbox to drive the [[Add_Model_Type#Models.2C_Model_builders.2C_and_Factories|model parameter optimization]] (see also the [[Running#Understanding_the_control_flow|toolbox control flow]]). This can be done in a single objective or [[Multi-Objective Modeling|multi-objective]] fashion.&lt;br /&gt;
&lt;br /&gt;
There are two aspects to a Measure:&lt;br /&gt;
&lt;br /&gt;
# The quality estimation algorithm&lt;br /&gt;
# The error function&lt;br /&gt;
&lt;br /&gt;
The first is the algorithm used to estimate the model quality.  This is for example the in-sample error, or the 5-fold crossvalidation score.  The error function determines what kind of error you want to use.  You can calculate the in-sample error using: the average absolute error, the root mean square error, a maximum relative error, etc.  Note that the error function may not be relevant for every type of measure (eg., AIC).&lt;br /&gt;
&lt;br /&gt;
It cannot be stressed enough that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&#039;&#039;&#039;A proper choice of Measure and Error function is CRUCIAL to the success of your modeling&#039;&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That choice will depend on your problem characteristics, the data distribution and the model type you will use to fit the data.  It is &#039;&#039;&#039;extremely important&#039;&#039;&#039; to think about this well (&amp;quot;what do you want?&amp;quot;) before starting any modeling.&lt;br /&gt;
&lt;br /&gt;
As a side remark, note that Measures and sequential designs are closely related.  The same criteria that is used to decide if a model is good or bad, can be used to identify interesting locations to select new data points.&lt;br /&gt;
&lt;br /&gt;
Also note that some model builders (notably GeneticModelBuilder) support constraints directly.  This means you can also implement what you would otherwise implement as a Measure as constraint in the model parameter optimization algorithm itself.  This is a superior solution to using a Measure.&lt;br /&gt;
&lt;br /&gt;
== Using measures ==&lt;br /&gt;
&lt;br /&gt;
To use a particular measure in the SUMO Toolbox, you have to edit the &amp;lt;Measure&amp;gt; tag in Plan section of the configuration XML-file. If you are using the configuration XML-file default.xml, please note that the &amp;lt;Measure&amp;gt; tag does NOT refer to any configuration sections below the Plan section. Instead they are defined directly in the Plan section. You can of course always add Measure configuration sections and refer to them in the Plan section using their id. Here are three equivalent examples of defining measure in the configuration xml. The default.xml also contains examples of measures in the commented out sections.&lt;br /&gt;
&lt;br /&gt;
The first way is the one used in the default.xml and can be found within the Plan section; the measure type used is the SampleError which scores models on how well the capture the training data. The error function used to aggregate the scores for each training sample is meanSquareError. The target determines the target accuracy that has to be satisfied by the models, in this case it means that mean square error of all training examples of a model should be 0.01 or less. The option &amp;lt;code&amp;gt;use=&amp;quot;on&amp;quot;&amp;lt;/code&amp;gt; indicates that this measure should be used to guide the model selection criterion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source xmlns:saxon=&amp;quot;http://icl.com/saxon&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Plan&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Measure type=&amp;quot;SampleError&amp;quot; target=&amp;quot;.01&amp;quot; errorFcn=&amp;quot;meanSquareError&amp;quot; use=&amp;quot;on&amp;quot;/&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Plan&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The second way uses an id in the Plan section to refer to the same measure, but which is now defined separately in a configuration section:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source xmlns:saxon=&amp;quot;http://icl.com/saxon&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Plan&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Measure&amp;gt;ExampleMeasure&amp;lt;/Measure&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Plan&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Measure id=&amp;quot;ExampleMeasure&amp;quot; type =&amp;quot;SampleError&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;use&amp;quot; value=&amp;quot;on&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;target&amp;quot; value=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;errorFcn&amp;quot; value=&amp;quot;meanSquareError&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Measure&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
And finally the configuration section can also be placed directly into the Plan section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source xmlns:saxon=&amp;quot;http://icl.com/saxon&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Plan&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;Measure id=&amp;quot;ExampleMeasure&amp;quot; type =&amp;quot;SampleError&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Option key=&amp;quot;use&amp;quot; value=&amp;quot;on&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Option key=&amp;quot;target&amp;quot; value=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Option key=&amp;quot;errorFcn&amp;quot; value=&amp;quot;meanSquareError&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/Measure&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Plan&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using multiple measures ==&lt;br /&gt;
&lt;br /&gt;
The SUMO-Toolbox also allows you to use several measures to guide modeling process. You may want to use more than one measure because for example you need a model which has a mean square error of 0.01 but its largest error cannot exceed a certain threshold. Or you want to use several measures to monitor the modeling process.&lt;br /&gt;
&lt;br /&gt;
Go to the [[Multi-Objective_Modeling|Multi-Objective Modeling page]] to find out how to build models using multiple measures.&lt;br /&gt;
If you want to use more than one measure but only for monitoring purposes (i.e. they will not be used for model selection), you can do this by adding the desired measure(s) you want to use for monitoring to the Plan but with the &amp;lt;code&amp;gt;use=&amp;quot;off&amp;quot;&amp;lt;/code&amp;gt; keyword.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source xmlns:saxon=&amp;quot;http://icl.com/saxon&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Plan&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Measure type=&amp;quot;SampleError&amp;quot; target=&amp;quot;.01&amp;quot; errorFcn=&amp;quot;meanSquareError&amp;quot; use=&amp;quot;on&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Measure type=&amp;quot;CrossValidation&amp;quot; target=&amp;quot;.05&amp;quot; errorFcn=&amp;quot;maxAbsoluteError&amp;quot; use=&amp;quot;off&amp;quot;/&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Plan&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tips on using measures ==&lt;br /&gt;
&lt;br /&gt;
A recommended read is [http://sumo.intec.ugent.be/sites/sumo/files/sumo/2009_08_EWC.pdf the paper available here].&lt;br /&gt;
&lt;br /&gt;
In general, the default measure, 5 fold CrossValidation, is an acceptable choice.  However, it is also very expensive, as it requires that a model be re-trained for each fold.  This may slow things down if a model is expensive to train (e.g., neural nets).  Also CrossValidation can give biased results if data is clustered or scarce.  Increasing the number of folds may help here.  A cheaper alternative is ValidationSet (see below) or AIC.  For a full list of available measures see the &amp;lt;code&amp;gt;src/matlab/measures&amp;lt;/code&amp;gt; subdirectory.&lt;br /&gt;
&lt;br /&gt;
Note that multiple measures may also be combined.  For more information see [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
For how to change the error function see [[FAQ#How_do_I_change_the_error_function_.28relative_error.2C_RMS.2C_....29.3F| this FAQ entry]].&lt;br /&gt;
&lt;br /&gt;
Below is a list of some available measures and the configuration options available for each of them. Each measure also has a target accuracy attribute, which can be omitted and which defaults to 0.001. In certain cases, such as the binary MinMax measure, the target accuracy is irrelevant.&lt;br /&gt;
&lt;br /&gt;
== Defining your own Measure ==&lt;br /&gt;
&lt;br /&gt;
see [[Add_Measure]]&lt;br /&gt;
&lt;br /&gt;
== Measure types ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;We are well aware that documentation is not always complete and possibly even out of date in some cases. We try to document everything as best we can but much is limited by available time and manpower.  We are are a university research group after all. The most up to date documentation can always be found (if not here) in the default.xml configuration file and, of course, in the source files.  If something is unclear please dont hesitate to [[Reporting problems|ask]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== CrossValidation ===&lt;br /&gt;
&lt;br /&gt;
The CrossValidation measure is the default choice and performs an n-fold cross validation on the model to create an efficient estimation of the accuracy of the model. Several options are available to customize this measure.&lt;br /&gt;
&lt;br /&gt;
{{OptionsHeader}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = folds&lt;br /&gt;
|values      = positive integer&lt;br /&gt;
|default     = 5&lt;br /&gt;
|description = The number of folds used for the measure. A higher number means that more models will be built, but that a better accuracy estimate is achieved.&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = randomThreshold&lt;br /&gt;
|values      = positive integer&lt;br /&gt;
|default     = 1000&lt;br /&gt;
|description = If the number of samples is greater than this number a random partitioning is used&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = partitionMethod&lt;br /&gt;
|values      = [uniform,random]&lt;br /&gt;
|default     = uniform&lt;br /&gt;
|description = This option defines whether the test sets for the folds are chosen randomly, or are chosen in such a way as to maximize the domain coverage. Random is generally much faster, but might result in pessimistic scoring, as unlucky test set choice can result in an inaccurate error. This can partly be fixed by enabling the resetFolds option.&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = resetFolds&lt;br /&gt;
|values      = boolean&lt;br /&gt;
|default     = no&lt;br /&gt;
|description = Folds are generated from scratch for each model that is evaluated using this measure. If the same model is evaluated twice (for example, after a rebuild), new folds are used. Enabling this feature can be very costly for large sample sizes. As a rule of thumb, enable this in combination with the random partition method, or disable this when using the uniform method.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Here is an example configuration for the CrossValidation measure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source xmlns:saxon=&amp;quot;http://icl.com/saxon&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type =&amp;quot;CrossValidation&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;use&amp;quot; value=&amp;quot;on&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;target&amp;quot; value=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;errorFcn&amp;quot; value=&amp;quot;meanSquareError&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;folds&amp;quot; value=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;randomThreshold&amp;quot; value=&amp;quot;1000&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;partitionMethod&amp;quot; value=&amp;quot;uniform&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;resetFolds&amp;quot; value=&amp;quot;no&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Measure&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ValidationSet ===&lt;br /&gt;
&lt;br /&gt;
The ValidationSet measure has two different methods of operation.&lt;br /&gt;
&lt;br /&gt;
# In the first method, the list of samples that have been evaluated is split into a validation set and a training set. A model is then built using the training set, and evaluated using the validation set (which is by default 20% of the total sample pool).&lt;br /&gt;
# However, an external data file containing a validation set can also specified. In this case, all the evaluated samples are used for training, and the external set is used for validation only. Which of these two operation methods is used, depends on the configuration options below. By default, no external validation set is loaded.&lt;br /&gt;
&lt;br /&gt;
If you want to use an external validation set, you will have to provide a DataSource configuration so that the validation set can be loaded from an external source. Here is a ValidationSet configuration example which loads the validation set from the scattered data file provided in the simulator file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type=&amp;quot;ValidationSet&amp;quot; target=&amp;quot;.001&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Option key=&amp;quot;type&amp;quot; value=&amp;quot;file&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;DataSource type=&amp;quot;iminds.sumo.DataSource.datasets.ScatteredDatasetDataSource&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Measure&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OptionsHeader}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = type&lt;br /&gt;
|values      = [distance, random, file]&lt;br /&gt;
|default     = distance&lt;br /&gt;
|description = Method used to acquire samples for the validation set. The default method, &#039;distance&#039;, tries to select a validation set which covers the entire domain as good as possible, ensuring that not all validation samples are chosen in the same part of the domain. This is achieved using a distance heuristic, which gives no guarantees on optimal coverage but performs very well in almost all situations. The &#039;random&#039; method just picks a random set of samples from the entire pool to be used for validation set.&lt;br /&gt;
Finally, the &#039;file&#039; method does not take samples at all from the pool, but loads a validation set from an external dataset.&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = percentUsed&lt;br /&gt;
|values      = [0,100]&lt;br /&gt;
|default     = 20&lt;br /&gt;
|description = Percent of samples used for the validation set. By default 20% of all samples are used for validation, while the remaining 80% are used for training. This option is irrelevant if the &#039;type&#039; option is set to &#039;file&#039;.&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = randomThreshold&lt;br /&gt;
|values      = positive integer&lt;br /&gt;
|default     = 1000&lt;br /&gt;
|description = When the sample pool is very large, the distance heuristic used by default becomes too slow, and the toolbox switches to random sample selection automatically. This is done when the amount of samples is larger than this value, which defaults to 1000. This option should not be changed unless the performance is unacceptable even for sample sets smaller than this amount.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== MinMax ===&lt;br /&gt;
&lt;br /&gt;
The MinMax measure is used to eliminate models whose response falls below a given minimum or above a given maximum. This measure can be used to detect models that have poles in the model domain and to guide the modeling process in the right direction. If the output is known to lie within certain value bounds, these can be added to the simulator file as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;OutputParameters&amp;gt;&lt;br /&gt;
	&amp;lt;Parameter name=&amp;quot;out&amp;quot; type=&amp;quot;real&amp;quot; minimum=&amp;quot;-1&amp;quot; maximum=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/OutputParameters&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the MinMax measure is defined, these values will be used to ensure that all models stay within these bounds. If only the minimum or only the maximum is defined, naturally only these are enforced. There are no further configuration options for this measure. In case of complex outputs the modulus is used.&lt;br /&gt;
&lt;br /&gt;
Remember though, that no guarantee can be given that the poles will really disappear. Using this measure only combats the symptoms and not the cause of the problem. Also, this measure can be reasonably slow, because it evaluates a dense grid to decide wether the model is crossing boundaries. If the model is slow to evaluate, this can take a considerable amount of time. Also note that the model is checked on a dense grid.  However, in higher dimensions the grid is sparser and thus no absolute certainty is given.&lt;br /&gt;
Finally note that this is quite a strong constraint on the model building process.  It means that a model which is otherwise very good, but simply overshoots the data in one place, will be penalized quite heavily.  This, if you can, try not to to give too strict bounds.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tips&#039;&#039;&#039;:&lt;br /&gt;
# even if you don&#039;t know the exact bounds on your output, you can still use this measure by specifying very broad bounds (e.g., [-10000 10000]).  This can still allow you to catch poles since, by definition, they reach until infinity.&lt;br /&gt;
# if you are using the ANN models and you want your output to lie within [0 1] you can simply use a &#039;logsig&#039; transfer function for the output layer.  Then BY DEFINITION your output will lie in [0 1] and no extra measure is needed. To get a different range you could even rename logsig.m and add your own scaling. This solution is far superior than using MinMax.&lt;br /&gt;
# if you are using the GeneticModelBuilder with population type custom, the MinMax idea can also be implemented in the GA itself as a constraint.  Then  you do not need the measure, this would also be a better solution.&lt;br /&gt;
&lt;br /&gt;
=== SampleError ===&lt;br /&gt;
&lt;br /&gt;
This measure simply calculates the error in the training data.  Note that this measure is useless for interpolating methods like Kriging and RBF.&lt;br /&gt;
&lt;br /&gt;
=== ModelDifference ===&lt;br /&gt;
&lt;br /&gt;
The toolbox keeps track of the n best models found so far.  The ModelDifference measure uses the disagreement between those models as a heuristic for ranking them.  A model that differs considerably from the other models is assumed to be of poor quality.  Remember that this is just a heuristic! We recommend ModelDifference never be used alone, but always in combination with some other model.&lt;br /&gt;
&lt;br /&gt;
=== LRMMeasure ===&lt;br /&gt;
&lt;br /&gt;
This is a very useful measure that can be used to complement other measures (see [[Multi-Objective Modeling]]) with some good results.  For example, as a cheaper alternative for crossvaliation with neural networks.  It will penalize models where they show unwanted &#039;bumps&#039; or &#039;ripples&#039; in the response.&lt;br /&gt;
&lt;br /&gt;
=== AIC ===&lt;br /&gt;
&lt;br /&gt;
Implements [http://en.wikipedia.org/wiki/Akaike_information_criterion Akaikes Information Criterion].  Note that this requires a proper implementation of the freeParams of a Model.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Changelog&amp;diff=5919</id>
		<title>Changelog</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Changelog&amp;diff=5919"/>
		<updated>2014-05-12T11:25:41Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below you will find the detailed list of changes in every new release.  For a more high level overview see the [[Whats new]] page.&lt;br /&gt;
&lt;br /&gt;
== 2014a - 11 May 2014 ==&lt;br /&gt;
&lt;br /&gt;
* Support for new matlab versions (tested upto Matlab 2014a)&lt;br /&gt;
*    Important: renamed several components in SUMO, existing xml files will not work anymore!&lt;br /&gt;
**        SampleSelector is now SequentialDesign&lt;br /&gt;
**        SampleEvaluator is now DataSource&lt;br /&gt;
**        AdaptiveModelBuilder is now ModelBuilder&lt;br /&gt;
**    Added new space-filling sequential design algorithms (see density and density-optimizer components in default.xml)&lt;br /&gt;
*    Added the TPLHD Algorithm, which is now the default for lhdWithCornerPoints&lt;br /&gt;
*    Added new Input-Output sequential design algorithm (FLOLA-Voronoi)&lt;br /&gt;
*    Added new surrogate model types (Eureqa, Extreme Learning Machines, WEKA library)&lt;br /&gt;
*    Added the CombinedModelBuilder&lt;br /&gt;
**        applies different ModelBuilders (and thus Model types) on the same data and optionally builds an Ensemble model of the best ones&lt;br /&gt;
**        similar to the heterogenetic ModelBuilder but faster&lt;br /&gt;
**        see the default.xml for an example (heterosequential)&lt;br /&gt;
*    Updated third-party surrogate model libraries (LS-SVM, FANN, GPML)&lt;br /&gt;
*    Input validation for the xml files (SUMO now gives an error for unknown options)&lt;br /&gt;
*    Many SUMO components (Optimizers, SequentialDesigns, ...) are now directly usable from custom Matlab scripts&lt;br /&gt;
**        This bypasses the xml configuration and allows implementation of custom surrogate modeling algorithms&lt;br /&gt;
**        See runKrigingOptimization, etc. scripts (inside src/scripts/matlab)&lt;br /&gt;
*    Added the Efficient Multi-objective Optimization (EMO) algorithm (multi-objective expected improvement)&lt;br /&gt;
*    Added the Probability of Feasibility (PoF) criterion for constrained optimization problems&lt;br /&gt;
*    Added the well-known NSGAII, SPEA2 and SMS-EMOA evolutionary algorithms (for multi-objective optimization)&lt;br /&gt;
*    Reworked and improved the Kriging surrogate model&lt;br /&gt;
*    New and much faster Matlab DataSource (former SampleEvaluator) that avoids the java overhead (it is the default now)&lt;br /&gt;
*    Improved the log files generated by SUMO&lt;br /&gt;
**        Added a timestamp&lt;br /&gt;
**        Added the component name that outputs each line (useful for debugging)&lt;br /&gt;
*    Support for the Matlab Compiler Runtime (MCR) environment. This is useful for running the toolbox on a cluster where matlab may not be available otherwise&lt;br /&gt;
&lt;br /&gt;
== 7.0.2 - 1 August 2010 ==&lt;br /&gt;
&lt;br /&gt;
* Minor cosmetic updates&lt;br /&gt;
&lt;br /&gt;
== 7.0.1 - 15 June 2010 ==&lt;br /&gt;
&lt;br /&gt;
* Bugfix release&lt;br /&gt;
&lt;br /&gt;
== 7.0 - 29 January 2010 ==&lt;br /&gt;
&lt;br /&gt;
* Move to a dual license model, with an open source licence (AGPLv3)  for non-commercial use, see [[License terms]]&lt;br /&gt;
* Experimental support for classification and 3D geometric modeling  problems (see the 2 new demos)&lt;br /&gt;
* Thorough cleanup of SampleEvaluator related classes and package structure&lt;br /&gt;
* Improved speed and stability in (Blind) Kriging models and fixed the correlation function derivatives.&lt;br /&gt;
* Vastly improved the utilization of compute nodes if a distributed sample evaluator is used that interfaces with a cluster or grid&lt;br /&gt;
* Support for plotting the prediction uncertainty in the model browser GUI &lt;br /&gt;
* Support for quasi random sequences as initial design&lt;br /&gt;
&lt;br /&gt;
== 6.2.1 - 19 October 2009 ==&lt;br /&gt;
&lt;br /&gt;
* This release fixes a number of bugs from 6.2. All users are strongly requested to upgrade.&lt;br /&gt;
&lt;br /&gt;
== 6.2 - 6 October 2009 ==&lt;br /&gt;
&lt;br /&gt;
* A new neural network modelbuilder &amp;quot;ann&amp;quot;.  This is a lot faster than the existing &amp;quot;anngenetic&amp;quot; and the quality of the models is roughly the same&lt;br /&gt;
* The sample selection infrastructure is now much more powerful, sample selection criteria can be combined with much more flexibility. This opens the way to dynamic variation of sampling criteria.&lt;br /&gt;
* Support for Input constraints / multiple output sampling in the LOLA-Voronoi sample selection algorithm&lt;br /&gt;
* Support for auto-sampled inputs (e.g., frequency in an EM context) in LOLA-Voronoi.  This is useful if a particular input is already sampled by your simulator.&lt;br /&gt;
* Automatic filtering of samples close to each other in CombinedSampleSelector&lt;br /&gt;
* Support for TriScatteredInterp in InterpolationModel when it is available (Matlab version 2009a and later)&lt;br /&gt;
* Sample selectors that support it (for example: LOLA-Voronoi) now give priorities to new samples, to that samples are submitted and evaluated in order of importance.&lt;br /&gt;
* Support for pre-calculated Latin Hypercube Designs, these will be automatically downloaded and used where possible and will improve performance&lt;br /&gt;
* The Blind Kriging models have been improved and can now also be used as ordinary Kriging models.  Since these models are superior to the existing DACE Toolbox models, the DACE Toolbox backend has been removed.&lt;br /&gt;
* The EGOModelBuilder (do model parameter optimization using the EGO algorithm) now uses a nested blind kriging model instead of one based on the DACE Toolbox.  This allows for better accuracy&lt;br /&gt;
* The Kriging correlation functions can now be chosen automatically (instead of only the correlation parameters)&lt;br /&gt;
* Support for multiobjective optimization in the EGO framewok (extended version of probability of improvement)&lt;br /&gt;
* DelaunaySampleSelector, OptimizeCriterion support the same set of criterions&lt;br /&gt;
* EGO Improvement criteria can now be used together with DACEModel, RBFModel, and SVMModel (LS-SVM backend only)&lt;br /&gt;
* Added a model type and builder that does linear/cubic/nearest neighbour interpolation&lt;br /&gt;
* All error functions and measures now consistently deal with complex valued data and multiple output models&lt;br /&gt;
* Various improvements in the Model Info GUI as part of the Model browser tool&lt;br /&gt;
* Improved stability in LRMMeasure, a behavioral complexity metric to help ensure parsimonious models&lt;br /&gt;
* The profiler GUI has been updated and improved, and support for textual profilers has been added.&lt;br /&gt;
* Improved performance when using Measures, especially for models with multiple outputs.&lt;br /&gt;
* Improved management of the best model trace, also in pareto mode&lt;br /&gt;
* Removed the debug output when using (LS-)SVM models and added compiled mex files for Windows&lt;br /&gt;
* Ported the remaining classes to Matlabs Classdef format&lt;br /&gt;
* Increased use of the parallel computing toolbox (if available) in order to speed up modeling&lt;br /&gt;
* Improved the Matlab file headers so the help text is more informative (always includes at least the signature)&lt;br /&gt;
* Support for plotting the model prediction uncertainty in the model browser (only for 1D plots and not supported by all model types)&lt;br /&gt;
* Added support for so-called &amp;quot;reference by id&amp;quot; on every level of the config. If a tag of a particular type is defined on top-level with an id, it can be referenced everywhere else, instead of copying it entirely. See rationalPoleSupression sample selector and patternsearch Optimizer, for example.&lt;br /&gt;
* EmptyModelBuilder added - in case you just want to use the sequential design facilities of the toolbox, but not its models.&lt;br /&gt;
* Various cleanups and bugfixes&lt;br /&gt;
&lt;br /&gt;
== 6.1.1 - 17 April 2009 ==&lt;br /&gt;
&lt;br /&gt;
* Various cleanups and bugfixes (see [[Known bugs]] for 6.1)&lt;br /&gt;
&lt;br /&gt;
== 6.1 - 16 February 2009 ==&lt;br /&gt;
&lt;br /&gt;
* The default error function is now the Bayesian Error Estimation Quotient (BEEQ)&lt;br /&gt;
* Full support for multi-objective model generation, multiple measures can now be enforced simultaneously.  This can also be applied to generating models with multiple outputs (combineOutputs = true).  Together with the automatic model type selection algorithm (heterogenetic) this allows the automatic selection of the best model type per output.&lt;br /&gt;
* The model browser GUI now supports QQ plots&lt;br /&gt;
* The Gradient Sample Selection Algorithm has been renamed to the Local Linear Sample Selector (LOLASampleSelector)&lt;br /&gt;
* The modelbuilders have been refactored and some removed.  This is a result of the optimizer hierarchy being cleaned up.  Adding a new model parameter optimization routine should now be more straightforward.&lt;br /&gt;
* The interface classes have been renamed to factories as this is more correct.  All implementations have been  ported to Matlab&#039;s new Classdef format and the inherritance hierarchy has been cleaned up.  It should now be significantly easier to add support for new approximation types.&lt;br /&gt;
* The ModelInterfaces are now known as ModelFactories, this is more correct.  Note that the XML tagnames have been changed as well.&lt;br /&gt;
* The Model class hierarchy has been converted to the new Classdef format.  This means that models generated with previous versions of the toolbox will no longer be loadable in this version.&lt;br /&gt;
* The heterogenetic model builder for automatic model type selection has been cleaned up and made more robust.&lt;br /&gt;
* Rational models now support all available modelbuilders.  This means that order selection can be done by PSO DIRECT, Simulated Annealing, ... instead of just GA and Sequential.&lt;br /&gt;
* New optimizers added are (they can also be used as model builders): Differential Evolution&lt;br /&gt;
* Added a Blind Kriging model type implementation as a backend of KrigingModel&lt;br /&gt;
* Addition of an EGO model builder.  This allows optimization of the model parameters using the well known Efficient Global Optimization (EGO) algorithm.  In essence this uses a nested Kriging Model to predict which parameters should be used to build the next model.&lt;br /&gt;
* Trivial dependencies on the Statistics Toolbox have been removed&lt;br /&gt;
* Added a new smoothness measure (LRMMeasure) that helps to ensure smooth models and reduce erratic bumps.  It works best when combined with other Measures (such as SampleError for ANN models) &lt;br /&gt;
* Models now have a simple evaluateDerivative() method that allows one to easily get gradient information.  The base class implementation is very simple but works. Models can override this method to get more efficient implementations.&lt;br /&gt;
* Added experimental support for the Matlab Parallel Computing Toolbox (local scheduler only).  This means that when the parallelMode option in ContextConfig is switched on, model construction will make use of all available cores/cpu&#039;s.&lt;br /&gt;
* Many speed improvements, some quite significant.&lt;br /&gt;
* Various cleanups and bugfixes&lt;br /&gt;
&lt;br /&gt;
== 6.0.1 - Released 23 August 2008 ==&lt;br /&gt;
&lt;br /&gt;
* Fixed a number of (minor) bugs in the 6.0 release&lt;br /&gt;
&lt;br /&gt;
== 6.0 - Released 6 August 2008 ==&lt;br /&gt;
&lt;br /&gt;
* Many important bugs have been fixed that could have resulted in sub-optimal models&lt;br /&gt;
* Addition of a Model Browser GUI, this allows you to easily &#039;walk&#039; through multi-dimensional models&lt;br /&gt;
* Moved the InitialDesign tag outside of the SUMO tag&lt;br /&gt;
* Some speed improvements&lt;br /&gt;
* Removed support for dummy inputs&lt;br /&gt;
* Measure scores and input/output names are saved inside the models, allowing for more usable plots&lt;br /&gt;
* Added the project directory concept, each example is now self contained in its own directory&lt;br /&gt;
* #simulatorname# can now be used in the run name, it will get replaced	by the real simulator name&lt;br /&gt;
* Input dimensions can be ignored during sampling if the simulator samples them for you. This is useful in EM applications for example where frequency points can be cheap.&lt;br /&gt;
* Logging framework revamped, logs can now be saved on a per run basis&lt;br /&gt;
* The global score calculation has changed! it is a weighted sum of all individual measures. (the weights are configurable but default to 1)&lt;br /&gt;
* Added a simple polynomial model where the orders can be chosen manually&lt;br /&gt;
* Countless cleanups, minor bugfixes and feature enhancements&lt;br /&gt;
&lt;br /&gt;
== 5.0 - Released 8 April 2008 ==&lt;br /&gt;
&lt;br /&gt;
* In April 2008, the first public release of the &#039;&#039;&#039;Surrogate Modeling (SUMO) Toolbox&#039;&#039;&#039; (v5.0) occurred. &lt;br /&gt;
* A major new release with countless fixes, improvements, new sampling and modeling algorithms, and much more.&lt;br /&gt;
&lt;br /&gt;
List of changes:&lt;br /&gt;
&lt;br /&gt;
* Fixed the &#039;Known bugs&#039; for v4.2 (see Wiki)&lt;br /&gt;
* data points now have priorities (assigned by the sample selectors)&lt;br /&gt;
* Vastly reworked and improved the sample evaluator framework&lt;br /&gt;
** robust handling of failed or &#039;lost&#039; data points&lt;br /&gt;
** pluggable input queue infrastructure to make advanced scheduling policies possible&lt;br /&gt;
* The number of samples to select each iteration is now selected dynamically, based on the time needed for modeling, the length of one simulation, the number of compute nodes available, ... A user specified upper bound can till be specified of course.&lt;br /&gt;
* Model plots are now in the original space instead of the normalized ([-1 1]) space&lt;br /&gt;
* The default error function is now the root relative square error (= a global relative error)&lt;br /&gt;
* Intelligent seeding of each new model parameter optimization iteration. This means the model parameter space is searched much more efficiently and completely&lt;br /&gt;
* Added a fast Neural Network Modeler based on FANN (http://fann.sf.net)&lt;br /&gt;
* Added a Neural Network Modeler based on NNSYSID (http://www.iau.dtu.dk/research/control/nnsysid.html)&lt;br /&gt;
* The LS-SVM model type has been merged with the SVM model type.  The SVM model now supports three backends: libSVM, SVMlight, and lssvm&lt;br /&gt;
* Added a SampleSelector using infill sampling criterions (ISC).&lt;br /&gt;
** The expected improvement from EGO/superEGO is provided among others. (only usable with Kriging and RBF)&lt;br /&gt;
* More robust handling of SSH sessions when running simulators on a remote cluster&lt;br /&gt;
* The TestSamples measure has been renamed to ValidationSet&lt;br /&gt;
* The Polynomial model type has been renamed to the more apt Rational model&lt;br /&gt;
* The grid and voronoi sample selectors have been renamed to Error and Density respectively&lt;br /&gt;
* Drastically reduced memory usage when performing many runs with multiple datasets (datasets are cached)&lt;br /&gt;
* Added utility functions for easily summarizing profiler data from a large number of runs&lt;br /&gt;
* Lots of speed improvements in the gradient sample selector&lt;br /&gt;
* The default settings have been harmonized and much improved&lt;br /&gt;
* The (LS)SVM parameter space is now searched in log10 instead of ln space&lt;br /&gt;
* Added a TestMinimum measure &lt;br /&gt;
** compares the minimum of the surrogate model against a predefined value (for instance a known minimum)&lt;br /&gt;
* Added a MinimumProfiler&lt;br /&gt;
** tracks the minimum of the surrogate model versus the number of iterations&lt;br /&gt;
* Movie creation now works on all supported platforms&lt;br /&gt;
* Added an optimizer class hierarchy for solving subproblems transparantly&lt;br /&gt;
* Cleaned up the structure of all the model classes so they no longer contain an interface object.  This was confusing and led to error prone code.  Virtually all subsref and subassgn implementations have also been removed.&lt;br /&gt;
* The MinMax measure is now enabled by default&lt;br /&gt;
* The Optimization framework was removed (and replaced) for various reasons, see: http://sumowiki.intec.ugent.be/index.php/FAQ#What_about_surrogate_driven_optimization.3F&lt;br /&gt;
* Fixed the file output of the profiler, formatting is correct now&lt;br /&gt;
* New implementation of a maximin latin hypercube design&lt;br /&gt;
** Minimizes pairwise correlation&lt;br /&gt;
** Minimizes intersite distance&lt;br /&gt;
* Removed dependency of factorial design on the statistics toolbox&lt;br /&gt;
* Added a plotOptions tag, this allows for more customisability of model plots (grey scale, light effects, ...)&lt;br /&gt;
* Profiler plots can now also be saved as JPG, PNG, EPS, PDF, PS and SVG&lt;br /&gt;
* Countless cleanups, minor bugfixes and feature enhancements&lt;br /&gt;
&lt;br /&gt;
== 4.2 - Released 18 October 2007 ==&lt;br /&gt;
&lt;br /&gt;
* Fixed the &#039;Known bugs&#039; for v4.1 (see Wiki)&lt;br /&gt;
* Simulators can be passed options through an &amp;lt;Options&amp;gt; tag&lt;br /&gt;
* Added a fixed model builder so you can manually force which model parameters to use&lt;br /&gt;
* Removed ProActive dependency for the SGE distributed backend&lt;br /&gt;
* Improved Makefile under unix/linux&lt;br /&gt;
* Data produced by simulators no longer needs to be pre-scaled to [-1 1], this can be done automatically from the simulator configuration file&lt;br /&gt;
* Deprecated the optimization framework. It is currently under re-design and a better, more integrated version, will be released with the next toolbox version.&lt;br /&gt;
* Lots of cleanups, minor bugfixes and small feature enhancements&lt;br /&gt;
* In October 2007, the development of the M3-Toolbox was discontinued.&lt;br /&gt;
&lt;br /&gt;
== 4.1 - Released 27 July 2007 ==&lt;br /&gt;
&lt;br /&gt;
* Fixed the &#039;Known bugs&#039; for v4.0 (see Wiki)&lt;br /&gt;
* Vastly improved test sample distribution if a test set is created on the fly&lt;br /&gt;
* Gradient sample selector now works with complex outputs and has improved neighbourhood selection&lt;br /&gt;
* Speed and usability improvements in the profiler framework&lt;br /&gt;
* Improvements in the profiler DockedView widget (added a right click context menu)&lt;br /&gt;
* Addition of some new examples&lt;br /&gt;
* Added an option (on by default) that selects a certain percentage of the grid sample selector&#039;s points randomly, making the algorithm more robust&lt;br /&gt;
* Some cleanups, minor bugfixes and feature enhancements&lt;br /&gt;
&lt;br /&gt;
== 4.0 - Released 22 June 2007 ==&lt;br /&gt;
&lt;br /&gt;
* IMPORTANT: the best model score is now 0 instead of 1, this is more intuitive&lt;br /&gt;
* Reworked and improved the model scoring mechanism, now based on a pareto analysis.  This makes it possible to combine multpile measures in a sensible way.&lt;br /&gt;
* Added a proof of concept surrogate driven optimization framework.  Note this is an initial implementation which works, but don&#039;t expect state of the art results.&lt;br /&gt;
* Cleanup and refactoring of the profiler framework&lt;br /&gt;
* The profiling of model parameters has been totally reworked and this can now easily be tracked in a nice GUI widget&lt;br /&gt;
* Cleanup of error function logic so you can now easily use different error functions (relative, RMS, ...) in the measures&lt;br /&gt;
* Improved model plotting&lt;br /&gt;
* Support for the SVMlight library (you must download it yourself in order to use it)&lt;br /&gt;
* Added a MinMax measure which can be used to suppress spikes in rational models&lt;br /&gt;
* Support for extinction prevention in the heterogenetic modeler&lt;br /&gt;
* Fixed warnings (and in some cases errors) when loading models from disk&lt;br /&gt;
* Respect the maximum running time more accurately&lt;br /&gt;
* Many cleanups, minor bugfixes and feature enhancements&lt;br /&gt;
&lt;br /&gt;
== 3.3 - Released 2 May 2007 ==&lt;br /&gt;
&lt;br /&gt;
* Fixed incorrect summary at the end of a run&lt;br /&gt;
* Fixed bug due to duplicate sample points&lt;br /&gt;
* Ability to evaluate multiple samples in parallel locally (support for dual/multi-core machines)&lt;br /&gt;
* Speedups when reading in datasets&lt;br /&gt;
* Added 2 new modelbuilders that optimize the parameters using;&lt;br /&gt;
** Pattern Search (requires the Matlab direct search toolbox)&lt;br /&gt;
** Simulated Annealing (requires Matlab v7.4 and the direct search toolbox)&lt;br /&gt;
** The Matlab Optimization Toolbox (includes different gradient based methods like BGFS)&lt;br /&gt;
* A new density based sample selction algorithm (VoronoiSampleSelector)&lt;br /&gt;
* New simulator examples to test with&lt;br /&gt;
* Addition of a profiler to generate levelplots&lt;br /&gt;
* Ability to generate Matlab API documentation using m2html&lt;br /&gt;
* New neural network training algorithms based on Differential Evolution and Particle Swarm Optimization&lt;br /&gt;
* It is now possible to call the toolbox with specific samples/values directly, e.g., go(&#039;myConfigFile.xml&#039;,xValues,yValues);&lt;br /&gt;
* Many minor bugfixes and feature enhancements&lt;br /&gt;
&lt;br /&gt;
== 3.2 - Released 9 Mar 2007 ==&lt;br /&gt;
&lt;br /&gt;
* Many important bugfixes&lt;br /&gt;
* Documentation improvements&lt;br /&gt;
* Fully working support for RBF models&lt;br /&gt;
* New measure profilers that track the errors on measures&lt;br /&gt;
* Many new predefined functions and datasets to test with.  We now have over 50 examples!&lt;br /&gt;
&lt;br /&gt;
==  3.1 - Released 28 Feb 2007 ==&lt;br /&gt;
&lt;br /&gt;
* Small bugfixes and usability improvements&lt;br /&gt;
* Improved documentation&lt;br /&gt;
* Working implementation of a heterogenous evolutionary modelbuilder&lt;br /&gt;
* More examples&lt;br /&gt;
&lt;br /&gt;
== 3.0 - Released 14 Feb 2007 ==&lt;br /&gt;
&lt;br /&gt;
* Availability of pre-built binaries&lt;br /&gt;
* Extensive refactoring and code cleanups&lt;br /&gt;
* Many bugfixes and usability improvements&lt;br /&gt;
* Resilience against simulator crashes&lt;br /&gt;
* Ability to set the maximum running time for one sample evaluation&lt;br /&gt;
* Vastly improved Genetic model builder + a neural network implementation&lt;br /&gt;
* Addition of a RandomModelBuilder to use as a baseline benchmark&lt;br /&gt;
* Possible to add dummy input variables or to model only a subset of the available inputs while clamping others&lt;br /&gt;
* Improved multiple output support&lt;br /&gt;
** outputs can be modeled in parallel&lt;br /&gt;
** each output can be configured separately (eg. per output: model type, accuracy requirements (measure), sample selection algorithm, complex handling flag, etc) &lt;br /&gt;
** mutliple outputs can be combined into one model if the model type supports this&lt;br /&gt;
* Noisy (gaussian, outliers, ...) versions of a given output can be automatically added &lt;br /&gt;
* New and improved directory structure for output data&lt;br /&gt;
* New model types:&lt;br /&gt;
** Kriging (based on the DACE MATLAB Kriging Toolbox by Lophaven, Nielsen and Sondergaard)&lt;br /&gt;
** Splines (based on the MATLAB Splines Toolbox, only for 1D and 2D)&lt;br /&gt;
* Now matlab scripts can be used as datasources (simulators) as well&lt;br /&gt;
* New initial experimental design&lt;br /&gt;
** Based on a dataset&lt;br /&gt;
** Combination of existing designs&lt;br /&gt;
** Based on the complexity of different 1D fits&lt;br /&gt;
* Addition of new datasets and predefined functions as modeling examples&lt;br /&gt;
&lt;br /&gt;
== 2.0 - Released 15 Nov 2006 ==&lt;br /&gt;
&lt;br /&gt;
* Initial release of the M3-Toolbox - open source&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Contact&amp;diff=5918</id>
		<title>Contact</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Contact&amp;diff=5918"/>
		<updated>2014-03-20T10:01:13Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Feedback ==&lt;br /&gt;
&lt;br /&gt;
For general feedback see the [[Feedback]] page first. To report problems see the [[Reporting problems]] page.&lt;br /&gt;
&lt;br /&gt;
== Contact persons ==&lt;br /&gt;
&lt;br /&gt;
* For practical issues related to downloading, using, installing and extending the toolbox contact [http:///sumo.intec.ugent.be/icouckuy Ivo Couckuyt] or [http://sumo.intec.ugent.be/?q=dirkg Dirk Gorissen]&lt;br /&gt;
* For more formal, organizational issues (e.g., collaboration proposal) contact [http://www.sumo.intec.ugent.be/?q=tomd Tom Dhaene]&lt;br /&gt;
&lt;br /&gt;
You may also use this [http://www.sumo.intec.ugent.be/?q=contact contact form].&lt;br /&gt;
&lt;br /&gt;
== Blog ==&lt;br /&gt;
&lt;br /&gt;
A blog about our current research is available here [http://sumolab.blogspot.com http://sumolab.blogspot.com]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Contact&amp;diff=5917</id>
		<title>Contact</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Contact&amp;diff=5917"/>
		<updated>2014-03-20T10:00:43Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Contact persons */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Feedback ==&lt;br /&gt;
&lt;br /&gt;
For general feedback see the [[Feedback]] page first. To report problems see the [[Reporting problems]] page.&lt;br /&gt;
&lt;br /&gt;
== Contact persons ==&lt;br /&gt;
&lt;br /&gt;
* For practical issues related to downloading, using, installing and extending the toolbox contact [http:///sumo.intec.ugent.be/icouckuy Ivo Couckuyt] or [http://sumo.intec.ugent.be/?q=dirkg Dirk Gorissen]&lt;br /&gt;
* For more formal, organizational issues (e.g., collaboration proposal) contact [http://www.sumo.intec.ugent.be/?q=tomd Tom Dhaene]&lt;br /&gt;
&lt;br /&gt;
You may also use this [http://www.sumo.intec.ugent.be/?q=contact contact form].&lt;br /&gt;
&lt;br /&gt;
== Newsletter ==&lt;br /&gt;
&lt;br /&gt;
To stay up to date with the latest news and releases, we also recommend subscribing to the [http://www.sumo.intec.ugent.be SUMO newsletter]. &lt;br /&gt;
&lt;br /&gt;
Traffic will be kept to a minimum and you can unsubscribe at any time.&lt;br /&gt;
&lt;br /&gt;
== Blog ==&lt;br /&gt;
&lt;br /&gt;
A blog about our current research is available here [http://sumolab.blogspot.com http://sumolab.blogspot.com]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Useful_Links&amp;diff=5916</id>
		<title>Useful Links</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Useful_Links&amp;diff=5916"/>
		<updated>2014-03-19T10:24:43Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Related publications ===&lt;br /&gt;
&lt;br /&gt;
See the [[Related publications]] page.&lt;br /&gt;
&lt;br /&gt;
=== Related projects ===&lt;br /&gt;
&lt;br /&gt;
A list of projects with similar ideas and scope.&lt;br /&gt;
* [http://www.cs.rtu.lv/jekabsons/regression.html] Matlab regression software&lt;br /&gt;
* [http://sites.google.com/site/gptips4matlab GTIPS] Matlab symbolic regression software using genetic programming&lt;br /&gt;
* [http://www.optiy.eu OptiY]&lt;br /&gt;
* [http://www.nutechsolutions.com/prod_cv_analytics.asp ClearVu Analytics]&lt;br /&gt;
* [https://sites.google.com/site/felipeacviana/ Surrogates Toolbox]: Another matlab surrogate modeling toolbox&lt;br /&gt;
* [http://www.evolved-analytics.com Evolved-Analytics]: DataModeler package.&lt;br /&gt;
* [http://www.muneda.com/ MunEDA]: MunEDA provides leading EDA software technology for analysis, modelling and optimization of yield and performance of analog, mixed-signal and digital designs.&lt;br /&gt;
* [http://www.lsoptsupport.com/faqs/setting-parameters-for-metamodel-based-optimization-strategies LS-OPT: Functionality similar to the SUMO-Toolbox in LS-OPT]&lt;br /&gt;
* [http://mucm.aston.ac.uk/MUCM/MUCMToolkit/index.php?page=MetaHomePage.html MUCH Toolkit]: A toolbox for sensitivity analysis using surrogate models&lt;br /&gt;
* [http://home.mit.bme.hu/~kollar/topics/fdident.html FDIDENT: frequency domain identification toolbox]&lt;br /&gt;
* [http://www.dmoz.org/Science/Math/Statistics/Software/Regression_and_Curve_Fitting/: Regression software on Open Directory]&lt;br /&gt;
* [http://www.infiniscale.com/ Infiniscale]: TechModeler, TechAnalyzer: automatic model generation tools for EM applications&lt;br /&gt;
* [http://www.vrand.com/visualDOC.html visualDOC]: VisualDOC, a design optimization tool&lt;br /&gt;
* [http://www.salford-systems.com/mars.php MARS]: A spline based modeling tool&lt;br /&gt;
* [http://www.phoenix-int.com/software/phx_modelcenter.php Modelcenter]: datamining and modeling tool&lt;br /&gt;
* [http://www.simulia.com/products/isight2.html iSIGHT]: datamining and modeling tool&lt;br /&gt;
* [http://www.tmpinc.com/datascape_overview.html Datascape]: datamining and modeling tool&lt;br /&gt;
* [http://www.friendship-systems.com/ Friendship systems]: Tools for modeling ship hulls parametrically and performing the modeling calculations (Equilibrium tool)&lt;br /&gt;
* [http://www.csse.monash.edu.au/%7Edavida/nimrod/nimrodg.htm Nimrod/G]: Execute parameter sweeps on the grid&lt;br /&gt;
* [http://www-sop.inria.fr/oasis/ProActive/ ProActive]: Java grid library &lt;br /&gt;
* [http://www.csse.monash.edu.au/%7Edavida/nimrod/nimrodo.htm Nimrod/O]: Grid-enabled optimization toolkit &lt;br /&gt;
* [http://www.ece.northwestern.edu/OTC/ NEOS]: Distributed optimization toolkit &lt;br /&gt;
* [http://software.sci.utah.edu/scirun.html SciRun]: Problem Solving Environment (PSE), for simulation, modeling, and visualization of scientific problems. &lt;br /&gt;
* [http://www.esteco.it/ ModeFRONTIER]: environment dedicated to the set up of design assessment chains and efficient investigation of the design space. &lt;br /&gt;
* [http://www.gridbus.org/ Gridbus]: metascheduler for the grid &lt;br /&gt;
* [http://icl.cs.utk.edu/netsolve/overview/ Gridsolve/Netsolve]: grid enabled scientific computation toolbox &lt;br /&gt;
* [http://www.dtreg.com/ DTREG]: a powerful statistical analysis program that generates classification and regression trees and Support Vector Machine models that can be used to predict parameter values. &lt;br /&gt;
* [http://www.soton.ac.uk/%7Epbn/MDO/ MDO]: A collection of MDO links &lt;br /&gt;
* [http://www.research.att.com/~njas/gosset/index.html GOSSET]: A general purpose program for designing experiments &lt;br /&gt;
* [http://www.cs.sandia.gov/DAKOTA/ DAKOTA]: Design Analysis Kit for Optimization and Terascale Applications&lt;br /&gt;
* [http://www.cs.cf.ac.uk/gridprojects/dipso/ DIPSO]: Wide-Area Distributed Problem Solving (DIPSO) &lt;br /&gt;
* [http://www.geodise.org GEODISE]: Grid Enabled Optimisation and Design Search for Engineering&lt;br /&gt;
* [http://www.fast.u-psud.fr/ezyfit/ EZfit] : Free curve fitting toolbox for matlab&lt;br /&gt;
* [http://www.ians.uni-stuttgart.de/spinterp/about.html SGIT] : A Sparse grid interpolation toolbox&lt;br /&gt;
* [http://www.csie.ntu.edu.tw/~yien/quickrbf/quickstart.php QuickRBF] : an RBF fitting library (native)&lt;br /&gt;
* [http://www.farfieldtechnology.com/products/toolbox/ FastRBF] : another RBF fitting library (matlab)&lt;br /&gt;
* [http://promethee.irsn.org PROMETHEE project: easy parametric modeling]&lt;br /&gt;
* [http://simlab.jrc.ec.europa.eu/ Sensitivity Analysis library]&lt;br /&gt;
* Gaussian Process Matlab code&lt;br /&gt;
** [http://www.gaussianprocess.org/gpml/code/matlab/doc/ Code] based on Rasmussen&#039;s book&lt;br /&gt;
** [http://www.cs.man.ac.uk/~neill/gp/ Gaussian Process Software]&lt;br /&gt;
** [http://www.ios.htwg-konstanz.de/joomla_mof/index.php?option=com_content&amp;amp;view=article&amp;amp;id=48:polyreg-polynomial-gaussian-process-regression&amp;amp;catid=36:code&amp;amp;Itemid=81 GP] using polynomial covariance functions&lt;br /&gt;
* [http://shark-project.sourceforge.net/ Shark Machine Learning Library - An open source machine learning bundle]&lt;br /&gt;
&lt;br /&gt;
=== Related labs ===&lt;br /&gt;
&lt;br /&gt;
A list of some of the labs/researchers with similar ideas and scope.&lt;br /&gt;
&lt;br /&gt;
* [http://aerospace.engin.umich.edu/index.html Department of Aerospace Engineering at the University of Michigan]&lt;br /&gt;
* [http://www.mae.ufl.edu/~mdo/ The Structural and Multidisciplinary Optimization Group at the University of Florida]&lt;br /&gt;
* [http://web.engr.oregonstate.edu/~tgd/ School of Electrical Engineering and Computer Science, Oregon State U]&lt;br /&gt;
* [http://www.soton.ac.uk/engineering/research/groups/ced.page  Southampton University Computational Engineering and Design Group]&lt;br /&gt;
* [http://edog.mne.psu.edu/  Engineering Design &amp;amp; Optimization Group (Penn state)]&lt;br /&gt;
* [http://nd.edu/~ame/ Aerospace and Mechanical Engineering] [http://www.gano.name/shawn/ Homepage]&lt;br /&gt;
* [http://shyylab.engin.umich.edu/research/design-optimization Computational Thermo-Fluids Group]&lt;br /&gt;
* [http://www.ensc.sfu.ca/~gwa5/index.htm Product Design and Optimization Laboratory (PDOL)]&lt;br /&gt;
* [http://www.cerfacs.fr/4-25708-Home.php Computational Fluid Dynamics (CFD) group at CERFACS]&lt;br /&gt;
* [http://webuser.uni-weimar.de/~roos1/ Dirk Roos]&lt;br /&gt;
* [http://www.cerfacs.fr/~duchaine/HTML/research.htm Florent Duchaine]&lt;br /&gt;
* http://www.nlr.nl/ National aerospace lab]&lt;br /&gt;
&lt;br /&gt;
=== Data sets - Simulation code ===&lt;br /&gt;
&lt;br /&gt;
A list of publicly available datasets and simulation codes, useful for testing.&lt;br /&gt;
&lt;br /&gt;
* [http://www.mat.univie.ac.at/~neum/stat.html Statistics links] : A nice collection of data fitting and analysis codes&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Classic_data_sets Wikipedia Classic Datasets]&lt;br /&gt;
* [http://www.uni-koeln.de/themen/Statistik/data/rousseeuw/ The ROUSSEEUW datasets]&lt;br /&gt;
* [ftp://ftp.sas.com/pub/neural/dojo/dojo.html Donoho-Johnstone Benchmarks] &lt;br /&gt;
* [http://people.scs.fsu.edu/~burkardt/datasets/datasets.html datasets]&lt;br /&gt;
* [http://www-syscom.univ-mlv.fr/~vignat/Signal/Space/index.html Spice like simulator for matlab]&lt;br /&gt;
* [http://www.itl.nist.gov/div898/strd/general/dataarchive.html Nist dataset archive]&lt;br /&gt;
* [http://homes.esat.kuleuven.be/~smc/daisy/daisydata.html Daisy datasets]&lt;br /&gt;
* [http://lib.stat.cmu.edu/datasets/ Statlib dataset archive]&lt;br /&gt;
* [http://www.iau.dtu.dk/nnbook/systems.html Datasets from the book &amp;quot;Neural networks for the modeling and control of dynamic systems.]&lt;br /&gt;
* [http://www.gpc.de/e_poses.html A simulation environment for production and transport, logistics and automation systems]&lt;br /&gt;
* [http://shumway.physics.asu.edu/codes.html Nanostructure Simulation and Modeling Programs]&lt;br /&gt;
* [http://pedsim.silmaril.org/ A Modular, Distributed Pedestrian Crowd Simulation System]&lt;br /&gt;
* [http://g95.sourceforge.net/g95_status.html Fortran simulation codes]&lt;br /&gt;
* [http://www.genie.ac.uk/ Grid ENabled Integrated Earth system model]&lt;br /&gt;
* [http://gcmd.nasa.gov/KeywordSearch/Home.do?Portal=GCMD&amp;amp;MetadataType=0 Nasa datasets]&lt;br /&gt;
* [http://funapp.cs.bilkent.edu.tr/DataSets/ Function approximation repository]&lt;br /&gt;
* [http://www.idsia.ch/~andrea/Andrea_Rizzoli_Home_Page/Sim_Tools.html A Collection of Modeling and Simulation Resources on the Internet]&lt;br /&gt;
* [http://www.grc.nasa.gov/WWW/K-12/freesoftware_page.htm Free simulation software from Nasa]&lt;br /&gt;
* [http://opensees.berkeley.edu/index.php Earthquake simulation]&lt;br /&gt;
* [http://www.pdl.cmu.edu/DiskSim/ Harddisk simulator]&lt;br /&gt;
* [http://spib.rice.edu/spib/mtn_top.html Mountain top radar data]&lt;br /&gt;
* [http://www.statsci.org/datasets.html Statsci dataset repository]&lt;br /&gt;
* [http://statwww.epfl.ch/davison/BMA/Data4BMA/ dataset repository]&lt;br /&gt;
* [http://astrostatistics.psu.edu/datasets/ dataset repository]&lt;br /&gt;
* [http://www.maths.uq.edu.au/CEToolBox/ problems from the Cross Entropy toolbox]&lt;br /&gt;
* [http://www.cs.waikato.ac.nz/~ml/weka/index_datasets.html Weka datasets]&lt;br /&gt;
* [http://www.ailab.si/orange/datasets.asp?Inst=on&amp;amp;Atts=on&amp;amp;Class=on&amp;amp;Values=on&amp;amp;Description=on&amp;amp;sort=Data+Set dataset repository]&lt;br /&gt;
* [http://www.itee.uq.edu.au/%7Emarcusg/msg.html Max Set of Gaussians Landscape Generator]&lt;br /&gt;
* [http://www.mathworks.fr/matlabcentral/fileexchange/loadAuthor.do?objectId=364966&amp;amp;objectType=author Collection of useful Matlab scripts by Thomas Abrahamsson ]&lt;br /&gt;
* [http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=10731&amp;amp;objectType=FILE# A Matlab toolbox for Linear Structural Dynamics Analysis]&lt;br /&gt;
* [http://webscripts.softpedia.com/script/Scientific-Engineering-Ruby/Controls-and-Systems-Modeling/StructDyn-32656.html Matlab simulators for control and systems modeling]&lt;br /&gt;
* [http://www.ae.uiuc.edu/m-selig/ads.html UIUC Airfoil Data Site]&lt;br /&gt;
* [http://public.ca.sandia.gov/TNF/abstract.html TNF workshop data archives]&lt;br /&gt;
* [http://www.gaussianprocess.org Code for kriging models]&lt;br /&gt;
* [http://www.comsol.be/ Comsol multiphysics] package&lt;br /&gt;
&lt;br /&gt;
=== Predefined functions ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.cs.cmu.edu/afs/cs/project/jair/pub/volume24/ortizboyer05a-html/node6.html Continuous benchmark problems]&lt;br /&gt;
* [http://www2.imm.dtu.dk/~km/Test_ex_forms/test_ex.html Optimization test functions]&lt;br /&gt;
* [http://www.geatbx.com/docu/fcnindex-01.html Optimization test functions]&lt;br /&gt;
* [http://www.ewh.ieee.org/soc/es/May2001/14/Begin.htm Optimization test functions]&lt;br /&gt;
* [http://www.it.lut.fi/ip/evo/functions/functions.html Optimization test functions]&lt;br /&gt;
* [http://www.cs.colostate.edu/~genitor/functions.html Optimization test functions]&lt;br /&gt;
* [http://www-optima.amp.i.kyoto-u.ac.jp/member/student/hedar/Hedar_files/TestGO_files/Page364.htm Optimization test functions]&lt;br /&gt;
* [http://www.it.lut.fi/ip/evo/functions/functions.html Functions with multiple global optima]&lt;br /&gt;
* [http://www.mat.univie.ac.at/~neum/glopt/moretest More test set]&lt;br /&gt;
* [http://www.mat.univie.ac.at/~neum/software/dixon.tar.gz Dixon-Szegö test set]&lt;br /&gt;
* [http://titan.princeton.edu/2010-10-11/TestProblems/ Handbook of Test Problems for local and global optimization]&lt;br /&gt;
&lt;br /&gt;
=== Optimization ===&lt;br /&gt;
&lt;br /&gt;
* [http://ab-initio.mit.edu/wiki/index.php/NLopt NLopt is a free/open-source library for nonlinear optimization]&lt;br /&gt;
* [http://www.tik.ee.ethz.ch/sop/pisa/ PISA optimization framework]&lt;br /&gt;
* [http://www.hvass-labs.org/projects/swarmops/ swarmOps]&lt;br /&gt;
* [http://www.icsi.berkeley.edu/~storn/code.html Differential Evolution]&lt;br /&gt;
* [http://control.ee.ethz.ch/~joloef/wiki/pmwiki.php YALMIP] High-level optimization problem solver, uses external solvers as backend&lt;br /&gt;
* [http://www.mat.univie.ac.at/~neum/glopt/software_g.html Global optimization software]&lt;br /&gt;
* [http://www.gerad.ca/NOMAD/Abramson/nomadm.html Mesh-Adaptive Direct Search (MADS) software in Matlab]&lt;br /&gt;
* [http://www-rocq.inria.fr/~gilbert/modulopt/modulopt.html Modulopt]: fortran implementations and some matlab&lt;br /&gt;
* [http://www.geodise.org/documentation/OptionsMatlab/html/ MatlabOptions] Matlab interface to the design and optimization package (OPTIONS).&lt;br /&gt;
&lt;br /&gt;
=== Various links ===&lt;br /&gt;
&lt;br /&gt;
* [http://videolectures.net/Top/Computer_Science/Machine_Learning/ An excellent collection of machine learning lecture videos]&lt;br /&gt;
* [http://home.online.no/~pjacklam/matlab/software/util/fullindex.html A collection of useful Matlab scripts]&lt;br /&gt;
* [http://home.online.no/~pjacklam/matlab/doc/mtt/  MATLAB array manipulation tips and tricks]&lt;br /&gt;
* [http://www.adaptivebox.net/research/bookmark/psocodes_link.html Particle Swarm implementations]&lt;br /&gt;
* [http://mloss.org A great selection of open source machine learning software]&lt;br /&gt;
* [http://stommel.tamu.edu/~baum/toolboxes.html A list of Matlab toolboxes]&lt;br /&gt;
* [http://mdoboard.proboards59.com/ ISSMO-REASON: Research and Engineering Applications in Structural Optimization Network]&lt;br /&gt;
* [http://www.nafems.org/about/ NAFEMS]&lt;br /&gt;
* [http://www.kat-net.net/ The European Coordinating Action on Key Aerodynamic Technologies]&lt;br /&gt;
* [http://www.altairhyperworks.co.uk/Default.aspx Altair Hyperworks]&lt;br /&gt;
* [http://www.ifte.de/english/research/index.html IFTE]&lt;br /&gt;
* [http://www.optiy.eu/Features.html OptyI]&lt;br /&gt;
* [http://www.technet-alliance.com/ Technet Alliance]&lt;br /&gt;
&lt;br /&gt;
=== Conference links ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.conferencealerts.com Conference alerts]&lt;br /&gt;
* [http://www.conferencealerts.com/engineer.htm Engineering conferences]&lt;br /&gt;
* [http://www.conferencealerts.com/ai.htm AI Conference alerts]&lt;br /&gt;
* [http://www.ieee.org/web/conferences/search/index.html IEEE conferences]&lt;br /&gt;
* [http://www.aiaa.org/content.cfm?pageid=1 AIAA Conferences]&lt;br /&gt;
* [http://www.wikicfp.com/ Wiki of conferences]&lt;br /&gt;
* [http://users.jyu.fi/~miettine/lista.html#Conferences Kaisa&#039;s conferences]&lt;br /&gt;
* [http://www.conference-service.com/conferences/neural-networks.html AI Conferences]&lt;br /&gt;
* [http://ieee-cis.org/conferences/co_sponsorship_1/ IEEE CIS conferences]&lt;br /&gt;
* [http://www.makhfi.com/events.htm Neural Network Events]&lt;br /&gt;
* [http://openresearch.org/mw/index.php?title=Upcoming_deadlines&amp;amp;field=Machine+learning Open research AI conferences]&lt;br /&gt;
* [http://ppsn2014.ijs.si International Conference on Parallel Problem Solving from Nature]&lt;br /&gt;
* [http://icannga.com International Conference on Adaptive and Natural Computing Algorithms]&lt;br /&gt;
* [http://www.engopt.org/ EngOpt]&lt;br /&gt;
* [http://www.sigevo.org/gecco-2014/ Genetic and Evolutionary Computation Conference]&lt;br /&gt;
* [http://iccs2014.ivec.org/ International Conference on Computational Science]&lt;br /&gt;
* [http://www.iccsa.org International Conference on Computational Science and Applications]&lt;br /&gt;
&lt;br /&gt;
=== Journal Links ===&lt;br /&gt;
&lt;br /&gt;
*[http://www.linklings.net/tomacs/charter.html ACM Transactions on Modeling and Computer Simulation]&lt;br /&gt;
*[http://www.elsevier.com/wps/find/journaldescription.cws_home/622330/description#description Simulation Modelling Practice and Theory]&lt;br /&gt;
*[http://www.elsevier.com/wps/find/journaldescription.cws_home/422911/description#description Advances in Engineering Software]&lt;br /&gt;
*[http://journaltool.asme.org/Content/JournalDescriptions.cfm?journalId=12 Journal of Mechanical Design ]&lt;br /&gt;
*[http://journaltool.asme.org/Content/JournalDescriptions.cfm?journalId=3&amp;amp;Journal=JCISE Journal of Computing and Information Science in Engineering]&lt;br /&gt;
*[http://www.elsevier.com/wps/find/journaldescription.cws_home/975/description#description Engineering Applications of Artificial Intelligence]&lt;br /&gt;
*[http://www.elsevier.com/wps/find/journaldescription.cws_home/622240/description#description Advanced Engineering Informatics]&lt;br /&gt;
*[http://www.springer.com/computer/information+systems/journal/366 Engineering with Computers]&lt;br /&gt;
*[http://www.springer.com/computer/mathematics/journal/521 Neural Computing and Applications]&lt;br /&gt;
*[http://www.aiaa.org/content.cfm?pageid=322&amp;amp;lupubid=2 AIAA Journal]&lt;br /&gt;
*[http://journals.cambridge.org/action/displayJournal?jid=aie Artificial Intelligence for Engineering Design, Analysis and Manufacturing ]&lt;br /&gt;
*[http://jmlr.csail.mit.edu/ Journal of Machine Learning Research]&lt;br /&gt;
*[http://www.elsevier.com/wps/find/journaldescription.cws_home/505645/description#description Computer Methods in Applied Mechanics and Engineering]&lt;br /&gt;
*[http://www.elsevier.com/wps/find/journaldescription.cws_home/524998/description#description Applied Mathematical Modelling]&lt;br /&gt;
*[http://www.siam.org/journals/sisc.php SIAM Journal on Scientific Computing]&lt;br /&gt;
*[http://www.iop.org/EJ/journal/-page=scope/0266-5611 Inverse Problems]&lt;br /&gt;
*[http://www.tandf.co.uk/journals/titles/17415977.asp Inverse problems in science and engineering]&lt;br /&gt;
*[http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=3468 IEEE Transactions on Systems, Man and Cybernetics, Part A]&lt;br /&gt;
*[http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=3477 IEEE Transactions on Systems, Man and Cybernetics, Part B]&lt;br /&gt;
*[http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5326 IEEE Transactions on Systems, Man and Cybernetics, Part C]&lt;br /&gt;
*[http://www.techscience.com/cmes/aims_scope.html Computer Modeling in Engineering &amp;amp; Sciences]&lt;br /&gt;
*[http://www.informaworld.com/smpp/title~db=all~content=t713723652~tab=summary Journal of Experimental &amp;amp; Theoretical Artificial Intelligence]&lt;br /&gt;
*[http://www.elsevier.com/locate/jocs Journal of Computational Science]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Tips&amp;diff=5915</id>
		<title>Tips</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Tips&amp;diff=5915"/>
		<updated>2014-03-17T17:20:36Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* If you want to benchmark your computer for Matlab speed simply run &amp;quot;bench&amp;quot; in Matlab.&lt;br /&gt;
&lt;br /&gt;
* You can switch off adaptive sample selection if you do not specify a [[Config:SequentialDesign| &amp;lt;SequentialDesign&amp;gt;]] tag. See [[Adaptive Modeling Mode]].&lt;br /&gt;
&lt;br /&gt;
* Remember that the Measure (and error function you use) strongly influence the quality and fit of the surrogate model. If you are unhappy with the final model, try a different [[Measures| Measure]] and/or [[FAQ#How_do_I_change_the_error_function_.28relative_error.2C_RMS.2C_....29.3F| error function]]. See also [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
* If the toolbox is too slow for you can speed it up in different ways. See: [[FAQ#How_can_I_make_the_toolbox_run_faster.3F]].&lt;br /&gt;
&lt;br /&gt;
* By default Matlab warnings are turned off.  To turn them on, either edit configure.m or type &#039;warning on&#039; before running &#039;go&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;A blog&#039;&#039;&#039; covering related research can be found here [http://sumolab.blogspot.com/ http://sumolab.blogspot.com].&lt;br /&gt;
&lt;br /&gt;
* More information on how to run the SUMO toolbox on a cluster/grid with no Matlab installation can be found [[Running_SUMO_on_UGent_HPC|here]].&lt;br /&gt;
&lt;br /&gt;
* Some helpful scripts to run SUMO on a SGE (sun grid) cluster is [[Sun_NG1|here]].&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Model_types_explained&amp;diff=5914</id>
		<title>Model types explained</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Model_types_explained&amp;diff=5914"/>
		<updated>2014-03-17T17:16:05Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page gives some additional information about the implementation of Models implemented in the SUMO Toolbox. Note that the information is only given for the Model class and additional options may be available in the corresponding ModelFactory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;We are well aware that documentation is not always complete and possibly even out of date in some cases. We try to document everything as best we can but much is limited by available time and manpower.  We are are a university research group after all. The most up to date documentation can always be found (if not here) in the default.xml configuration file and, of course, in the source files.  If something is unclear please dont hesitate to [[Reporting problems|ask]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Also see the [[Using a model]] and [[Add Model Type]] pages. &lt;br /&gt;
&lt;br /&gt;
== Model (Abstract base class) ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;Model&amp;lt;/code&amp;gt; class serves as an overall base class, it is the interface to which all models should adhere.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RationalModel ==&lt;br /&gt;
&lt;br /&gt;
A rational model tries to interpolate or approximate data by a rational function, like&lt;br /&gt;
&amp;lt;math&amp;gt;3 x^2 y + 5 x y + 2x + 1&amp;lt;/math&amp;gt;&lt;br /&gt;
or by a quotient of 2 polynomial, like&lt;br /&gt;
&amp;lt;math&amp;gt;\dfrac{xy + 2x + 6y + 2}{xy + 1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To decide which degrees (monomials) are present in numerator and denominator, the rational model depends on three model parameters:&lt;br /&gt;
* Variable weights W1 ... Wd (integer values, one for each dimension)&lt;br /&gt;
* Variable flags F1 ... Fd (boolean values, one for each dimension)&lt;br /&gt;
* An indicator for the degrees of freedom, P&lt;br /&gt;
&lt;br /&gt;
To determine which degrees to use, this procedure is followed:&lt;br /&gt;
# Determine the number of sample points N&lt;br /&gt;
# Use P to determine the requested degrees of freedom: freedom = N * P / 100&lt;br /&gt;
# Select degrees based on weighting and flags, using following rules:&lt;br /&gt;
#* Only variables for which Fi == false (0) are allowed in the denominator&lt;br /&gt;
#* Monomials with degrees (a1 ... ad) get precedence over monomials with degrees (b1 ... bd) if and only if the expression a1*W1 + ... + ad*Wd &amp;lt; b1*W1 + ... + bd*Wd&lt;br /&gt;
&lt;br /&gt;
The calculation of these suitable degrees are delegated to the Degrees class, which uses a Java implementation (Diophantine Solver) to order the monomials using the weighted expression.&lt;br /&gt;
&lt;br /&gt;
Rationale: The weighting scheme is in place because the number of model parameters had to be restricted in some way. [[http://www.sumo.intec.ugent.be/files/1999_09_IEEE_MTT.pdf|De Geest et al.]] used such a weighting scheme before to discriminate between variables. The toolbox tries to select suitable values adaptively. In this way, it can eliminate variables which have no significant impact on the output (like in the Kotanchek example).&lt;br /&gt;
&lt;br /&gt;
Please note that &#039;&#039;larger weights&#039;&#039; correspond to &#039;&#039;less important variables&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Two extra options are of interest:&lt;br /&gt;
# Selection of base function (a function handle)&lt;br /&gt;
# The frequencyVariable parameter (a variable name, or the keywords auto or off)&lt;br /&gt;
&lt;br /&gt;
It is sometimes advantageous to use a different set of base functions. The default set is just the power function: 1, x, x^2, ... The toolbox provides two alternatives for this, the Legendre base functions, and the Chebyshev base functions. Each occurrence of x^i in the above should be read as &#039;&#039;the value of the i&#039;th base function in x&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
When the frequencyVariable parameter resolves to a variable name, or when it is set to auto and there is a variable named f, freq or frequency, that variable is treated differently. First of all it is scaled to by strictly positive. To do this the standard interval [-1,1] is rescaled to [j,2*j], in order to represent a true complex frequency. Then, a standard RationalModel is built, using &#039;&#039;only real coefficients&#039;&#039;. Only use this feature when [[Outputs#Complex_handling|complexHandling]] is set to &#039;complex&#039;, otherwise it is pointless.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SVMModel ==&lt;br /&gt;
&lt;br /&gt;
SVMModel is the SUMO class for Support Vector Machines (SVM). It is a wrapper class for three different SVM implementations: LibSVM [http://www.csie.ntu.edu.tw/~cjlin/libsvm/], SVM-Light [http://svmlight.joachims.org/] and LS-SVM [http://www.esat.kuleuven.be/sista/lssvmlab/]. You can find more information about each implementation on their websites and in the SVMModel code.&lt;br /&gt;
&lt;br /&gt;
SVMModel has the following properties (note that some of these properties only apply to one specific implementation):&lt;br /&gt;
&lt;br /&gt;
* backend: Chooses which SVM implementation to use. The following options are valid: libSVM, libSVM, and lssvm. By default LibSVM is used.&lt;br /&gt;
* kernel: Chooses the kernel of the SVM. The following options are available: rbf (radial basis functions), lin (linear), poly (polynomial), and sig (sigmoid)&lt;br /&gt;
* kernelParams: Lets you specify the specific kernel parameters, the options here are dependent on the backend used&lt;br /&gt;
* regularizationParam: Lets you specify the trade-off parameter between the margin and the training error. The regularization parameter will be 10^regularizationParam&lt;br /&gt;
* epsilon: Sets the epsilon parameter of support vector regression (SVR). &lt;br /&gt;
* stoppingTolerance: Sets the tolerance for the stopping criterion.&lt;br /&gt;
* nu: Set the nu parameter of nu-SVR and nu-SVC (only for LibSVM)&lt;br /&gt;
* type: Sets the type of LibSVM (nu-SVR, epsilon-SVR, etc...)&lt;br /&gt;
* crossvalidationFolds: Set the number of folds for LibSVM in cross-validation mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== EureqaModel ==&lt;br /&gt;
&lt;br /&gt;
The EureqaModel implements the interface between the SUMO Toolbox and the Eureqa Toolbox. This interface is modified code from [http://www.mathworks.com/matlabcentral/fileexchange/32225-interface-with-eureqa-featuring-symbolic-regression]. The EureqaModel implementation does not do modelling itself, instead it connects to a Eureqa server from which it retrieves the solution. Hence, first the Eureqa server needs to be installed, see the [[Installing_Eureqa|installation instructions]]. The options for the EureqaModel are the following:&lt;br /&gt;
&lt;br /&gt;
* fitness: Chooses the fitness function of the genetic search. The fitness functions are coded, e.g. 0 -&amp;gt; mean absolute error. The complete list of fitness functions can be found [http://code.google.com/p/eureqa-api/wiki/doc_fitness_types here].&lt;br /&gt;
* operators: A string with the operators allowed in the genetic search. The operators can be given in arbitrary order spaces not necessary. The set of possible operators is limited compared to the standalone GUI version of Eureqa. Only &#039;constant, +, -, *, /, ^, exp, log, sin, cos, abs, tan&#039; are supported.&lt;br /&gt;
* duration: The amount of time allocated to the genetic search in second. &lt;br /&gt;
* debug: Displays intermediate information during the search.&lt;br /&gt;
* doStart: If this is true, SUMO will automatically start a Eureqa server. If additional options about the server are given (see below) SUMO will start the server with these options. Otherwise a Eureqa server has to be started manually. &lt;br /&gt;
* pathToServer: The path where the Eureqa server is located. By default SUMO will look in the directory of the EureqaFactory class.&lt;br /&gt;
* host: The name of the host of the Eureqa server, by default this is localhost.&lt;br /&gt;
* port: The port with which to connect to the Eureqa Server.&lt;br /&gt;
* forceCores: Forces the server to use a specified amount of CPU cores.&lt;br /&gt;
* maxCores: Set the maximum number of CPU cores the Eureqa server can use.&lt;br /&gt;
* scaleFactors: Models in SUMO normally work in Model space, i.e. the input space is scaled to [-1 1] for all dimensions. The scaleFactors property tells SUMO how this [-1 1] should be scaled instead. When calling a EureqaModel from the EureqaFactory, the scaleFactors will be set equal to those defined in the Simulator.xml of the problem.&lt;br /&gt;
&lt;br /&gt;
EureqaModel returns a solution string which can be accessed by the method model.getFormula. The method model.getAllSolutions will give the entire pareto front of solutions as a cell of strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MOVFModel ==&lt;br /&gt;
&lt;br /&gt;
The MOVFModel implements the Multivariate Orthonormal Vector Fitting (MOVF) technique [http://www.sumo.intec.ugent.be/files/2008_07_IEEE_MTT.pdf]. This is a rational that fits the data in a least-square sense. This model is not included in the release version of the SUMO Toolbox due to licensing issues. Due to the implementation, the &#039;&#039;&#039;frequency has to be the last parameter&#039;&#039;&#039; of data given to the MOVFModel.&lt;br /&gt;
&lt;br /&gt;
The properties for MOVFModel are the following:&lt;br /&gt;
&lt;br /&gt;
* order: A vector with the order of each input parameter. If the basis used is rational, all the orders have to be even. If the basis used is polynomial, the orders for the geometrical parameters can be any positive integer, and only the order of the frequency has to be even. &lt;br /&gt;
* iter: Determines the number of internal optimization iterations of the MOVFModel.&lt;br /&gt;
* basis: Specifies the basis used to model the geometric parameters of the MOVFModel. The basis can either be &#039;&#039;rational&#039;&#039; or &#039;&#039;polynomial&#039;&#039;.&lt;br /&gt;
* errorFunc: A string with the name of an error function used to optimize the MOVFModel internally. The valid options can be found in src/matlab/tools/errorFunctions&lt;br /&gt;
* scaleFactors: Scales the data from the default [-1 1] input of SUMO to the desired bounds. When calling the MOVFModel from MOVFFactory the bounds defined in the Simulator.xml of the problem will be used.&lt;br /&gt;
* batchSize: Sets the number of samples that are evaluated simultaneously.&lt;br /&gt;
&lt;br /&gt;
The coefficients of the MOVFModel can be accessed via model.getMOVF.coef.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Model_types_explained&amp;diff=5913</id>
		<title>Model types explained</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Model_types_explained&amp;diff=5913"/>
		<updated>2014-03-17T17:15:25Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page gives some additional information about the implementation of Models implemented in the SUMO Toolbox. Note that the information is only given for the Model class and additional options may be available in the corresponding ModelFactory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;We are well aware that documentation is not always complete and possibly even out of date in some cases. We try to document everything as best we can but much is limited by available time and manpower.  We are are a university research group after all. The most up to date documentation can always be found (if not here) in the default.xml configuration file and, of course, in the source files.  If something is unclear please dont hesitate to [[Reporting problems|ask]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Also see the [[Using a model]] and [[Add Model Type]] pages. &lt;br /&gt;
&lt;br /&gt;
== Model (Abstract base class) ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;Model&amp;lt;/code&amp;gt; class serves as an overall base class, it is the interface to which all models should adhere.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RationalModel ==&lt;br /&gt;
&lt;br /&gt;
A rational model tries to interpolate or approximate data by a rational function, like&lt;br /&gt;
&amp;lt;math&amp;gt;3 x^2 y + 5 x y + 2x + 1&amp;lt;/math&amp;gt;&lt;br /&gt;
or by a quotient of 2 polynomial, like&lt;br /&gt;
&amp;lt;math&amp;gt;\dfrac{xy + 2x + 6y + 2}{xy + 1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To decide which degrees (monomials) are present in numerator and denominator, the rational model depends on three model parameters:&lt;br /&gt;
* Variable weights W1 ... Wd (integer values, one for each dimension)&lt;br /&gt;
* Variable flags F1 ... Fd (boolean values, one for each dimension)&lt;br /&gt;
* An indicator for the degrees of freedom, P&lt;br /&gt;
&lt;br /&gt;
To determine which degrees to use, this procedure is followed:&lt;br /&gt;
# Determine the number of sample points N&lt;br /&gt;
# Use P to determine the requested degrees of freedom: freedom = N * P / 100&lt;br /&gt;
# Select degrees based on weighting and flags, using following rules:&lt;br /&gt;
#* Only variables for which Fi == false (0) are allowed in the denominator&lt;br /&gt;
#* Monomials with degrees (a1 ... ad) get precedence over monomials with degrees (b1 ... bd) if and only if the expression a1*W1 + ... + ad*Wd &amp;lt; b1*W1 + ... + bd*Wd&lt;br /&gt;
&lt;br /&gt;
The calculation of these suitable degrees are delegated to the Degrees class, which uses a Java implementation (Diophantine Solver) to order the monomials using the weighted expression.&lt;br /&gt;
&lt;br /&gt;
Rationale: The weighting scheme is in place because the number of model parameters had to be restricted in some way. [[http://www.sumo.intec.ugent.be/files/1999_09_IEEE_MTT.pdf|De Geest et al.]] used such a weighting scheme before to discriminate between variables. The toolbox tries to select suitable values adaptively. In this way, it can eliminate variables which have no significant impact on the output (like in the Kotanchek example).&lt;br /&gt;
&lt;br /&gt;
Please note that &#039;&#039;larger weights&#039;&#039; correspond to &#039;&#039;less important variables&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Two extra options are of interest:&lt;br /&gt;
# Selection of base function (a function handle)&lt;br /&gt;
# The frequencyVariable parameter (a variable name, or the keywords auto or off)&lt;br /&gt;
&lt;br /&gt;
It is sometimes advantageous to use a different set of base functions. The default set is just the power function: 1, x, x^2, ... The toolbox provides two alternatives for this, the Legendre base functions, and the Chebyshev base functions. Each occurrence of x^i in the above should be read as &#039;&#039;the value of the i&#039;th base function in x&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
When the frequencyVariable parameter resolves to a variable name, or when it is set to auto and there is a variable named f, freq or frequency, that variable is treated differently. First of all it is scaled to by strictly positive. To do this the standard interval [-1,1] is rescaled to [j,2*j], in order to represent a true complex frequency. Then, a standard RationalModel is built, using &#039;&#039;only real coefficients&#039;&#039;. Only use this feature when [[Outputs#Complex_handling|complexHandling]] is set to &#039;complex&#039;, otherwise it is pointless.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SVMModel ==&lt;br /&gt;
&lt;br /&gt;
SVMModel is the SUMO class for Support Vector Machines (SVM). It is a wrapper class for three different SVM implementations: LibSVM [http://www.csie.ntu.edu.tw/~cjlin/libsvm/], SVM-Light [http://svmlight.joachims.org/] and LS-SVM [http://www.esat.kuleuven.be/sista/lssvmlab/]. You can find more information about each implementation on their websites and in the SVMModel code.&lt;br /&gt;
&lt;br /&gt;
SVMModel has the following properties (note that some of these properties only apply to one specific implementation):&lt;br /&gt;
&lt;br /&gt;
* backend: Chooses which SVM implementation to use. The following options are valid: libSVM, libSVM, and lssvm. By default LibSVM is used.&lt;br /&gt;
* kernel: Chooses the kernel of the SVM. The following options are available: rbf (radial basis functions), lin (linear), poly (polynomial), and sig (sigmoid)&lt;br /&gt;
* kernelParams: Lets you specify the specific kernel parameters, the options here are dependent on the backend used&lt;br /&gt;
* regularizationParam: Lets you specify the trade-off parameter between the margin and the training error. The regularization parameter will be 10^regularizationParam&lt;br /&gt;
* epsilon: Sets the epsilon parameter of support vector regression (SVR). &lt;br /&gt;
* stoppingTolerance: Sets the tolerance for the stopping criterion.&lt;br /&gt;
* nu: Set the nu parameter of nu-SVR and nu-SVC (only for LibSVM)&lt;br /&gt;
* type: Sets the type of LibSVM (nu-SVR, epsilon-SVR, etc...)&lt;br /&gt;
* crossvalidationFolds: Set the number of folds for LibSVM in cross-validation mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== EureqaModel ==&lt;br /&gt;
&lt;br /&gt;
The EureqaModel implements the interface between the SUMO Toolbox and the Eureqa Toolbox. This interface is modified code from [http://www.mathworks.com/matlabcentral/fileexchange/32225-interface-with-eureqa-featuring-symbolic-regression]. The EureqaModel implementation does not do modelling itself, instead it connects to a Eureqa server from which it retrieves the solution. Hence, first the Eureqa server needs to be installed, see [[Installing_Eureqa]]. The options for the EureqaModel are the following:&lt;br /&gt;
&lt;br /&gt;
* fitness: Chooses the fitness function of the genetic search. The fitness functions are coded, e.g. 0 -&amp;gt; mean absolute error. The complete list of fitness functions can be found [http://code.google.com/p/eureqa-api/wiki/doc_fitness_types here].&lt;br /&gt;
* operators: A string with the operators allowed in the genetic search. The operators can be given in arbitrary order spaces not necessary. The set of possible operators is limited compared to the standalone GUI version of Eureqa. Only &#039;constant, +, -, *, /, ^, exp, log, sin, cos, abs, tan&#039; are supported.&lt;br /&gt;
* duration: The amount of time allocated to the genetic search in second. &lt;br /&gt;
* debug: Displays intermediate information during the search.&lt;br /&gt;
* doStart: If this is true, SUMO will automatically start a Eureqa server. If additional options about the server are given (see below) SUMO will start the server with these options. Otherwise a Eureqa server has to be started manually. &lt;br /&gt;
* pathToServer: The path where the Eureqa server is located. By default SUMO will look in the directory of the EureqaFactory class.&lt;br /&gt;
* host: The name of the host of the Eureqa server, by default this is localhost.&lt;br /&gt;
* port: The port with which to connect to the Eureqa Server.&lt;br /&gt;
* forceCores: Forces the server to use a specified amount of CPU cores.&lt;br /&gt;
* maxCores: Set the maximum number of CPU cores the Eureqa server can use.&lt;br /&gt;
* scaleFactors: Models in SUMO normally work in Model space, i.e. the input space is scaled to [-1 1] for all dimensions. The scaleFactors property tells SUMO how this [-1 1] should be scaled instead. When calling a EureqaModel from the EureqaFactory, the scaleFactors will be set equal to those defined in the Simulator.xml of the problem.&lt;br /&gt;
&lt;br /&gt;
EureqaModel returns a solution string which can be accessed by the method model.getFormula. The method model.getAllSolutions will give the entire pareto front of solutions as a cell of strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MOVFModel ==&lt;br /&gt;
&lt;br /&gt;
The MOVFModel implements the Multivariate Orthonormal Vector Fitting (MOVF) technique [http://www.sumo.intec.ugent.be/files/2008_07_IEEE_MTT.pdf]. This is a rational that fits the data in a least-square sense. This model is not included in the release version of the SUMO Toolbox due to licensing issues. Due to the implementation, the &#039;&#039;&#039;frequency has to be the last parameter&#039;&#039;&#039; of data given to the MOVFModel.&lt;br /&gt;
&lt;br /&gt;
The properties for MOVFModel are the following:&lt;br /&gt;
&lt;br /&gt;
* order: A vector with the order of each input parameter. If the basis used is rational, all the orders have to be even. If the basis used is polynomial, the orders for the geometrical parameters can be any positive integer, and only the order of the frequency has to be even. &lt;br /&gt;
* iter: Determines the number of internal optimization iterations of the MOVFModel.&lt;br /&gt;
* basis: Specifies the basis used to model the geometric parameters of the MOVFModel. The basis can either be &#039;&#039;rational&#039;&#039; or &#039;&#039;polynomial&#039;&#039;.&lt;br /&gt;
* errorFunc: A string with the name of an error function used to optimize the MOVFModel internally. The valid options can be found in src/matlab/tools/errorFunctions&lt;br /&gt;
* scaleFactors: Scales the data from the default [-1 1] input of SUMO to the desired bounds. When calling the MOVFModel from MOVFFactory the bounds defined in the Simulator.xml of the problem will be used.&lt;br /&gt;
* batchSize: Sets the number of samples that are evaluated simultaneously.&lt;br /&gt;
&lt;br /&gt;
The coefficients of the MOVFModel can be accessed via model.getMOVF.coef.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=System_requirements&amp;diff=5894</id>
		<title>System requirements</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=System_requirements&amp;diff=5894"/>
		<updated>2014-03-17T09:11:16Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Mandatory Requirements ==&lt;br /&gt;
&lt;br /&gt;
In order to use the SUMO Toolbox you must have &#039;&#039;at least&#039;&#039; the following:&lt;br /&gt;
&lt;br /&gt;
* [http://www.mathworks.com/ Matlab] version R2008b up to R2014a&lt;br /&gt;
Other versions &#039;&#039;may&#039;&#039; work, it depends on what you need.&lt;br /&gt;
&lt;br /&gt;
In addition the following Matlab toolboxes are strongly recommended (it depends on what you use):&lt;br /&gt;
&lt;br /&gt;
* [http://www.mathworks.com/products/neuralnet/ Neural Network Toolbox]&lt;br /&gt;
* [http://www.mathworks.com/products/gads/ Genetic Algorithm and Direct Search Toolbox]&lt;br /&gt;
&lt;br /&gt;
And to a lesser degree, but still recommended:&lt;br /&gt;
&lt;br /&gt;
* [http://www.mathworks.com/products/statistics/ Statistics Toolbox]&lt;br /&gt;
* [http://www.mathworks.com/products/optimization/ Optimization Toolbox]&lt;br /&gt;
* [http://www.mathworks.com/products/splines/ Splines Toolbox]&lt;br /&gt;
&lt;br /&gt;
Finally, if you wish to try the support for parallel computing you will need:&lt;br /&gt;
&lt;br /&gt;
* [http://www.mathworks.com/products/parallel-computing/ Parallel Computing Toolbox]&lt;br /&gt;
&lt;br /&gt;
The SUMO Toolbox will work on every operating system that Matlab supports (Windows, Mac OSX, Linux, Solaris, ...), see the [http://www.mathworks.com/support/sysreq/previous_releases.html Matlab website] for details.&lt;br /&gt;
&lt;br /&gt;
== Compilation Requirements ==&lt;br /&gt;
&lt;br /&gt;
If you want to compile the toolbox from source you will need:&lt;br /&gt;
&lt;br /&gt;
* Java SDK v1.5 or greater (we have only tested the JDK from Sun Microsystems)&lt;br /&gt;
* [http://ant.apache.org/ Apache Ant] or [http://www.eclipse.org Eclipse]&lt;br /&gt;
&lt;br /&gt;
If you want to use some of the Support Vector Machine or fast Neural Network libraries you will need the standard GNU tools (make, gcc, ...) as well, to compile the C/C++ codes.&lt;br /&gt;
&lt;br /&gt;
See the [[installation]] instructions for how to compile the toolbox.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Add_Model_Type&amp;diff=5893</id>
		<title>Add Model Type</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Add_Model_Type&amp;diff=5893"/>
		<updated>2014-03-17T09:06:06Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
The SUMO Toolbox provides a number of built-in model types (Rational Functions, Support Vector Machines, ...) that already cover a wide range of problem types. However, you may have existing modeling code that you would like to plug into the toolbox since it is more suited to your particular problem.  The toolbox tries to make this as easy as possible.&lt;br /&gt;
&lt;br /&gt;
Before you continue please ensure you are familiar with [[OO Programming in Matlab|Object Oriented Programming in Matlab]].&lt;br /&gt;
&lt;br /&gt;
== Models, Model builders, and Factories ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Modelfactory.png|thumb|Schematic representation of the relationship between ModelBuilder, ModelFactory, Model. Click on the picture for a larger version.]]&lt;br /&gt;
&lt;br /&gt;
It is very important to first grasp the difference between Model builders, Model Factories and Models.  Remember that each model type as a set of parameters that control the complexity of the model. For example a polynomial model has a degree parameter, an SVM has a kernel function, Kriging has theta parameters, etc. We refer to these parameters as hyperparameters or model parameters. In order to generate a good model you need to search for a good set of model parameters (with respect to a [[Measures|Measure]]).  In essence this is an optimization problem in model parameter space (= hyperparameter space).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A Model&#039;&#039;&#039; is an implementation of a &#039;&#039;&#039;machine learning algorithm&#039;&#039;&#039;, such Artificial Neural Networks (ANN) or Support Vector Machines (SVM). When a Model object is constructed when running the SUMO toolbox, its hyperparameters have to be set. This is where the difficulty usually lies.  Setting good values for the model parameters to accurately model the data requires finding the right balance between the bias/variance tradeoff and in many cases this is more of an art than a science.&lt;br /&gt;
&lt;br /&gt;
To facilitate the setting of the model parameters (=hyperparameters) the SUMO Toolbox uses &#039;&#039;&#039;Model Builders&#039;&#039;&#039;. Finding the best model parameters given the data can be seen as a (constrained) optimization problem over the parameter space. Model Builders are implementations of &#039;&#039;&#039;optimization algorithms&#039;&#039;&#039; (pattern search, GA, simulated annealing, NSGA-II,...) which can be used for this task. For information on how to add a new Model Builder see [[Add Modeling Algorithm| Add a Model Builder]].  One single run of a model builder (e.g, doing one round of parameter optimization for SVM with pattern search) is referred to as one &#039;&#039;modeling iteration&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Model Factories&#039;&#039;&#039; provide an &#039;&#039;&#039;interface&#039;&#039;&#039; between the Model Builder and the Model. A Model Factory is responsible for reading the configuration options and telling the Model Builder what hyperparameters it has to optimize. In turn the Model Builder will instruct the Model Factory to construct an actual Model objects with the hyperparameters found during the optimization search. Without the Model Factory, each optimization algorithm would have to be manually customized to work with a particular model. This is reflected in the configuration XML: each ModelBuilder configuration section contains a Model Factory as well as the ModelBuilder itself. For example the &#039;anngenetic&#039; ModelBuilder, is a combination of a &#039;GeneticModelBuilder&#039; and an &#039;ANNFactory&#039;.&lt;br /&gt;
&lt;br /&gt;
The simplest way to see how this work is by looking at some of the Model and Model Factories included in the SUMO Toolbox such as SplineFactory and SplineModel.&lt;br /&gt;
&lt;br /&gt;
== Adding a model type ==&lt;br /&gt;
&lt;br /&gt;
So first you must provide the implementation of the model itself.  This requires subclassing from the base class Model and overriding its abstract methods.  You may override any of the other public (non final) methods if you wish.  For example you will probably want to override &#039;constructInModelSpace&#039; since that method takes care of actually training the model on a given set of data.  Again, you can use the SplineModel class as a simple example to follow.&lt;br /&gt;
&lt;br /&gt;
Before you start remember this: Internally, the toolbox always works on the [-1,1] domain. Even when another range is defined in the [[Simulator configuration]], the models (and all other components of the toolbox) still function on the [-1,1] domain. This is called &amp;quot;model space&amp;quot;, as opposed to &amp;quot;simulator space&amp;quot;, which can have any range. The toolbox will take of converting between model space and simulator space so you typically only have to worry about the xxxxInModelSpace methods.&lt;br /&gt;
&lt;br /&gt;
Also remember that your model should always contain a no-argument constructor (ie, it should be constructable without any arguments).&lt;br /&gt;
&lt;br /&gt;
For a list of methods available to a Model see [[Using a model]].&lt;br /&gt;
&lt;br /&gt;
== Adding a model factory ==&lt;br /&gt;
&lt;br /&gt;
Now that you have a model type you have to add a ModelFactory.  In this case you must Subclass from BasicFactory.  If you want to support the GeneticModelBuilder with a custom population type (ie, like ANNFActory does) you must subclass from GeneticFactory.&lt;br /&gt;
&lt;br /&gt;
Again you simply have to provide an implementation for the abstract methods which should be pretty self-explanatory. Typically the methods you would want to implement are:&lt;br /&gt;
&lt;br /&gt;
* createModel&lt;br /&gt;
* createInitialModels&lt;br /&gt;
* getBounds&lt;br /&gt;
&lt;br /&gt;
Already with those two methods your model type will be able to work with most model builders.&lt;br /&gt;
&lt;br /&gt;
You then just have to make sure your constructor reads the options set in the configuration file (you choose your own options and toolbox will take care you only get the options belonging to you).  The SplineFactory can serve as an example.&lt;br /&gt;
&lt;br /&gt;
Having created your Factory you can now add an XML tag to the toolbox configuration file and you should be able to use your model type with any ModelBuilder.  Thus you should be good to go :)&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Add_Profiler&amp;diff=5892</id>
		<title>Add Profiler</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Add_Profiler&amp;diff=5892"/>
		<updated>2014-03-17T09:04:55Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Profilers are java objects that function similar to the logging objects from [http://java.sun.com/j2se/1.5.0/docs/guide/logging/overview.html java.util.logging].  They allow you to record different statistics during the modeling process that you can use to track and assess the performance of the modeling algorithms used.  &lt;br /&gt;
&lt;br /&gt;
Examples of profilers are:&lt;br /&gt;
&lt;br /&gt;
* Track the average time it takes to evaluate a sample&lt;br /&gt;
* Track the score of the current best model&lt;br /&gt;
* Track the value of the model parameters as they are optimized&lt;br /&gt;
* Track the memory used&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A large number of profilers is included but only a small number are enabled by default (see [[FAQ#How_do_I_enable_more_profilers.3F| FAQ: How do I enable more profilers]] for how to enable them).  You can find them in the configuration file and their output in the &amp;lt;code&amp;gt;output/&amp;lt;run_name+date+time&amp;gt;/profilers&amp;lt;/code&amp;gt; directory.  It is very easy to use and define your own.  Look at the Profiler and ModelBuilder.m sources to see how they are used.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Configuration&amp;diff=5891</id>
		<title>Configuration</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Configuration&amp;diff=5891"/>
		<updated>2014-03-17T08:38:46Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The full behavior of the SUMO Toolbox is configurable through 2 [[FAQ#What_is_XML.3F| XML]] files:&lt;br /&gt;
&lt;br /&gt;
* [[Toolbox configuration]] xml file: all the options related to the toolbox itself, which model types to use, how to score models, what sample selection strategy to use, etc.  All options related to the &#039;modeling&#039;.&lt;br /&gt;
** The [[Config:ToolboxConfiguration|default configuration]] can be used as a starting point to the several components of the toolbox.&lt;br /&gt;
* [[Simulator configuration]] xml file: defines the interface with the [[simulator]], how many inputs, how many outputs, ranges, name of the executable or dataset, etc.  This file is found inside each project directory in the &amp;lt;code&amp;gt;examples/&amp;lt;/code&amp;gt; subdirectory.  If you want to add your own, please see [[Adding an example]].&lt;br /&gt;
&lt;br /&gt;
The Toolbox configuration file will contain the name of the simulator project to use (specified in the &amp;lt;code&amp;gt;&amp;lt;Simulator&amp;gt;&amp;lt;/code&amp;gt; tag). For information how to run different examples see [[Running#Running_different_examples|running different examples]].&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=License_terms2&amp;diff=5890</id>
		<title>License terms2</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=License_terms2&amp;diff=5890"/>
		<updated>2014-03-17T08:28:17Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:osilogo.jpg|90px|right|Open Source Initiative]]&lt;br /&gt;
&lt;br /&gt;
The SUMO Toolbox is available under a dual license model. For &#039;&#039;&#039;non-commercial&#039;&#039;&#039; use, the toolbox is available under the [http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3] (AGPLv3), an [http://www.opensource.org/ OSI] approved [http://en.wikipedia.org/wiki/Open_source open source] license.  For use in a commercial setting, a commercial license must be obtained.&lt;br /&gt;
&lt;br /&gt;
In addition we require that any reference to the SUMO Toolbox be accompanied by the [[Citing|corresponding publication]].&lt;br /&gt;
&lt;br /&gt;
== License terms ==&lt;br /&gt;
&lt;br /&gt;
This program is free software; you can redistribute it and/or modify it under&lt;br /&gt;
the terms of the GNU Affero General Public License version 3 as published by the&lt;br /&gt;
Free Software Foundation.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful, but WITHOUT ANY&lt;br /&gt;
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A&lt;br /&gt;
PARTICULAR PURPOSE.  See the GNU Affero General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU Affero General Public License along&lt;br /&gt;
with this program; if not, see http://www.gnu.org/licenses or write to the Free&lt;br /&gt;
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA&lt;br /&gt;
02110-1301 USA, or download the license from the following URL:&lt;br /&gt;
&lt;br /&gt;
[http://www.fsf.org/licensing/licenses/agpl-3.0.html http://www.fsf.org/licensing/licenses/agpl-3.0.html]&lt;br /&gt;
&lt;br /&gt;
In accordance with Section 7(b) of the GNU Affero General Public License, these&lt;br /&gt;
Appropriate Legal Notices must retain the display of the &amp;quot;SUMO Toolbox&amp;quot; text and&lt;br /&gt;
homepage.  In addition, when mentioning the program in written work, reference&lt;br /&gt;
must be made to the [[Citing|corresponding publication]].&lt;br /&gt;
&lt;br /&gt;
You can be released from these requirements by purchasing a commercial license.&lt;br /&gt;
Buying such a license is in most cases mandatory as soon as you develop&lt;br /&gt;
commercial activities involving the SUMO Toolbox software. Commercial activities&lt;br /&gt;
include: consultancy services or using the SUMO Toolbox in commercial projects &lt;br /&gt;
(standalone, on a server, through a webservice or other remote access technology).&lt;br /&gt;
&lt;br /&gt;
For details about a commercial license please [[Contact]] us.&lt;br /&gt;
&lt;br /&gt;
== Notice ==&lt;br /&gt;
&lt;br /&gt;
Only our own original work is licensed under the terms described above.&lt;br /&gt;
The licenses of some libraries used might impose different redistribution or&lt;br /&gt;
general licensing terms than those stated above. Users and&lt;br /&gt;
redistributors are hereby requested to verify these conditions and agree upon&lt;br /&gt;
them.&lt;br /&gt;
&lt;br /&gt;
A list of the licenses of these 3rd party libraries can be found in doc/licenses.&lt;br /&gt;
The corresponding code can be found in the src/matlab/contrib directory and the&lt;br /&gt;
iminds.sumo.contrib Java package.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=License_terms&amp;diff=5889</id>
		<title>License terms</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=License_terms&amp;diff=5889"/>
		<updated>2014-03-17T08:27:54Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:osilogo.jpg|90px|right|Open Source Initiative]]&lt;br /&gt;
[[Image:Agpl3.png|90px|right|AGPLv3]]&lt;br /&gt;
&lt;br /&gt;
The SUMO Toolbox is available under a &#039;&#039;&#039;dual license&#039;&#039;&#039; model. &lt;br /&gt;
&lt;br /&gt;
For &amp;lt;font color=red&amp;gt;&#039;&#039;&#039;non-commercial&#039;&#039;&#039;&amp;lt;/font&amp;gt; use, the toolbox is available under the [http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3] (AGPLv3), an [http://www.opensource.org/ OSI] approved [http://en.wikipedia.org/wiki/Open_source open source] license.  &lt;br /&gt;
&lt;br /&gt;
For use in a &amp;lt;font color=red&amp;gt;&#039;&#039;&#039;commercial&#039;&#039;&#039;&amp;lt;/font&amp;gt; setting, a commercial license must be obtained.&lt;br /&gt;
&lt;br /&gt;
In addition we require that any reference to the SUMO Toolbox be accompanied by the [[Citing|corresponding publication]].&lt;br /&gt;
&lt;br /&gt;
== License terms ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Sumo.jpg|150 px|right|blindDACE Toolbox]]&lt;br /&gt;
&lt;br /&gt;
For &amp;lt;font color=red&amp;gt;&#039;&#039;&#039;non-commercial&#039;&#039;&#039;&amp;lt;/font&amp;gt; use, this program is free software; you can redistribute it and/or modify it under the terms of the [http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3] as published by the Free Software Foundation.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU Affero General Public License along with this program; if not, see http://www.gnu.org/licenses or write to the Free&lt;br /&gt;
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA, or download the license from the following URL: [http://www.fsf.org/licensing/licenses/agpl-3.0.html http://www.fsf.org/licensing/licenses/agpl-3.0.html]&lt;br /&gt;
&lt;br /&gt;
In accordance with Section 7(b) of the GNU Affero General Public License, these Appropriate Legal Notices must retain the display of the &amp;quot;&#039;&#039;&#039;SUMO Toolbox&#039;&#039;&#039;&amp;quot; text and homepage.  In addition, when mentioning the program in written work, reference must be made to the [[Citing|corresponding SUMO publication]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can be released from these requirements by purchasing a &amp;lt;font color=red&amp;gt;&#039;&#039;&#039;commercial&#039;&#039;&#039;&amp;lt;/font&amp;gt; license. Buying such a license is in most cases mandatory as soon as you develop commercial activities involving the SUMO Toolbox software. Commercial activities include: consultancy services or using the SUMO Toolbox in commercial projects  (standalone, on a server, through a webservice or other remote access technology).&lt;br /&gt;
&lt;br /&gt;
For details about a commercial license please [[contact]] us.&lt;br /&gt;
&lt;br /&gt;
== Notice ==&lt;br /&gt;
&lt;br /&gt;
Only our own original work is licensed under the terms described above.&lt;br /&gt;
The licenses of some libraries used might impose different redistribution or&lt;br /&gt;
general licensing terms than those stated above. Users and&lt;br /&gt;
redistributors are hereby requested to verify these conditions and agree upon&lt;br /&gt;
them.&lt;br /&gt;
&lt;br /&gt;
A list of the licenses of these 3rd party libraries can be found in doc/licenses.&lt;br /&gt;
The corresponding code can be found in the src/matlab/contrib directory and the&lt;br /&gt;
iminds.sumo.contrib Java package.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=FAQ&amp;diff=5888</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=FAQ&amp;diff=5888"/>
		<updated>2014-03-17T08:27:33Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
=== What is a global surrogate model? ===&lt;br /&gt;
&lt;br /&gt;
A global [http://en.wikipedia.org/wiki/Surrogate_model surrogate model] is a mathematical model that mimics the behavior of a computationally expensive simulation code over &#039;&#039;&#039;the complete parameter space&#039;&#039;&#039; as accurately as possible, using as little data points as possible. So note that optimization is not the primary goal, although it can be done as a post-processing step. Global surrogate models are useful for:&lt;br /&gt;
&lt;br /&gt;
* design space exploration, to get a &#039;&#039;feel&#039;&#039; of how the different parameters behave&lt;br /&gt;
* sensitivity analysis&lt;br /&gt;
* &#039;&#039;what-if&#039;&#039; analysis&lt;br /&gt;
* prototyping&lt;br /&gt;
* visualization&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
In addition they are a cheap way to model large scale systems, multiple global surrogate models can be chained together in a model cascade.&lt;br /&gt;
&lt;br /&gt;
See also the [[About]] page.&lt;br /&gt;
&lt;br /&gt;
=== What about surrogate driven optimization? ===&lt;br /&gt;
&lt;br /&gt;
When coining the term &#039;&#039;&#039;surrogate driven optimization&#039;&#039;&#039; most people associate it with trust-region strategies and simple polynomial models. These frameworks first construct a local surrogate which is optimized to find an optimum. Afterwards, a move limit strategy decides how the local surrogate is scaled and/or moved through the input space. Subsequently the surrogate is rebuild and optimized. I.e. the surrogate zooms in to the global optimum. For instance the [http://www.cs.sandia.gov/DAKOTA/ DAKOTA] Toolbox implements such strategies where the surrogate construction is separated from optimization.&lt;br /&gt;
&lt;br /&gt;
Such a framework was earlier implemented in the SUMO Toolbox but was deprecated as it didn&#039;t fit the philosophy and design of the toolbox. &lt;br /&gt;
&lt;br /&gt;
Instead another, equally powerful, approach was taken. The current optimization framework is in fact a sampling selection strategy that balances local and global search. In other words, it balances between exploring the input space and exploiting the information the surrogate gives us.&lt;br /&gt;
&lt;br /&gt;
A configuration example can be found [[Config:SampleSelector#expectedImprovement|here]].&lt;br /&gt;
&lt;br /&gt;
=== What is (adaptive) sampling? Why is it used? ===&lt;br /&gt;
&lt;br /&gt;
In classical Design of Experiments you need to specify the design of your experiment up-front. Or in other words, you have to say up-front how many data points you need and how they should be distributed.  Two examples are Central Composite Designs and Latin Hypercube designs.  However, if your data is expensive to generate (e.g., an expensive simulation code) it is not clear how many points are needed up-front.  Instead data points are selected adaptively, only a couple at a time.  This process of incrementally selecting new data points in regions that are the most interesting is called adaptive sampling, sequential design, or active learning.  Of course the sampling process needs to start from somewhere so the very first set of points is selected based on a fixed, classic experimental design.  See also [[Running#Understanding_the_control_flow]].&lt;br /&gt;
SUMO provides a number of different sampling algorithms: [[Config:SequentialDesign|SequentialDesign]]&lt;br /&gt;
&lt;br /&gt;
Of course sometimes you dont want to do sampling.  For example if you have a fixed dataset you just want to load all the data in one go and model that.  For how to do this see [[FAQ#How_do_I_turn_off_adaptive_sampling_.28run_the_toolbox_for_a_fixed_set_of_samples.29.3F]].&lt;br /&gt;
&lt;br /&gt;
=== What about dynamical, time dependent data? ===&lt;br /&gt;
&lt;br /&gt;
The original design and purpose was to tackle static input-output systems, where there is no memory. Just a complex mapping that must be learnt and approximated. Of course you can take a fixed time interval and apply the toolbox but that typically is not a desired solution.  Usually you are interested in time series prediction, e.g., given a set of output values from time t=0 to t=k, predict what happens at time t=k+1,k+2,...&lt;br /&gt;
&lt;br /&gt;
The toolbox was originally not intended for this purpose.  However, it is quite easy to add support for recurrent models.  Automatic generation of dynamical models would involve adding a new model type (just like you would add a new regression technique) or require adapting an existing one.  For example it would not be too much work to adapt the ANN or SVM models to support dynamic problems.  The only extra work besides that would be to add a new [[Measures|Measure]] that can evaluate the fidelity of the models&#039; prediction.&lt;br /&gt;
&lt;br /&gt;
Naturally though, you would be unable to use sample selection (since it makes no sense in those problems).  Unless of course there is a specialized need for it.  In that case you would add a new [[Config:SequentialDesign|SequentialDesign]].&lt;br /&gt;
&lt;br /&gt;
For more information on this topic [[Contact]] us.&lt;br /&gt;
&lt;br /&gt;
=== What about classification problems? ===&lt;br /&gt;
&lt;br /&gt;
The main focus of the SUMO Toolbox is on regression/function approximation.  However, the framework for hyperparameter optimization, model selection, etc.  can also be used for classification.  Starting from version 6.3 a demo file is included in the distribution that shows how this works on the well known two spiral test problem. It is possible to specify a run as a classification problem by setting the &#039;classificationMode&#039; and &#039;numberOfClasses&#039; option in ContextConfig in the configuration file. Classification models from WEKA are also available in SUMO. Please refer to the default configuration file for the explanation on usage of WEKA model types available through SUMO. The LOLA-Voronoi sample selection scheme also supports classification, and its usage is documented in the default configuration file as well.&lt;br /&gt;
&lt;br /&gt;
=== Does SUMO support discrete inputs/outputs ===&lt;br /&gt;
&lt;br /&gt;
Not, if you mean in a smart way.  There is a way to flag an input/output as discrete but it is not used anywhere.  It is on the wishlist but we have not been able to get to it yet.  Discrete inputs are just handled as if they were continuous.  Depending on how many levels there are and if there is an ordering this may work ok or not work at all.  You could of course add your own model type that can handle these :)  As for discrete outputs see [[FAQ#What_about_classification_problems.3F]].&lt;br /&gt;
&lt;br /&gt;
=== Can the toolbox drive my simulation code directly? ===&lt;br /&gt;
&lt;br /&gt;
Yes it can.  See the [[Interfacing with the toolbox]] page.&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between the M3-Toolbox and the SUMO-Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
The SUMO toolbox is a complete, feature-full framework for automatically generating approximation models and performing adaptive sampling. In contrast, the M3-Toolbox was more of a proof-of-principle.&lt;br /&gt;
&lt;br /&gt;
=== What happened to the M3-Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
The M3 Toolbox project has been discontinued (Fall 2007) and superseded by the SUMO Toolbox. Please contact tom.dhaene@ugent.be for any inquiries and requests about the M3 Toolbox.&lt;br /&gt;
&lt;br /&gt;
=== How can I stay up to date with the latest news? ===&lt;br /&gt;
&lt;br /&gt;
To stay up to date with the latest news and releases, we also recommend subscribing to our newsletter [http://www.sumo.intec.ugent.be here].  Traffic will be kept to a minimum (1 message every 2-3 months) and you can unsubscribe at any time.&lt;br /&gt;
&lt;br /&gt;
You can also follow our blog: [http://sumolab.blogspot.com/ http://sumolab.blogspot.com/].&lt;br /&gt;
&lt;br /&gt;
=== What is the roadmap for the future? ===&lt;br /&gt;
&lt;br /&gt;
There is no explicit roadmap since much depends on where our research leads us, what feedback we get, which problems we are working on, etc.  However, to get an idea of features to come you can always check the [[Whats new]] page.&lt;br /&gt;
&lt;br /&gt;
You can also follow our blog: [http://sumolab.blogspot.com/ http://sumolab.blogspot.com/].&lt;br /&gt;
&lt;br /&gt;
=== Will there be an R/Scilab/Octave/Sage/.. version? ===&lt;br /&gt;
&lt;br /&gt;
At the start of the project we considered moving from Matlab to one of the available open source alternatives.  However, after much discussion we decided against this for several reasons, including:&lt;br /&gt;
&lt;br /&gt;
* Existing experience and know-how of the development team&lt;br /&gt;
* The widespread use of the Matlab platform in the target application domains&lt;br /&gt;
* The quality and amount of available Matlab documentation&lt;br /&gt;
* The quality and number of Matlab toolboxes&lt;br /&gt;
* Support for object orientation (inheritance, polymorphism, etc.)&lt;br /&gt;
* Many well documented interfacing options (especially the seamless integration with Java)&lt;br /&gt;
&lt;br /&gt;
Matlab, as a proprietary platform, definitely has its problems and deficiencies but the number of advanced algorithms and available toolboxes make it a very attractive platform.  Equally important is the fact that every function is properly documented, tested, and includes examples, tutorials, and in some cases GUI tools.  A lot of things would have been a lot harder and/or time consuming to implement on one of the other platforms.  Add to that the fact that many engineers (particularly in aerospace) already use Matlab quite heavily.  Thus given our situation, goals, and resources at the time, Matlab was the best choice for us.  &lt;br /&gt;
&lt;br /&gt;
The other platforms remain on our radar however, and we do look into them from time to time.  Though, with our limited resources porting to one of those platforms is not (yet) cost effective.&lt;br /&gt;
&lt;br /&gt;
=== What are collaboration options? ===&lt;br /&gt;
&lt;br /&gt;
We will gladly help out with any SUMO-Toolbox related questions or problems. However, since we are a university research group the most interesting goal for us is to work towards some joint publication (e.g., we can help with the modeling of your problem).  Alternatively, it is always nice if we could use your data/problem (fully referenced and/or anonymized if necessary of course) as an example application during a conference presentation or in a PhD thesis.&lt;br /&gt;
&lt;br /&gt;
The most interesting case is if your problem involves sample selection and modeling.  This means you have some simulation code or script to drive and you want an accurate model while minimizing the number of data points.  In this case, in order for us to optimally help you it would be easiest if we could run your simulation code (or script) locally or access it remotely.  Else its difficult to give good recommendations about what settings to use.&lt;br /&gt;
&lt;br /&gt;
If this is not possible (e.g., expensive, proprietary or secret modeling code) or if your problem does not involve sample selection, you can send us a fixed data set that is representative of your problem. Again, this may be fully anonymized and will be kept confidential of course.&lt;br /&gt;
&lt;br /&gt;
In either case (code or dataset) remember:&lt;br /&gt;
&lt;br /&gt;
* the data file should be an ASCII file in column format (each row containing one data point) (see also [[Interfacing_with_the_toolbox]])&lt;br /&gt;
* include a short description of your data:&lt;br /&gt;
** number of inputs and number of outputs&lt;br /&gt;
** the range of each input (or scaled to [-1 1] if you do not wish to disclose this)&lt;br /&gt;
** if the outputs are real or complex valued&lt;br /&gt;
** how noisy the data is or if it is completely deterministic (computer simulation) (please also see: [[FAQ#My_data_contains_noise_can_the_SUMO-Toolbox_help_me.3F]]).&lt;br /&gt;
** if possible the expected range of each output (or scaled if you do not wish to disclose this)&lt;br /&gt;
** if possible the names of each input/output + a short description of what they mean&lt;br /&gt;
** any further insight you have about the data, expected behavior, expected importance of each input, etc.&lt;br /&gt;
&lt;br /&gt;
If you have any further questions or comments related to this please [[Contact]] us.&lt;br /&gt;
&lt;br /&gt;
=== Can you help me model my problem? ===&lt;br /&gt;
&lt;br /&gt;
Please see the previous question: [[FAQ#What_are_collaboration_options.3F]]&lt;br /&gt;
&lt;br /&gt;
== Installation and Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== What is the relationship between Matlab and Java? ===&lt;br /&gt;
&lt;br /&gt;
Many people do not know this, but your Matlab installation automatically includes a Java virtual machine.  By default, Matlab seamlessly integrates with Java, allowing you to create Java objects from the command line (e.g., &#039;s = java.lang.String&#039;).  It is possible to disable java support but in order to use the SUMO Toolbox it should not be.  To check if Java is enabled you can use the &#039;usejava&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== What is Java, why do I need it, do I have to install it, etc. ? ===&lt;br /&gt;
&lt;br /&gt;
The short answer is: no, dont worry about it.  The long answer is: Some of the code of the SUMO Toolbox is written in [http://en.wikipedia.org/wiki/Java_(programming_language) Java], since it makes a lot more sense in many situations and is a proper programming language instead of a scripting language like Matlab.  Since Matlab automatically includes a JVM to run Java code there is nothing you need to do or worry about (see the previous FAQ entry).  Unless its not working of course, in that case see [[FAQ#When_running_the_toolbox_you_get_something_like_.27.3F.3F.3F_Undefined_variable_.22iminds.22_or_class_.22iminds.sumo.config.ContextConfig.setRootDirectory.22.27]].&lt;br /&gt;
&lt;br /&gt;
=== What is XML? ===&lt;br /&gt;
&lt;br /&gt;
XML stands for eXtensible Markup Language and is related to HTML (= the stuff web pages are written in).  The first thing you have to understand is that &#039;&#039;&#039;does not do anything&#039;&#039;&#039;. Honest. Many engineers are not used to it and think it is some complicated computer programming language-stuff-thingy.  This is of course not the case (we ignore some of the fancy stuff you can do with it for now).  XML is a markup language meaning, it provides some rules how you can annotate or structure existing text.&lt;br /&gt;
&lt;br /&gt;
The way SUMO uses XML is really simple and there is not much to understand (for more information on how SUMO uses XML go this  [[Config:ToolboxConfiguration#Interpreting_the_configuration_file|page]]). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First some simple terminology.  Take the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Foo attr=&amp;quot;bar&amp;quot;&amp;gt;bla bla bla&amp;lt;/Foo&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here we have &#039;&#039;&#039;a tag&#039;&#039;&#039; called &#039;&#039;Foo&#039;&#039; containing text &#039;&#039;bla bla bla&#039;&#039;.  The tag Foo also has an &#039;&#039;&#039;attribute&#039;&#039;&#039; &#039;&#039;attr&#039;&#039; with value &#039;&#039;bar&#039;&#039;.  &#039;&amp;lt;Foo&amp;gt;&#039; is what we call the &#039;&#039;&#039;opening tag&#039;&#039;&#039;, and &#039;&amp;lt;/Foo&amp;gt;&#039; is the &#039;&#039;&#039;closing tag&#039;&#039;&#039;.  Each time you open a tag you must close it again.  How you name the tags or attributes it totally up to you, you choose :)&lt;br /&gt;
&lt;br /&gt;
Lets take a more interesting example.  Here we have used XML to represent information about a receipe for pancakes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;recipe category=&amp;quot;dessert&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;Pancakes&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;sumo@intec.ugent.be&amp;lt;/author&amp;gt;&lt;br /&gt;
  &amp;lt;date&amp;gt;Wed, 14 Jun 95&amp;lt;/date&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
    Good old fashioned pancakes.&lt;br /&gt;
  &amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;ingredients&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
        &amp;lt;amount&amp;gt;3&amp;lt;/amount&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;eggs&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
         &amp;lt;amount&amp;gt;0.5 tablespoon&amp;lt;/amount&amp;gt;&lt;br /&gt;
         &amp;lt;type&amp;gt;salt&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
  &amp;lt;/ingredients&amp;gt;&lt;br /&gt;
  &amp;lt;preparation&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/preparation&amp;gt;&lt;br /&gt;
 &amp;lt;/recipe&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So basically, you see that XML is just a way to structure, order, and group information.  Thats it!  So SUMO basically uses it to store and structure configuration options.  And this works well due to the nice hierarchical nature of XML.&lt;br /&gt;
&lt;br /&gt;
If you understand this there is nothing else to it in order to be able to understand the SUMO configuration files.  If you need more information see the tutorial here: [http://www.w3schools.com/XML/xml_whatis.asp http://www.w3schools.com/XML/xml_whatis.asp].  You can also have a look at the wikipedia page here: [http://en.wikipedia.org/wiki/XML http://en.wikipedia.org/wiki/XML]&lt;br /&gt;
&lt;br /&gt;
=== Why does SUMO use XML? ===&lt;br /&gt;
&lt;br /&gt;
XML is the de facto standard way of structuring information. This ranges from spreadsheet files (Microsoft Excel for example), to configuration data, to scientific data, ...  There are even whole database systems based solely on XML.  So basically, its an intuitive way to structure data and it is used everywhere.  This makes that there are a very large number of libraries and programming languages available that can parse, and handle XML easily.  That means less work for the programmer.  Then of course there is stuff like XSLT, XQuery, etc that makes life even easier.&lt;br /&gt;
So basically, it would not make sense for SUMO to use any other format :). For more information on how SUMO uses XML go this [[Config:ToolboxConfiguration#Interpreting_the_configuration_file|page]].&lt;br /&gt;
&lt;br /&gt;
=== I get an error that SUMO is not yet activated ===&lt;br /&gt;
&lt;br /&gt;
Make sure you installed the activation file that was mailed to you as is explained in the [[Installation]] instructions.  Also double check your system meets the [[System requirements]] and that [http://www.sumowiki.intec.ugent.be/index.php/FAQ#When_running_the_toolbox_you_get_something_like_.27.3F.3F.3F_Undefined_variable_.22iminds.22_or_class_.22iminds.sumo.config.ContextConfig.setRootDirectory.22.27|java java is enabled].  To fully verify that the activation file installation is correct ensure that the file ContextConfig.class is present in the directory &#039;&#039;&amp;lt;SUMO installation directory&amp;gt;/bin/java/iminds/sumo/config&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Please note that more flexible research licenses are available if it is possible to [[FAQ#What_are_collaboration_options.3F|collaborate in any way]].&lt;br /&gt;
&lt;br /&gt;
== Upgrading ==&lt;br /&gt;
&lt;br /&gt;
=== How do I upgrade to a newer version? ===&lt;br /&gt;
&lt;br /&gt;
Delete your old &amp;lt;code&amp;gt;&amp;lt;SUMO-Toolbox-directory&amp;gt;&amp;lt;/code&amp;gt; completely and replace it by the new one.  Install the new activation file / extension pack as  before (see [[Installation]]), start Matlab and make sure the default run works.  To port your old configuration files to the new version: make a copy of default.xml (from the new version) and copy over your custom changes (from the old version) one by one.  This should prevent any weirdness if the XML structure has changed between releases.&lt;br /&gt;
&lt;br /&gt;
If you had a valid activation file for the previous version, just [[Contact]] us (giving your SUMOlab website username) and we will send you a new activation file.  Note that to update an activation file you must first unzip a copy of the toolbox to a new directory and install the activation file as if it was the very first time.  Upgrading of an activation file without performing a new toolbox install is (unfortunately) not (yet) supported.&lt;br /&gt;
&lt;br /&gt;
== Using ==&lt;br /&gt;
&lt;br /&gt;
=== I have no idea how to use the toolbox, what should I do? ===&lt;br /&gt;
&lt;br /&gt;
See: [[Running#Getting_started]]&lt;br /&gt;
&lt;br /&gt;
=== I want to try one of the different examples ===&lt;br /&gt;
&lt;br /&gt;
See [[Running#Running_different_examples]].&lt;br /&gt;
&lt;br /&gt;
=== I want to model my own problem ===&lt;br /&gt;
&lt;br /&gt;
See : [[Adding an example]].&lt;br /&gt;
&lt;br /&gt;
=== I want to contribute some data/patch/documentation/... ===&lt;br /&gt;
&lt;br /&gt;
See : [[Contributing]].&lt;br /&gt;
&lt;br /&gt;
=== How do I interface with the SUMO Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Interfacing with the toolbox]].&lt;br /&gt;
&lt;br /&gt;
=== What configuration options (model type, sample selection algorithm, ...) should I use for my problem? ===&lt;br /&gt;
&lt;br /&gt;
See [[General_guidelines]].&lt;br /&gt;
&lt;br /&gt;
=== Ok, I generated a model, what can I do with it? ===&lt;br /&gt;
&lt;br /&gt;
See: [[Using a model]].&lt;br /&gt;
&lt;br /&gt;
=== How can I share a model created by the SUMO Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Using a model#Model_portability| Model portability]].&lt;br /&gt;
&lt;br /&gt;
=== I dont like the final model generated by SUMO how do I improve it? ===&lt;br /&gt;
&lt;br /&gt;
Before you start the modeling you should really ask youself this question: &#039;&#039;What properties do I want to see in the final model?&#039;&#039;  You have to think about what for you constitutes a good model and what constitutes a poor model. Then you should rank those properties depending on how important you find them.  Examples are:&lt;br /&gt;
&lt;br /&gt;
* accuracy in the training data&lt;br /&gt;
** is it important that the error in the training data is exactly 0, or do you prefer some smoothing&lt;br /&gt;
* accuracy outside the training data&lt;br /&gt;
** this is the validation or test error, how important is proper generalization (usually this is very important)&lt;br /&gt;
* what does accuracy mean to you? a low maximum error, a low average error, both, ...&lt;br /&gt;
* smoothness&lt;br /&gt;
** should your model be perfectly smooth or is it acceptable that you have a few small ripples here and there for example&lt;br /&gt;
* are some regions of the response more important than others?&lt;br /&gt;
** for example you may want to be certain that the minima/maxima are captured very accurately but everything in between is less important&lt;br /&gt;
* are there particular special features that your model should have&lt;br /&gt;
** for example, capture underlying poles or discontinuities correctly&lt;br /&gt;
* extrapolation capability&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
It is important to note that often these criteria may be conflicting.  The classical example is fitting noisy data: the lower your training error the higher your testing error.  A natural approach is to combine multiple criteria, see [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
Once you have decided on a set of requirements the question is then, can the SUMO-Toolbox produce a model that meets them? In SUMO model generation is driven by one or more [[Measures]].  So you should choose the combination of [[Measures]] that most closely match your requirements.  Of course we can not provide a Measure for every single property, but it is very straightforward to [[Add_Measure|add your own Measure]].&lt;br /&gt;
&lt;br /&gt;
Now, lets say you have chosen what you think are the best Measures but you are still not happy with the final model.  Reasons could be:&lt;br /&gt;
&lt;br /&gt;
* you need more modeling iterations or you need to build more models per iteration (see [[Running#Understanding_the_control_flow]]). This will result in a more extensive search of the model parameter space, but will take longer to run.&lt;br /&gt;
* you should switch to a different model parameter optimization algorithm (e.g., for example instead of the Pattern Search variant, try the Genetic Algorithm variant of your ModelBuilder.)&lt;br /&gt;
* the model type you are using is not ideally suited to your data&lt;br /&gt;
* there simply is not enough data, use a larger initial design or perform more sampling iterations to get more information per dimension&lt;br /&gt;
* maybe the sample distribution is causing troubles for your model (e.g., Kriging can have problems with clustered data).  In that case it could be worthwhile to choose a different sample selection algorithm.&lt;br /&gt;
* the range of your response variable is not ideal (for example, neural networks have trouble modeling data if the range of the outputs is very very small)&lt;br /&gt;
&lt;br /&gt;
You may also refer to the following [[General_guidelines]].  Finally, of course it may be that your problem is simply a very difficult one and does not approximate well.  But, still you should at least get something satisfactory.&lt;br /&gt;
&lt;br /&gt;
If you are having these kinds of problems, please [[Reporting_problems|let us know]] and we will gladly help out.&lt;br /&gt;
&lt;br /&gt;
=== My data contains noise can the SUMO-Toolbox help me? ===&lt;br /&gt;
&lt;br /&gt;
The original purpose of the SUMO-Toolbox was for it to be used in conjunction with computer simulations.  Since these are fully deterministic you do not have to worry about noise in the data and all the problems it causes.  However, the methods in the toolbox are general fitting methods that work on noisy data as well.  So yes, the toolbox can be used with noisy data, but you will just have to be more careful about how you apply the methods and how you perform model selection.  Its only when you use the toolbox with a noisy simulation engine that a few special  options may need to be set.  In that case [[Contact]] us for more information.&lt;br /&gt;
&lt;br /&gt;
Note though, that the toolbox is not a statistical package, if you have noisy data and you need noise estimation algorithms, kernel smoothing algorithms, etc.  you should look towards other tools.&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between a ModelBuilder and a ModelFactory? ===&lt;br /&gt;
&lt;br /&gt;
See [[Add Model Type]].&lt;br /&gt;
&lt;br /&gt;
=== Why are the Neural Networks so slow? ===&lt;br /&gt;
&lt;br /&gt;
The ANN models are an extremely powerful model type that give very good results in many problems.  However, they are quite slow to use.  There are some things you can do:&lt;br /&gt;
&lt;br /&gt;
* use trainlm or trainscg instead of the default training function trainbr.  trainbr gives very good, smooth results but is slower to use.  If results with trainlm are not good enough, try using msereg as a performance function.&lt;br /&gt;
* try setting the training goal (= the SSE to reach during training) to a small positive number (e.g., 1e-5) instead of 0.&lt;br /&gt;
* check that the output range of your problem is not very small.  If your response data lies between 10e-5 and 10e-9 for example it will be very hard for the neural net to learn it.  In that case rescale your data to a more sane range.&lt;br /&gt;
* switch from ANN to one of the other neural network modelers: fanngenetic or nanngenetic. These are a lot faster than the default backend based on the [http://www.mathworks.com/products/neuralnet/ Matlab Neural Network Toolbox].  However, the accuracy is usually not as good.&lt;br /&gt;
* If you are using [[Measures#CrossValidation| CrossValidation]] try to switch to a different measure since CrossValidation is very expensive to use. CrossValidation is used by default if you have not defined a [[Measures| measure]] yourself.  When using one of the neural network model types, try to use a different measure if you can.  For example, our tests have shown that minimizing the sum of [[Measures#SampleError| SampleError]] and [[Measures#LRMMeasure| LRMMeasure]] can give equal or even better results than CrossValidation, while being much cheaper (see [[Multi-Objective Modeling]] for how to combine multiple measures).  See also the comments in &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; for examples.&lt;br /&gt;
* Finally, as with any model type things will slow down if you have many dimensions or very large amounts of data.  If that is the case, try some dimensionality reduction or subsampling techniques.&lt;br /&gt;
&lt;br /&gt;
See also [[FAQ#How_can_I_make_the_toolbox_run_faster.3F]]&lt;br /&gt;
&lt;br /&gt;
=== How can I make the toolbox run faster? ===&lt;br /&gt;
&lt;br /&gt;
There are a number of things you can do to speed things up.  These are listed below.  Remember though that the main reason the toolbox may seem to be slow is due to the many models being built as part of the hyperparameter optimization.  Please make sure you fully understand the [[Running#Understanding_the_control_flow|control flow described here]] before trying more advanced options.&lt;br /&gt;
&lt;br /&gt;
* First of all check that your virus scanner is not interfering with Matlab. If McAfee or any other program wants to scan every file SUMO generates this really slows things down and your computer becomes unusable.&lt;br /&gt;
&lt;br /&gt;
* Turn off the plotting of models in [[Config:ContextConfig#PlotOptions| ContextConfig]], you can always generate plots from the saved mat files&lt;br /&gt;
&lt;br /&gt;
* This is an important one.  For most model builders there is an option &amp;quot;maxFunEals&amp;quot;, &amp;quot;maxIterations&amp;quot;, or equivalent.  Change this value to change the maximum number of models built between 2 sampling iterations.  The higher this number, the slower, but the better the models &#039;&#039;may&#039;&#039; be.  Equivalently, for the Genetic model builders reduce the population size and the number of generations.&lt;br /&gt;
&lt;br /&gt;
* If you are using [[Measures#CrossValidation]] see if you can avoid it and use one of the other measures or a combination of measures (see [[Multi-Objective Modeling]]&lt;br /&gt;
&lt;br /&gt;
* If you are using a very dense [[Measures#ValidationSet]] as your Measure, this means that every single model will be evaluated on that data set.  For some models like RBF, Kriging, SVM, this can slow things down.&lt;br /&gt;
&lt;br /&gt;
* Disable some, or even all of the [[Config:ContextConfig#Profiling| profilers]] or disable the output handlers that draw charts.  For example, you might use the following configuration for the profilers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Profiling&amp;gt;&lt;br /&gt;
	&amp;lt;Profiler name=&amp;quot;.*share.*|.*ensemble.*|.*Level.*&amp;quot; enabled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toImage&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toFile&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Profiler&amp;gt;&lt;br /&gt;
			&lt;br /&gt;
	&amp;lt;Profiler name=&amp;quot;.*&amp;quot; enabled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toFile&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Profiler&amp;gt;&lt;br /&gt;
&amp;lt;/Profiling&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;.*&amp;quot; means match any one or more characters ([http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html see here for the full list of supported wildcards]).  Thus in this example all the profilers that have &amp;quot;share&amp;quot;, &amp;quot;ensemble&amp;quot;, or &amp;quot;Level&amp;quot; in their name shoud be enabled and should be saved as a text file (toFile) AND as an image file (toImage).  All the other profilers should be saved just to file. The idea is to only save to image what you want as an image since image generation is expensive.  If you do this or switch off image generation completely you will see everything run much faster.&lt;br /&gt;
&lt;br /&gt;
* Decrease the logging granularity, a log level of FINE (the default is FINEST or ALL) is more then granular enough.  Setting it to FINE, INFO, or even WARNING should speed things up.&lt;br /&gt;
&lt;br /&gt;
* If you have a multi-core/multi-cpu machine:&lt;br /&gt;
** if you have the Matlab Parallel Computing Toolbox, try setting the parallelMode option to true in [[Config:ContextConfig]].  Now all model training occurs in parallel.  This may give unexpected errors in some cases so beware when using.&lt;br /&gt;
** if you are using a native executable or script as the sample evaluator set the threadCount variable in [[Config:SampleEvaluator#LocalSampleEvaluator| LocalSampleEvaluator]] equal to the number of cores/CPUs (only do this if it is ok to start multiple instances of your simulation script in parallel!)&lt;br /&gt;
&lt;br /&gt;
* Dont use the Min-Max measure, it can slow things down. See also [[FAQ#How_do_I_force_the_output_of_the_model_to_lie_in_a_certain_range]]&lt;br /&gt;
&lt;br /&gt;
* If you are using neural networks see [[FAQ#Why_are_the_Neural_Networks_so_slow.3F]]&lt;br /&gt;
&lt;br /&gt;
* If you are having problems with very slow or seemingly hanging runs:&lt;br /&gt;
** Do a run inside the [http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/matlab_env/f9-17018.html&amp;amp;http://www.google.be/search?client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;channel=s&amp;amp;hl=nl&amp;amp;q=matlab+profiler&amp;amp;meta=&amp;amp;btnG=Google+zoeken Matlab profiler] and see where most time is spent.&lt;br /&gt;
&lt;br /&gt;
** Monitor CPU and physical/virtual memory usage while the SUMO toolbox is running and see if you notice anything strange.  &lt;br /&gt;
&lt;br /&gt;
* Also note that by default Matlab only allocates about 117 MB memory space for the Java Virtual Machine. If you would like to increase this limit (which you should) please follow the instructions [http://www.mathworks.com/support/solutions/data/1-18I2C.html?solution=1-18I2C here]. See also the general memory instructions [http://www.mathworks.com/support/tech-notes/1100/1106.html here].&lt;br /&gt;
&lt;br /&gt;
To check if your SUMO run has hanged, monitor your log file (with the level set at least to FINE).  If you see no changes for about 30 minutes the toolbox will probably have stalled.  [[Reporting problems| report the problems here]].&lt;br /&gt;
&lt;br /&gt;
Such problems are hard to identify and fix so it is best to work towards a reproducible test case if you think you found a performance or scalability issue.&lt;br /&gt;
&lt;br /&gt;
=== How do I build models with more than one output ===&lt;br /&gt;
&lt;br /&gt;
Sometimes you have multiple responses that you want to model at once.  See [[Running#Models_with_multiple_outputs]]&lt;br /&gt;
&lt;br /&gt;
=== How do I turn off adaptive sampling (run the toolbox for a fixed set of samples)? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Adaptive Modeling Mode]].&lt;br /&gt;
&lt;br /&gt;
=== How do I change the error function (relative error, RMSE, ...)? ===&lt;br /&gt;
&lt;br /&gt;
The [[Measures| &amp;lt;Measure&amp;gt;]] tag specifies the algorithm to use to assign models a score, e.g., [[Measures#CrossValidation| CrossValidation]].  It is also possible to specify which &#039;&#039;&#039;error function&#039;&#039;&#039; to  use, in the measure.  The default error function is &#039;&amp;lt;code&amp;gt;rootRelativeSquareError&amp;lt;/code&amp;gt;&#039;.&lt;br /&gt;
&lt;br /&gt;
Say you want to use [[Measures#CrossValidation| CrossValidation]] with the maximum absolute error, then you would put:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type=&amp;quot;CrossValidation&amp;quot; target=&amp;quot;0.001&amp;quot; errorFcn=&amp;quot;maxAbsoluteError&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the other hand, if you wanted to use the [[Measures#ValidationSet| ValidationSet]] measure with a relative root-mean-square error you would put:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type=&amp;quot;ValidationSet&amp;quot; target=&amp;quot;0.001&amp;quot; errorFcn=&amp;quot;relativeRms&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default error function is &#039;&amp;lt;code&amp;gt;rootRelativeSquareError&amp;lt;/code&amp;gt;&#039;.  These error functions can be found in the &amp;lt;code&amp;gt;src/matlab/tools/errorFunctions&amp;lt;/code&amp;gt; directory.  You are free to modify them and add your own.  Remember that the choice of error function is very important! Make sure you think well about it.  Also see [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
=== How do I enable more profilers? ===&lt;br /&gt;
&lt;br /&gt;
Go to the [[Config:ContextConfig#Profiling| &amp;lt;Profiling&amp;gt;]] tag and put &amp;lt;code&amp;gt;&amp;quot;&amp;lt;nowiki&amp;gt;.*&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; as the regular expression.  See also the next question.&lt;br /&gt;
&lt;br /&gt;
=== What regular expressions can I use to filter profilers? ===&lt;br /&gt;
&lt;br /&gt;
See the syntax [http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html here].&lt;br /&gt;
&lt;br /&gt;
=== How can I ensure deterministic results? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Random state]].&lt;br /&gt;
&lt;br /&gt;
=== How do I get a simple closed-form model (symbolic expression)? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Using a model]].&lt;br /&gt;
&lt;br /&gt;
=== How do I enable the Heterogenous evolution to automatically select the best model type? ===&lt;br /&gt;
&lt;br /&gt;
Simply use the [[Config:AdaptiveModelBuilder#heterogenetic| heterogenetic modelbuilder]] as you would any other.&lt;br /&gt;
&lt;br /&gt;
=== What is the combineOutputs option? ===&lt;br /&gt;
&lt;br /&gt;
See [[Running#Models_with_multiple_outputs]]&lt;br /&gt;
&lt;br /&gt;
=== What error function should I use? ===&lt;br /&gt;
&lt;br /&gt;
The default error function is the Root Relative Square Error (RRSE).  On the other hand meanRelativeError may be more intuitive but in that case you have to be careful if you have function values close to zero since in that case the relative error explodes or even gives infinity.  You could also use one of the combined relative error functions (contain a +1 in the denominator to account for small values) but then you get something between a relative and absolute error (=&amp;gt; hard to interpret).&lt;br /&gt;
&lt;br /&gt;
So to be sure an absolute error seems the safest bet (like the RMSE), however in that case you have to come up with sensible accuracy targets and realize that you will build models that try to fit the regions of high absolute value better than the low ones.&lt;br /&gt;
&lt;br /&gt;
Picking an error function is a very tricky business and many people do not realize this.  Which one is best for you and what targets you use ultimately depends on your application and on what kind of model you want.  There is no general answer.&lt;br /&gt;
&lt;br /&gt;
A recommended read is [http://www.springerlink.com/content/24104526223221u3/ is this paper].  See also the page on [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
=== I just want to generate an initial design (no sampling, no modeling) ===&lt;br /&gt;
&lt;br /&gt;
Do a regular SUMO run, except set the &#039;maxModelingIterations&#039; in the SUMO tag to 0.  The resulting run will only generate (and evaluate) the initial design and save it to samples.txt in the output directory.&lt;br /&gt;
&lt;br /&gt;
=== How do I start a run with the samples of of a previous run, or with a custom initial design? ===&lt;br /&gt;
&lt;br /&gt;
Use a Dataset design component, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;InitialDesign type=&amp;quot;DatasetDesign&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;file&amp;quot; value=&amp;quot;/path/to/the/file/containing/the/points.txt&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/InitialDesign&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The points of a previous run can be found in the samples.txt file in the output directory of the run you want to continue.&lt;br /&gt;
&lt;br /&gt;
As a sidenote, remark you can start the toolbox with *data points* of a previous run, but not with the *models* of a previous run.&lt;br /&gt;
&lt;br /&gt;
=== What is a level plot? ===&lt;br /&gt;
&lt;br /&gt;
A level plot is a plot that shows how the error histogram changes as the best model improves. An example is:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:levelplot.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Level plots only work if you have a separate dataset (test set) that the model can be checked against.  See the comments in default.xml for how to enable level plots.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How do I force the output of the model to lie in a certain range ===&lt;br /&gt;
&lt;br /&gt;
See [[Measures#MinMax]].&lt;br /&gt;
&lt;br /&gt;
=== My problem is high dimensional and has a lot of input parameters (more than 10).  Can I use SUMO? ===&lt;br /&gt;
&lt;br /&gt;
That depends.  Remember that the main focus of SUMO is to generate accurate &#039;global&#039; models. If you want to do sampling the practical dimensionality is limited to around 6-8 (though it depends on the problem and how cheap the simulations are!).  Since the more dimensions the more space you need to fill.  At that point you need to see if you can extend the models with domain specific knowledge (to improve performance) or apply a dimensionality reduction method ([[FAQ#Can_the_toolbox_tell_me_which_are_the_most_important_inputs_.28.3D_variable_selection.29.3F|see the next question]]).  On the other hand, if you don&#039;t need to do sample selection but you have a fixed dataset which you want to model.  Then the performance on high dimensional data just depends on the model type.  For examples SVM type models are independent of the dimension and thus can always be applied.  Though things like feature selection are always recommended.&lt;br /&gt;
&lt;br /&gt;
=== Can the toolbox tell me which are the most important inputs (= variable selection)? ===&lt;br /&gt;
&lt;br /&gt;
When tackling high dimensional problems a crucial question is &amp;quot;Are all my input parameters relevant?&amp;quot;.  Normally domain knowledge would answer this question but this is not always straightforward. In those cases a whole set of algorithms exist for doing dimensionality reduction (= feature selection).  Support for some of these algorithms may eventually make it into the toolbox but are not currently implemented.  That is a whole PhD thesis on its own.  However, if a model type provides functions for input relevance determination the toolbox can leverage this.  For example, the LS-SVM model available in the toolbox supports Automatic Relevance Determination (ARD).  This means that if you use the SUMO Toolbox to generate an LS-SVM model, you can call the function &#039;&#039;ARD()&#039;&#039; on the model and it will give you a list of the inputs it thinks are most important.&lt;br /&gt;
&lt;br /&gt;
=== Should I use a Matlab script or a shell script for interfacing with my simulation code? ===&lt;br /&gt;
&lt;br /&gt;
When you want to link SUMO with an external simulation engine (ADS Momentum, SPECTRE, FEBIO, SWAT, ...) you need a [http://en.wikipedia.org/wiki/Shell_script shell script] (or executable) that can take the requested points from SUMO, setup the simulation engine (e.g., set necessary input files), calls the simulator for all the requested points, reads the output (e.g., one or more output files), and returns the results to SUMO (see [[Interfacing with the toolbox]]).&lt;br /&gt;
&lt;br /&gt;
Which one you choose (matlab script + [[Config:SampleEvaluator#matlab|Matlab Sample Evaluator]], or shell script/executable with [[Config:SampleEvaluator#local|Local Sample Evaluator]] is basically a matter of preference, take whatever is easiest for you.&lt;br /&gt;
&lt;br /&gt;
HOWEVER, there is one important consideration: Matlab does not support threads so this means that if you use a matlab script to interface with the simulation engine, simulations and modeling will happen sequentially, NOT in parallel.  This means the modeling code will sit around waiting, doing nothing, until the simulation(s) have finished.  If your simulation code takes a long time to run this is not very efficient.&lt;br /&gt;
&lt;br /&gt;
On the other hand, using a shell script/executable, does allow the modeling and simulation to occur in parallel (at least if you wrote your interface script in such a way that it can be run multiple times in parallel, i.e., no shared global directories or variables that can cause [http://en.wikipedia.org/wiki/Race_condition race conditions]).&lt;br /&gt;
&lt;br /&gt;
As a sidenote, note that if you already put work into a Matlab script, it is still possible to use a shell script, by writing a shell script that starts Matlab (using -nodisplay or -nojvm options), executes your script (using the -r option), and exits Matlab again.  Of course it is not very elegant and adds some overhead but depending on your situation it may be worth it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How can I look at the internal structure of a SUMO model ===&lt;br /&gt;
&lt;br /&gt;
See [[Using_a_model#Available_methods]].&lt;br /&gt;
&lt;br /&gt;
=== Is there any design documentation available? ===&lt;br /&gt;
&lt;br /&gt;
An in depth overview of the rationale and philosophy, including a treatment of the software architecture underlying the SUMO Toolbox is available in the form of a PhD dissertation.  A copy of this dissertation [http://www.sumo.intec.ugent.be/?q=system/files/2010_04_PhD_DirkGorissen.pdf is available here].&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== I have a problem and I want to report it ===&lt;br /&gt;
&lt;br /&gt;
See : [[Reporting problems]].&lt;br /&gt;
&lt;br /&gt;
===I am getting a java out of memory error, what happened?===&lt;br /&gt;
Datasets are loaded through java. This means that the java heap space is used for storing the data. If you try to load a huge dataset (&amp;gt; 50MB), you might experience problems with the maximum heap size. You can solve this by raising the heap size as described on the following webpage:&lt;br /&gt;
[http://www.mathworks.com/support/solutions/data/1-18I2C.html]&lt;br /&gt;
&lt;br /&gt;
=== I sometimes get flat models when using rational functions ===&lt;br /&gt;
&lt;br /&gt;
First make sure the model is indeed flat, and does not just appear so on the plot. You can verify this by looking at the output axis range and making sure it is within reasonable bounds. When there are poles in the model, the axis range is sometimes stretched to make it possible to plot the high values around the pole, causing the rest of the model to appear flat. If the model contains poles, refer to the next question for the solution.&lt;br /&gt;
&lt;br /&gt;
The [[Config:AdaptiveModelBuilder#rational| RationalModel]] tries to do a least squares fit, based on which monomials are allowed in numerator and denominator. We have experienced that some models just find a flat model as the best least squares fit. There are two causes for this:&lt;br /&gt;
&lt;br /&gt;
* The number of sample points is few, and the model parameters (as explained [[Model types explained#PolynomialModel|here]]) force the model to use only a very small set of degrees of freedom.  The solution in this case is to increase the minimum percentage bound in the RationalFactory section of your configuration file: change the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option to &amp;lt;code&amp;gt;&amp;quot;60,100&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;80,100&amp;quot;&amp;lt;/code&amp;gt;,  or even &amp;lt;code&amp;gt;&amp;quot;100,100&amp;quot;&amp;lt;/code&amp;gt;.  A setting of &amp;lt;code&amp;gt;&amp;quot;100,100&amp;quot;&amp;lt;/code&amp;gt; will force the polynomial models to always exactly interpolate.  However, note that this does not scale very well with the number of samples (to counter this you can set &amp;lt;code&amp;gt;&amp;quot;maxDegrees&amp;quot;&amp;lt;/code&amp;gt;). If, after increasing the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; you still get weird, spiky, models you simply need more samples or you should switch to a different model type.&lt;br /&gt;
* Another possibility is that given a set of monomial degrees, the flat function is just the best possible least squares fit. In that case you simply need to wait for more samples.&lt;br /&gt;
* The measure you are using is not accurately estimating the true error, try a different measure or error function.  Note that a maximum relative error is dangerous to use since a the 0-function (= a flat model) has a lower maximum relative error than a function which overshoots the true behavior in some places but is otherwise correct.&lt;br /&gt;
&lt;br /&gt;
=== When using rational functions I sometimes get &#039;spikes&#039; (poles) in my model ===&lt;br /&gt;
&lt;br /&gt;
When the denominator polynomial of a rational model has zeros inside the domain, the model will tend to infinity near these points. In most cases these models will only be recognized as being `the best&#039; for a short period of time. As more samples get selected these models get replaced by better ones and the spikes should disappear.&lt;br /&gt;
&lt;br /&gt;
So, it is possible that a rational model with &#039;spikes&#039; (caused by poles inside the domain) will be selected as best model. This may or may not be an issue, depending on what you want to use the model for. If it doesn&#039;t matter that the model is very inaccurate at one particular, small spot (near the pole), you can use the model with the pole and it should perform properly.&lt;br /&gt;
&lt;br /&gt;
However, if the model should have a reasonable error on the entire domain, several methods are available to reduce the chance of getting poles or remove the possibility altogether. The possible solutions are:&lt;br /&gt;
&lt;br /&gt;
* Simply wait for more data, usually spikes disappear (but not always).&lt;br /&gt;
* Lower the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option in the RationalFactory section of your configuration file.  For example, say you have 500 data points and if the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option is set to 100 percent it means the degrees of the polynomials in the rational function can go up to 500.  If you set the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option to 10, on the other hand, the maximum degree is set at 50 (= 10 percent of 500).  You can also use the &amp;lt;code&amp;gt;&amp;quot;maxDegrees&amp;quot;&amp;lt;/code&amp;gt; option to set an absolute bound.&lt;br /&gt;
* If you roughly know the output range your data should have, an easy way to eliminate poles is to use the [[Measures#MinMax| MinMax]] [[Measures| Measure]] together with your current measure ([[Measures#CrossValidation| CrossValidation]] by default).  This will cause models whose response falls outside the min-max bounds to be penalized extra, thus spikes should disappear.&lt;br /&gt;
* Use a different model type (RBF, ANN, SVM,...), as spikes are a typical problem of rational functions.&lt;br /&gt;
* Increase the population size if using the genetic version&lt;br /&gt;
* Try using the [[SampleSelector#RationalPoleSuppressionSampleSelector| RationalPoleSuppressionSampleSelector]], it was designed to get rid of this problem more quickly, but it only selects one sample at the time.&lt;br /&gt;
&lt;br /&gt;
However, these solutions may not still not suffice in some cases.  The underlying reason is that the order selection algorithm contains quite a lot of randomness, making it prone to over-fitting.  This issue is being worked on but will take some time.  Automatic order selection is not an easy problem&lt;br /&gt;
&lt;br /&gt;
=== There is no noise in my data yet the rational functions don&#039;t interpolate ===&lt;br /&gt;
&lt;br /&gt;
[[FAQ#I sometimes get flat models when using rational functions |see this question]].&lt;br /&gt;
&lt;br /&gt;
=== When loading a model from disk I get &amp;quot;Warning: Class &#039;:all:&#039; is an unknown object class.  Object &#039;model&#039; of this class has been converted to a structure.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You are trying to load a model file without the SUMO Toolbox in your Matlab path.  Make sure the toolbox is in your Matlab path. &lt;br /&gt;
&lt;br /&gt;
In short: Start Matlab, run &amp;lt;code&amp;gt;&amp;lt;SUMO-Toolbox-directory&amp;gt;/startup.m&amp;lt;/code&amp;gt; (to ensure the toolbox is in your path) and then try to load your model.&lt;br /&gt;
&lt;br /&gt;
=== When running the SUMO Toolbox you get an error like &amp;quot;No component with id &#039;annpso&#039; of type &#039;adaptive model builder&#039; found in config file.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This means you have specified to use a component with a certain id (in this case an ModelBuilder component with id &#039;annpso&#039;) but a component with that id does not exist further down in the configuration file (in this particular case &#039;annpso&#039; does not exist but &#039;anngenetic&#039; or &#039;ann&#039; does, as a quick search through the configuration file will show).  So make sure you only declare components which have a definition lower down.  So see which components are available, simply scroll down the configuration file and see which id&#039;s are specified.  Please also refer to the [[Toolbox configuration#Declarations and Definitions | Declarations and Definitions]] page.&lt;br /&gt;
&lt;br /&gt;
=== When using NANN models I sometimes get &amp;quot;Runtime error in matrix library, Choldc failed. Matrix not positive definite&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This is a problem in the mex implementation of the [http://www.iau.dtu.dk/research/control/nnsysid.html NNSYSID] toolbox.  Simply delete the mex files, the Matlab implementation will be used and this will not cause any problems.&lt;br /&gt;
&lt;br /&gt;
=== When using FANN models I sometimes get &amp;quot;Invalid MEX-file createFann.mexa64, libfann.so.2: cannot open shared object file: No such file or directory.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This means Matlab cannot find the [http://leenissen.dk/fann/ FANN] library itself to link to dynamically.  Make sure the FANN libraries (stored in src/matlab/contrib/fann/src/.libs/) are in your library path, e.g., on unix systems, make sure they are included in LD_LIBRARY_PATH.&lt;br /&gt;
&lt;br /&gt;
=== Undeﬁned function or method ’createFann’ for input arguments of type ’double’. ===&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#When_using_FANN_models_I_sometimes_get_.22Invalid_MEX-file_createFann.mexa64.2C_libfann.so.2:_cannot_open_shared_object_file:_No_such_file_or_directory..22]]&lt;br /&gt;
&lt;br /&gt;
=== When trying to use SVM models I get &#039;Error during fitness evaluation: Error using ==&amp;gt; svmtrain at 170, Group must be a vector&#039; ===&lt;br /&gt;
&lt;br /&gt;
You forgot to build the SVM mex files for your platform.  For windows they are pre-compiled for you, on other systems you have to compile them yourself with the makefile.&lt;br /&gt;
&lt;br /&gt;
=== When running the toolbox you get something like &#039;??? Undefined variable &amp;quot;iminds&amp;quot; or class &amp;quot;iminds.sumo.config.ContextConfig.setRootDirectory&amp;quot;&#039; ===&lt;br /&gt;
&lt;br /&gt;
First see [[FAQ#What_is_the_relationship_between_Matlab_and_Java.3F | this FAQ entry]].&lt;br /&gt;
&lt;br /&gt;
This means Matlab cannot find the needed Java classes.  This typically means that you forgot to run &#039;startup&#039; (to set the path correctly) before running the toolbox (using &#039;go&#039;).  So make sure you always run &#039;startup&#039; before running &#039;go&#039; and that both commands are always executed in the toolbox root directory.&lt;br /&gt;
&lt;br /&gt;
If you did run &#039;startup&#039; correctly and you are still getting an error, check that Java is properly enabled:&lt;br /&gt;
&lt;br /&gt;
# typing &#039;usejava jvm&#039; should return 1 &lt;br /&gt;
# typing &#039;s = java.lang.String&#039;, this should &#039;&#039;not&#039;&#039; give an error&lt;br /&gt;
# typing &#039;version(&#039;-java&#039;)&#039; should return at least version 1.5.0&lt;br /&gt;
&lt;br /&gt;
If (1) returns 0, then the jvm of your Matlab installation is not enabled.  Check your Matlab installation or startup parameters (did you start Matlab with -nojvm?)&lt;br /&gt;
If (2) fails but (1) is ok, there is a very weird problem, check the Matlab documentation.&lt;br /&gt;
If (3) returns a version before 1.5.0 you will have to upgrade Matlab to a newer version or force Matlab to use a custom, newer, jvm (See the Matlab docs for how to do this).&lt;br /&gt;
&lt;br /&gt;
=== You get errors related to &#039;&#039;gaoptimset&#039;&#039;,&#039;&#039;psoptimset&#039;&#039;,&#039;&#039;saoptimset&#039;&#039;,&#039;&#039;newff&#039;&#039; not being found or unknown ===&lt;br /&gt;
&lt;br /&gt;
You are trying to use a component of the SUMO toolbox that requires a Matlab toolbox that you do not have.  See the [[System requirements]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== After upgrading I get all kinds of weird errors or warnings when I run my XML files ===&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#How_do_I_upgrade_to_a_newer_version.3F]]&lt;br /&gt;
&lt;br /&gt;
=== I get a warning about duplicate samples being selected, why is this? ===&lt;br /&gt;
&lt;br /&gt;
Sometimes, in special circumstances, multiple sample selectors may select the same sample at the same time. Even though in most cases this is detected and avoided, it can still happen when multiple outputs are modelled in one run, and each output is sampled by a different sample selector. These sample selectors may then accidentally choose the same new sample location.&lt;br /&gt;
&lt;br /&gt;
=== I sometimes see the error of the best model go up, shouldn&#039;t it decrease monotonically? ===&lt;br /&gt;
&lt;br /&gt;
There is no short answer here, it depends on the situation.  Below &#039;single objective&#039; refers to the case where during the hyperparameter optimization (= the modeling iteration) combineOutputs=false, and there is only a single measure set to &#039;on&#039;.  The other cases are classified as &#039;multi objective&#039;.  See also [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Sampling off&#039;&#039;&#039;&lt;br /&gt;
## &#039;&#039;Single objective&#039;&#039;: the error should always decrease monotonically, you should never see it rise. If it does [[reporting problems|report it as a bug]]&lt;br /&gt;
## &#039;&#039;Multi objective&#039;&#039;: There is a very small chance the error can temporarily decrease but it should be safe to ignore.  In this case it is best to use a multi objective enabled modeling algorithm&lt;br /&gt;
# &#039;&#039;&#039;Sampling on&#039;&#039;&#039;&lt;br /&gt;
## &#039;&#039;Single objective&#039;&#039;: inside each modeling iteration the error should always monotonically decrease.  At each sampling iteration the best models are updated (to reflect the new data), thus there the best model score may increase, this is normal behavior(*).  It is possible that the error increases for a short while, but as more samples come in it should decrease again.  If this does not happen you are using a poor measure or poor hyperparameter optimization algorithm, or there is a problem with the modeling technique itself (e.g., clustering in the datapoints is causing numerical problems).&lt;br /&gt;
## &#039;&#039;Multi objective&#039;&#039;: Combination of 1.2 and 2.1.&lt;br /&gt;
&lt;br /&gt;
(*) This is normal if you are using a measure like cross validation that is less reliable on little data than on more data.  However, in some cases you may wish to override this behavior if you are using a measure that is independent of the number of samples the model is trained with (e.g., a dense, external validation set).  In this case you can force a monotonic decrease by setting the &#039;keepOldModels&#039; option in the SUMO tag to true.  Use with caution!&lt;br /&gt;
&lt;br /&gt;
=== At the end of a run I get Undefined variable &amp;quot;iminds&amp;quot; or class &amp;quot;iminds.sumo.util.JpegImagesToMovie.createMovie&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This is normal, the warning printed out before the error explains why:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[WARNING] jmf.jar not found in the java classpath, movie creation may not work! Did you install the SUMO extension pack? Alternatively you can install the java media framwork from java.sun.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By default, at the end of a run, the toolbox will try to generate a movie of all the intermediate model plots.  To do this it requires the extension pack to be installed (you can download it from the SUMO lab website).  So install the extension pack and you will no longer get the error.  Alternatively you can simply set the &amp;quot;createMovie&amp;quot; option in the &amp;lt;SUMO&amp;gt; tag to &amp;quot;false&amp;quot;.&lt;br /&gt;
So note that there is nothing to worry about, everything has run correctly, it is just the movie creation that is failing.&lt;br /&gt;
&lt;br /&gt;
=== On startup I get the error &amp;quot;java.io.IOException: Couldn&#039;t get lock for output/SUMO-Toolbox.%g.%u.log&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This error means that SUMO is unable to create the log file.  Check the output directory exists and has the correct permissions.  If  your output directory is on a shared (network) drive this could also cause problems.  Also make sure you are running the toolbox (calling &#039;go&#039;) from the toolbox root directory, and not in some toolbox sub directory! This is very important.&lt;br /&gt;
&lt;br /&gt;
If you still have problems you can override the default logfile name and location as follows:&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;FileHandler&amp;gt; tag inside the &amp;lt;Logging&amp;gt; tag add the following option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;Option key=&amp;quot;Pattern&amp;quot; value=&amp;quot;My_SUMO_Log_file.log&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This means that from now on the sumo log file will be saved as the file &amp;quot;My_SUMO_Log_file.log&amp;quot; in the SUMO root directory.  You can use any path you like.&lt;br /&gt;
For more information about this option see [http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/FileHandler.html the FileHandler Javadoc].&lt;br /&gt;
&lt;br /&gt;
=== The Toolbox crashes with &amp;quot;Too many open files&amp;quot; what should I do? ===&lt;br /&gt;
&lt;br /&gt;
This is a known bug, see [[Known_bugs#Version_6.1]].&lt;br /&gt;
&lt;br /&gt;
If this does not fix your problem then do the following:&lt;br /&gt;
&lt;br /&gt;
On Windows try increasing the limit in windows as dictated by the error message.  Also, when you get the error, use the fopen(&amp;quot;all&amp;quot;) command to see which files are open and send us the list of filenames.  Then we can maybe further help you debug the problem.  Even better would be to use the Process Explorer utility [http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx available here]. When you get the error, dont shut down Matlab but start Process explorer and see which SUMO-Toolbox related files are open.  If you then [[Reporting_problems|let us know]] we can further debug the problem.&lt;br /&gt;
&lt;br /&gt;
On Linux again don&#039;t shut down Matlab but:&lt;br /&gt;
&lt;br /&gt;
* open a new terminal window&lt;br /&gt;
* type:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsof &amp;gt; openFiles.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Then [[Contact|send us]] the following information:&lt;br /&gt;
** the file openFiles.txt &lt;br /&gt;
** the exact Linux distribution you are using (Red Hat 10, CentOS 5, SUSE 11, etc).&lt;br /&gt;
** the output of&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
uname -a ; df -T ; mount&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a temporary workaround you can try increasing the maximum number of open files ([http://www.linuxforums.org/forum/redhat-fedora-linux-help/64716-where-chnage-file-max-permanently.html see for example here]).  We are currently debugging this issue.&lt;br /&gt;
&lt;br /&gt;
In general: to be safe it is always best to do a SUMO run from a clean Matlab startup, especially if the run is important or may take a long time.&lt;br /&gt;
&lt;br /&gt;
=== When using the LS-SVM models I get lots of warnings: &amp;quot;make sure lssvmFILE.x (lssvmFILE.exe) is in the current directory, change now to MATLAB implementation...&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
The LS-SVMs have a C implementation and a Matlab implementation.  If you dont have the compiled mex files it will use the matlab implementation and give a warning.  But everything will work properly.  To get rid of the warnings, compile the mex files [[Installation#Windows|as described here]], this can be done very easily.  Or simply comment out the lines that produce the output in the lssvmlab directory in src/matlab/contrib.&lt;br /&gt;
&lt;br /&gt;
=== I get an error &amp;quot;Undefined function or method &#039;trainlssvm&#039; for input arguments of type &#039;cell&#039;&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You most likely forgot to [[Installation#Extension_pack|install the extension pack]].&lt;br /&gt;
&lt;br /&gt;
=== When running the SUMO-Toolbox under Linux, the [http://en.wikipedia.org/wiki/X_Window_System X server] suddenly restarts and I am logged out of my session ===&lt;br /&gt;
&lt;br /&gt;
Note that in Linux there is an explicit difference between the [http://en.wikipedia.org/wiki/Linux_kernel kernel] and the [http://en.wikipedia.org/wiki/X_Window_System X display server].  If the kernel crashes or panics your system completely freezes (you have to reset manually) or your computer does a full reboot.  Luckily this is very rare.  However, if you display server (X) crashes or restarts it means your operating system is still running fine, its just that you have to log in again since your graphical session has terminated.  The FAQ entry is only for the latter.  If you find your kernel is panicing or freezing, that is a more fundamental problem and you should contact your system admin.&lt;br /&gt;
&lt;br /&gt;
So what happens is that after a few seconds when the toolbox wants to plot the first model [http://en.wikipedia.org/wiki/X_Window_System X] crashes and you are suddenly presented with a login screen.  The problem is not due to SUMO but rather to the Matlab - Display server interaction.&lt;br /&gt;
&lt;br /&gt;
What you should first do is set plotModels to false in the [[Config:ContextConfig]] tag, run again and see if the problem occurs again.  If it does please [[Reporting_problems| report it]].  If the problem does not occur you can then try the following:&lt;br /&gt;
&lt;br /&gt;
* Log in as root (or use [http://en.wikipedia.org/wiki/Sudo sudo])&lt;br /&gt;
* Edit the following configuration file using a text editor (pico, nano, vi, kwrite, gedit,...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/etc/X11/xorg.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: the exact location of the xorg.conf file may vary on your system.&lt;br /&gt;
&lt;br /&gt;
* Look for the following line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  Load         &amp;quot;glx&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Comment it out by replacing it by:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#  Load         &amp;quot;glx&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then save the file, restart your X server (if you do not know how to do this simply reboot your computer)&lt;br /&gt;
* Log in again, and try running the toolbox (making sure plotModels is set to true again).  It should now work.  If it still does not please [[Reporting_problems| report it]].&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* this is just an empirical workaround, if you have a better idea please [[Contact|let us know]]&lt;br /&gt;
* if you wish to debug further yourself please check the Xorg log files and those in /var/log&lt;br /&gt;
* another possible workaround is to start matlab with the &amp;quot;-nodisplay&amp;quot; option.  That could work as well.&lt;br /&gt;
&lt;br /&gt;
=== I get the error &amp;quot;Failed to close Matlab pool cleanly, error is Too many output arguments&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This happens if you run the toolbox on Matlab version 2008a and you have the parallel computing toolbox installed.  You can simply ignore this error message, it does not cause any problems. If you want to use SUMO with the parallel computing toolbox you will need Matlab 2008b.&lt;br /&gt;
&lt;br /&gt;
=== The toolbox seems to keep on running forever, when or how will it stop? ===&lt;br /&gt;
&lt;br /&gt;
The toolbox will keep on generating models and selecting data until one of the termination criteria has been reached. It is up to &#039;&#039;you&#039;&#039; to choose these targets carefully, so how low the toolbox runs simply depends on what targets you choose.  Please see [[Running#Understanding_the_control_flow]].&lt;br /&gt;
&lt;br /&gt;
Of course choosing a-priori targets up front is not always easy and there is no real solution for this, except thinking well about what type of model you want (see [[FAQ#I_dont_like_the_final_model_generated_by_SUMO_how_do_I_improve_it.3F]]).  In doubt you can always use a small value (or 0) and then simply quit the running toolbox using Ctrl-C when you think its been enough.&lt;br /&gt;
&lt;br /&gt;
While one could implement fancy, automatic stopping algorithms, their actual benefit is questionable.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Measures&amp;diff=5887</id>
		<title>Measures</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Measures&amp;diff=5887"/>
		<updated>2014-03-17T08:22:23Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is a Measure ==&lt;br /&gt;
A crucial aspect of generating models is estimating their quality.  Some metric is needed to decide whether a model is poor, good, very good, etc.  In the SUMO Toolbox this role is played by the &#039;&#039;Measure&#039;&#039; component.  A measure is an object that, given a model, returns an estimation of its quality.  This can be something very simple as the error of the model fit in the training data, or it may involve a complex calculation to see if a model satisfies some physical constraint.&lt;br /&gt;
&lt;br /&gt;
The Measure is used in the SUMO Toolbox to drive the [[Add_Model_Type#Models.2C_Model_builders.2C_and_Factories|model parameter optimization]] (see also the [[Running#Understanding_the_control_flow|toolbox control flow]]). This can be done in a single objective or [[Multi-Objective Modeling|multi-objective]] fashion.&lt;br /&gt;
&lt;br /&gt;
There are two aspects to a Measure:&lt;br /&gt;
&lt;br /&gt;
# The quality estimation algorithm&lt;br /&gt;
# The error function&lt;br /&gt;
&lt;br /&gt;
The first is the algorithm used to estimate the model quality.  This is for example the in-sample error, or the 5-fold crossvalidation score.  The error function determines what kind of error you want to use.  You can calculate the in-sample error using: the average absolute error, the root mean square error, a maximum relative error, etc.  Note that the error function may not be relevant for every type of measure (eg., AIC).&lt;br /&gt;
&lt;br /&gt;
It cannot be stressed enough that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&#039;&#039;&#039;A proper choice of Measure and Error function is CRUCIAL to the success of your modeling&#039;&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That choice will depend on your problem characteristics, the data distribution and the model type you will use to fit the data.  It is &#039;&#039;&#039;extremely important&#039;&#039;&#039; to think about this well (&amp;quot;what do you want?&amp;quot;) before starting any modeling.&lt;br /&gt;
&lt;br /&gt;
As a side remark, note that Measures and sequential designs are closely related.  The same criteria that is used to decide if a model is good or bad, can be used to identify interesting locations to select new data points.&lt;br /&gt;
&lt;br /&gt;
Also note that some model builders (notably GeneticModelBuilder) support constraints directly.  This means you can also implement what you would otherwise implement as a Measure as constraint in the model parameter optimization algorithm itself.  This is a superior solution to using a Measure.&lt;br /&gt;
&lt;br /&gt;
== Using measures ==&lt;br /&gt;
&lt;br /&gt;
To use a particular measure in the SUMO Toolbox, you have to edit the &amp;lt;Measure&amp;gt; tag in Plan section of the configuration XML-file. If you are using the configuration XML-file default.xml, please note that the &amp;lt;Measure&amp;gt; tag does NOT refer to any configuration sections below the Plan section. Instead they are defined directly in the Plan section. You can of course always add Measure configuration sections and refer to them in the Plan section using their id. Here are three equivalent examples of defining measure in the configuration xml. The default.xml also contains examples of measures in the commented out sections.&lt;br /&gt;
&lt;br /&gt;
The first way is the one used in the default.xml and can be found within the Plan section; the measure type used is the SampleError which scores models on how well the capture the training data. The error function used to aggregate the scores for each training sample is meanSquareError. The target determines the target accuracy that has to be satisfied by the models, in this case it means that mean square error of all training examples of a model should be 0.01 or less. The option &amp;lt;code&amp;gt;use=&amp;quot;on&amp;quot;&amp;lt;/code&amp;gt; indicates that this measure should be used to guide the model selection criterion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source xmlns:saxon=&amp;quot;http://icl.com/saxon&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Plan&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Measure type=&amp;quot;SampleError&amp;quot; target=&amp;quot;.01&amp;quot; errorFcn=&amp;quot;meanSquareError&amp;quot; use=&amp;quot;on&amp;quot;/&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Plan&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The second way uses an id in the Plan section to refer to the same measure, but which is now defined separately in a configuration section:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source xmlns:saxon=&amp;quot;http://icl.com/saxon&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Plan&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Measure&amp;gt;ExampleMeasure&amp;lt;/Measure&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Plan&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Measure id=&amp;quot;ExampleMeasure&amp;quot; type =&amp;quot;SampleError&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;use&amp;quot; value=&amp;quot;on&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;target&amp;quot; value=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;errorFcn&amp;quot; value=&amp;quot;meanSquareError&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Measure&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
And finally the configuration section can also be placed directly into the Plan section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source xmlns:saxon=&amp;quot;http://icl.com/saxon&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Plan&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;Measure id=&amp;quot;ExampleMeasure&amp;quot; type =&amp;quot;SampleError&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Option key=&amp;quot;use&amp;quot; value=&amp;quot;on&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Option key=&amp;quot;target&amp;quot; value=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Option key=&amp;quot;errorFcn&amp;quot; value=&amp;quot;meanSquareError&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/Measure&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Plan&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using multiple measures ==&lt;br /&gt;
&lt;br /&gt;
The SUMO-Toolbox also allows you to use several measures to guide modeling process. You may want to use more than one measure because for example you need a model which has a mean square error of 0.01 but its largest error cannot exceed a certain threshold. Or you want to use several measures to monitor the modeling process.&lt;br /&gt;
&lt;br /&gt;
Go to the [[Multi-Objective_Modeling|Multi-Objective Modeling page]] to find out how to build models using multiple measures.&lt;br /&gt;
If you want to use more than one measure but only for monitoring purposes (i.e. they will not be used for model selection), you can do this by adding the desired measure(s) you want to use for monitoring to the Plan but with the &amp;lt;code&amp;gt;use=&amp;quot;off&amp;quot;&amp;lt;/code&amp;gt; keyword.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source xmlns:saxon=&amp;quot;http://icl.com/saxon&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Plan&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Measure type=&amp;quot;SampleError&amp;quot; target=&amp;quot;.01&amp;quot; errorFcn=&amp;quot;meanSquareError&amp;quot; use=&amp;quot;on&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Measure type=&amp;quot;CrossValidation&amp;quot; target=&amp;quot;.05&amp;quot; errorFcn=&amp;quot;maxAbsoluteError&amp;quot; use=&amp;quot;off&amp;quot;/&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Plan&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tips on using measures ==&lt;br /&gt;
&lt;br /&gt;
A recommended read is [http://www.sumo.intec.ugent.be/files/2009_08_EWC.pdf the paper available here].&lt;br /&gt;
&lt;br /&gt;
In general, the default measure, 5 fold CrossValidation, is an acceptable choice.  However, it is also very expensive, as it requires that a model be re-trained for each fold.  This may slow things down if a model is expensive to train (e.g., neural nets).  Also CrossValidation can give biased results if data is clustered or scarce.  Increasing the number of folds may help here.  A cheaper alternative is ValidationSet (see below) or AIC.  For a full list of available measures see the &amp;lt;code&amp;gt;src/matlab/measures&amp;lt;/code&amp;gt; subdirectory.&lt;br /&gt;
&lt;br /&gt;
Note that multiple measures may also be combined.  For more information see [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
For how to change the error function see [[FAQ#How_do_I_change_the_error_function_.28relative_error.2C_RMS.2C_....29.3F| this FAQ entry]].&lt;br /&gt;
&lt;br /&gt;
Below is a list of some available measures and the configuration options available for each of them. Each measure also has a target accuracy attribute, which can be omitted and which defaults to 0.001. In certain cases, such as the binary MinMax measure, the target accuracy is irrelevant.&lt;br /&gt;
&lt;br /&gt;
== Defining your own Measure ==&lt;br /&gt;
&lt;br /&gt;
see [[Add_Measure]]&lt;br /&gt;
&lt;br /&gt;
== Measure types ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;We are well aware that documentation is not always complete and possibly even out of date in some cases. We try to document everything as best we can but much is limited by available time and manpower.  We are are a university research group after all. The most up to date documentation can always be found (if not here) in the default.xml configuration file and, of course, in the source files.  If something is unclear please dont hesitate to [[Reporting problems|ask]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== CrossValidation ===&lt;br /&gt;
&lt;br /&gt;
The CrossValidation measure is the default choice and performs an n-fold cross validation on the model to create an efficient estimation of the accuracy of the model. Several options are available to customize this measure.&lt;br /&gt;
&lt;br /&gt;
{{OptionsHeader}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = folds&lt;br /&gt;
|values      = positive integer&lt;br /&gt;
|default     = 5&lt;br /&gt;
|description = The number of folds used for the measure. A higher number means that more models will be built, but that a better accuracy estimate is achieved.&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = randomThreshold&lt;br /&gt;
|values      = positive integer&lt;br /&gt;
|default     = 1000&lt;br /&gt;
|description = If the number of samples is greater than this number a random partitioning is used&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = partitionMethod&lt;br /&gt;
|values      = [uniform,random]&lt;br /&gt;
|default     = uniform&lt;br /&gt;
|description = This option defines whether the test sets for the folds are chosen randomly, or are chosen in such a way as to maximize the domain coverage. Random is generally much faster, but might result in pessimistic scoring, as unlucky test set choice can result in an inaccurate error. This can partly be fixed by enabling the resetFolds option.&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = resetFolds&lt;br /&gt;
|values      = boolean&lt;br /&gt;
|default     = no&lt;br /&gt;
|description = Folds are generated from scratch for each model that is evaluated using this measure. If the same model is evaluated twice (for example, after a rebuild), new folds are used. Enabling this feature can be very costly for large sample sizes. As a rule of thumb, enable this in combination with the random partition method, or disable this when using the uniform method.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Here is an example configuration for the CrossValidation measure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source xmlns:saxon=&amp;quot;http://icl.com/saxon&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type =&amp;quot;CrossValidation&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;use&amp;quot; value=&amp;quot;on&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;target&amp;quot; value=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;errorFcn&amp;quot; value=&amp;quot;meanSquareError&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;folds&amp;quot; value=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;randomThreshold&amp;quot; value=&amp;quot;1000&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;partitionMethod&amp;quot; value=&amp;quot;uniform&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;resetFolds&amp;quot; value=&amp;quot;no&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Measure&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ValidationSet ===&lt;br /&gt;
&lt;br /&gt;
The ValidationSet measure has two different methods of operation.&lt;br /&gt;
&lt;br /&gt;
# In the first method, the list of samples that have been evaluated is split into a validation set and a training set. A model is then built using the training set, and evaluated using the validation set (which is by default 20% of the total sample pool).&lt;br /&gt;
# However, an external data file containing a validation set can also specified. In this case, all the evaluated samples are used for training, and the external set is used for validation only. Which of these two operation methods is used, depends on the configuration options below. By default, no external validation set is loaded.&lt;br /&gt;
&lt;br /&gt;
If you want to use an external validation set, you will have to provide a DataSource configuration so that the validation set can be loaded from an external source. Here is a ValidationSet configuration example which loads the validation set from the scattered data file provided in the simulator file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type=&amp;quot;ValidationSet&amp;quot; target=&amp;quot;.001&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Option key=&amp;quot;type&amp;quot; value=&amp;quot;file&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;DataSource type=&amp;quot;iminds.sumo.DataSource.datasets.ScatteredDatasetDataSource&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Measure&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OptionsHeader}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = type&lt;br /&gt;
|values      = [distance, random, file]&lt;br /&gt;
|default     = distance&lt;br /&gt;
|description = Method used to acquire samples for the validation set. The default method, &#039;distance&#039;, tries to select a validation set which covers the entire domain as good as possible, ensuring that not all validation samples are chosen in the same part of the domain. This is achieved using a distance heuristic, which gives no guarantees on optimal coverage but performs very well in almost all situations. The &#039;random&#039; method just picks a random set of samples from the entire pool to be used for validation set.&lt;br /&gt;
Finally, the &#039;file&#039; method does not take samples at all from the pool, but loads a validation set from an external dataset.&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = percentUsed&lt;br /&gt;
|values      = [0,100]&lt;br /&gt;
|default     = 20&lt;br /&gt;
|description = Percent of samples used for the validation set. By default 20% of all samples are used for validation, while the remaining 80% are used for training. This option is irrelevant if the &#039;type&#039; option is set to &#039;file&#039;.&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = randomThreshold&lt;br /&gt;
|values      = positive integer&lt;br /&gt;
|default     = 1000&lt;br /&gt;
|description = When the sample pool is very large, the distance heuristic used by default becomes too slow, and the toolbox switches to random sample selection automatically. This is done when the amount of samples is larger than this value, which defaults to 1000. This option should not be changed unless the performance is unacceptable even for sample sets smaller than this amount.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== MinMax ===&lt;br /&gt;
&lt;br /&gt;
The MinMax measure is used to eliminate models whose response falls below a given minimum or above a given maximum. This measure can be used to detect models that have poles in the model domain and to guide the modeling process in the right direction. If the output is known to lie within certain value bounds, these can be added to the simulator file as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;OutputParameters&amp;gt;&lt;br /&gt;
	&amp;lt;Parameter name=&amp;quot;out&amp;quot; type=&amp;quot;real&amp;quot; minimum=&amp;quot;-1&amp;quot; maximum=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/OutputParameters&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the MinMax measure is defined, these values will be used to ensure that all models stay within these bounds. If only the minimum or only the maximum is defined, naturally only these are enforced. There are no further configuration options for this measure. In case of complex outputs the modulus is used.&lt;br /&gt;
&lt;br /&gt;
Remember though, that no guarantee can be given that the poles will really disappear. Using this measure only combats the symptoms and not the cause of the problem. Also, this measure can be reasonably slow, because it evaluates a dense grid to decide wether the model is crossing boundaries. If the model is slow to evaluate, this can take a considerable amount of time. Also note that the model is checked on a dense grid.  However, in higher dimensions the grid is sparser and thus no absolute certainty is given.&lt;br /&gt;
Finally note that this is quite a strong constraint on the model building process.  It means that a model which is otherwise very good, but simply overshoots the data in one place, will be penalized quite heavily.  This, if you can, try not to to give too strict bounds.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tips&#039;&#039;&#039;:&lt;br /&gt;
# even if you don&#039;t know the exact bounds on your output, you can still use this measure by specifying very broad bounds (e.g., [-10000 10000]).  This can still allow you to catch poles since, by definition, they reach until infinity.&lt;br /&gt;
# if you are using the ANN models and you want your output to lie within [0 1] you can simply use a &#039;logsig&#039; transfer function for the output layer.  Then BY DEFINITION your output will lie in [0 1] and no extra measure is needed. To get a different range you could even rename logsig.m and add your own scaling. This solution is far superior than using MinMax.&lt;br /&gt;
# if you are using the GeneticModelBuilder with population type custom, the MinMax idea can also be implemented in the GA itself as a constraint.  Then  you do not need the measure, this would also be a better solution.&lt;br /&gt;
&lt;br /&gt;
=== SampleError ===&lt;br /&gt;
&lt;br /&gt;
This measure simply calculates the error in the training data.  Note that this measure is useless for interpolating methods like Kriging and RBF.&lt;br /&gt;
&lt;br /&gt;
=== ModelDifference ===&lt;br /&gt;
&lt;br /&gt;
The toolbox keeps track of the n best models found so far.  The ModelDifference measure uses the disagreement between those models as a heuristic for ranking them.  A model that differs considerably from the other models is assumed to be of poor quality.  Remember that this is just a heuristic! We recommend ModelDifference never be used alone, but always in combination with some other model.&lt;br /&gt;
&lt;br /&gt;
=== LRMMeasure ===&lt;br /&gt;
&lt;br /&gt;
This is a very useful measure that can be used to complement other measures (see [[Multi-Objective Modeling]]) with some good results.  For example, as a cheaper alternative for crossvaliation with neural networks.  It will penalize models where they show unwanted &#039;bumps&#039; or &#039;ripples&#039; in the response.&lt;br /&gt;
&lt;br /&gt;
=== AIC ===&lt;br /&gt;
&lt;br /&gt;
Implements [http://en.wikipedia.org/wiki/Akaike_information_criterion Akaikes Information Criterion].  Note that this requires a proper implementation of the freeParams of a Model.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Running&amp;diff=5886</id>
		<title>Running</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Running&amp;diff=5886"/>
		<updated>2014-03-17T08:21:43Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Getting started ==&lt;br /&gt;
&lt;br /&gt;
If you are just getting started with the toolbox and you want to find out how everything works, this section should help you on your way.&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;features&#039;&#039;&#039; and scope of the SUMO Toolbox are detailed on this [[About#Intended_use|page]] where you can find out whether the SUMO Toolbox suits your needs. To find out more about the SUMO Toolbox in general, check out the documentation on this [[About#Documentation|page]].&lt;br /&gt;
&lt;br /&gt;
* If you want to get hands-on with the SUMO Toolbox, we recommend using this [http://www.sumowiki.intec.ugent.be/images/7/7b/SUMO_hands_on.pdf guide]. The guide explains the basic SUMO framework, how to &#039;&#039;&#039;install&#039;&#039;&#039; the SUMO Toolbox on your computer and provides some &#039;&#039;&#039;examples&#039;&#039;&#039; on running the toolbox.&lt;br /&gt;
&lt;br /&gt;
* Since the SUMO Toolbox is [[Configuration|configured]] by editing XML files it might be a good idea to read [[FAQ#What is XML?|this page]], if you are not familiar with XML files. You can also check out this [[Config:ToolboxConfiguration#Interpreting_the_configuration_file| page]] which has more info on how the SUMO Toolbox uses XML.&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;installation&#039;&#039;&#039; information can also be found [[Installation|on this wiki]] and more information on running a different example the SUMO Toolbox can be found [[Running#Running_different_examples|here]]. &lt;br /&gt;
&lt;br /&gt;
* The SUMO Toolbox also comes with a set of &#039;&#039;&#039;demo&#039;s&#039;&#039;&#039; showing the different uses of the toolbox. You can find the configuration files for these demo&#039;s in the &#039;config/demo&#039; directory.&lt;br /&gt;
&lt;br /&gt;
* We have also provided some [[General_guidelines|general modelling guidelines]] which you can use a starting point to model your problems.&lt;br /&gt;
&lt;br /&gt;
* Also be sure to check out the &#039;&#039;&#039;Frequently Asked Questions&#039;&#039;&#039; ([[FAQ|FAQ]]) page as it might answer some of your questions.&lt;br /&gt;
&lt;br /&gt;
Finally if you get stuck or have any problems [[Reporting problems|feel free to let us know]] and will do our best to help you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;We are well aware that documentation is not always complete and possibly even out of date in some cases. We try to document everything as best we can but much is limited by available time and manpower.  We are are a university research group after all. The most up to date documentation can always be found (if not here) in the default.xml configuration file and, of course, in the source files.  If something is unclear please don&#039;t hesitate to [[Reporting problems|ask]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Running different examples  ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
This section is about running a different example problem, if you want to model your own problem see [[Adding an example]].  Make sure you [[configuration|understand the difference between the simulator configuration file and the toolbox configuration file]] and understand how these configuration files are [[Toolbox configuration#Structure|structured]].&lt;br /&gt;
&lt;br /&gt;
=== Changing the configuration xml ===&lt;br /&gt;
The &amp;lt;code&amp;gt;examples/&amp;lt;/code&amp;gt; directory contains many example simulators that you can use to test the toolbox with. These examples range from predefined functions, to datasets from various domains, to native simulation code. If you want to try one of the examples, open &amp;lt;code&amp;gt;config/default.xml&amp;lt;/code&amp;gt; and edit the [[Simulator| &amp;lt;Simulator&amp;gt;]] tag to suit your needs (for more information about editing the configuration xml, go to this [[Config:ToolboxConfiguration#Interpreting_the_configuration_file|page]]).&lt;br /&gt;
&lt;br /&gt;
For example, originally the default &#039;&#039;&#039;configuration xml&#039;&#039;&#039; file, default.xml, contains:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Simulator&amp;gt;Math/Academic/Academic2DTwice.xml&amp;lt;/Simulator&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The toolbox will look in the examples directory for a project directory called &amp;lt;code&amp;gt;Math/Academic&amp;lt;/code&amp;gt; and load the &#039;&#039;&#039;simulator xml&#039;&#039;&#039; file named &#039;Academic2DTwice.xml&#039;. If no simulator xml file name is specified, the SUMO Toolbox will load the simulator xml with the same name as directory. For example &amp;lt;code&amp;gt;Math/Peaks&amp;lt;/code&amp;gt; is equivalent to &amp;lt;code&amp;gt;Math/Peaks/Peaks.xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Now let&#039;s say you want to run one of the different example problems, for example, lets say you want to try the &#039;Michalewicz&#039; example.  In this case you would replace the original Simulator tag with: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Simulator&amp;gt;Math/Michalewicz&amp;lt;/Simulator&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition you would have to change the &amp;lt;code&amp;gt;&amp;lt;Outputs&amp;gt;&amp;lt;/code&amp;gt; tag.  The &amp;lt;code&amp;gt;Math/Academic/Academic2DTwice.xml&amp;lt;/code&amp;gt; example has two outputs (&#039;&#039;out&#039;&#039; and &#039;&#039;outinverse&#039;&#039;).  However, the Michalewicz example has only one (&#039;&#039;out&#039;&#039;).  Thus telling the SUMO Toolbox to model the &#039;&#039;outinverse&#039;&#039; output in that case makes no sense since it does not exist for the &#039;Michalewicz&#039; example.  So the following output configuration suffices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Outputs&amp;gt;&lt;br /&gt;
   &amp;lt;Output name=&amp;quot;out&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/Output&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rest of default.xml can be kept the same, then simply type in &#039;&amp;lt;code&amp;gt;go&amp;lt;/code&amp;gt;&#039; in the SUMO root to run the example. If you do not specify any arguments, the SUMO Toolbox will use the settings in the default.xml file. If you wish run a different configuration file use the following command &#039;&amp;lt;code&amp;gt;go(pathToYourConfig/yourConfig.xml)&amp;lt;/code&amp;gt;&#039; where pathToYourConfig is the path to where your configuration XML-file is located, and yourConfig.xml is the name of your configuration XML-file.&lt;br /&gt;
&lt;br /&gt;
As noted above, it is also possible to specify an absolute path or refer to a particular simulator xml file directly.  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Simulator&amp;gt;/path/to/your/project/directory&amp;lt;/Simulator&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Simulator&amp;gt;Ackley/Ackley2D.xml&amp;lt;/Simulator&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Important notes ===&lt;br /&gt;
&lt;br /&gt;
If you start changing default.xml to try out different examples, there are a number of important things you should be aware of.&lt;br /&gt;
&lt;br /&gt;
==== Select matching Inputs and Outputs ====&lt;br /&gt;
Using the &amp;lt;code&amp;gt;&amp;lt;Inputs&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;Outputs&amp;gt;&amp;lt;/code&amp;gt; tags in the SUMO-Toolbox configuration file you can tell the toolbox which outputs should be modeled and how.  Note that these tags are optional.  You can delete them and then the toolbox will simply model all available inputs and outputs.  If you do specify a particular output, for example say you tell the toolbox to model output &#039;&#039;temperature&#039;&#039; of the simulator &#039;ChemistryProblem&#039;.  If you then change the configuration file to model &#039;BiologyProblem&#039; you will have to change the name of the selected output (or input) since most likely &#039;BiologyProblem&#039; will not have an output called &#039;&#039;temperature&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Information on how to further customize to modelling of the outputs can be found [[Outputs|here]].&lt;br /&gt;
&lt;br /&gt;
==== Select a matching DataSource ====&lt;br /&gt;
There is one important caveat. Some examples consist of a fixed data set, some are implemented as a Matlab function, others as a C++ executable, etc.  When running a different example you have to tell the SUMO Toolbox how the example is implemented so the toolbox knows how to extract data (eg: should it load a data file or should it call a Matlab function).  This is done by specifying the correct [[Config:DataSource|DataSource]] tag.  The default DataSource is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DataSource&amp;gt;matlab&amp;lt;/DataSource&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So this means that the toolbox expects the example you want to run is implemented as a Matlab function.  Thus it is no use running an example that is implemented as a static dataset using the &#039;[[Config:DataSource#matlab|matlab]]&#039; or &#039;[[Config:DataSource#local|local]]&#039; sample evaluators.  Doing this will result in an error.  In this case you should use &#039;[[Config:DataSource#scatteredDataset|scatteredDataset]]&#039; (or sometimes [[Config:DataSource#griddedDataset|griddedDataset]]).&lt;br /&gt;
&lt;br /&gt;
To see how an example is implemented open the XML file inside the example directory and look at the &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Implementation&amp;gt;&amp;lt;/source&amp;gt; tag.  To see which DataSources are available see [[Config:DataSource]].&lt;br /&gt;
&lt;br /&gt;
=== Select an appropriate model type ===&lt;br /&gt;
The choice of the model type which you use to model your problem has a great impact on the overall accuracy. If you switch to a different example you may also have to change the model type used. For example, if you are using a spline model (which only works in 2D) and you decide to model a problem with many dimensions (e.g., CompActive or BostonHousing) you will have to switch to a different model type (e.g., any of the SVM or LS-SVM model builders). &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;ModelBuilder&amp;gt; tag specifies which model type is used to model problem. In most cases the &#039;ModelBuilder&#039; also specifies an optimization algorithm to find the best &#039;hyperparameters&#039; of the models. Hyperparameters are parameters which define model, such as the order of a polynomial or the the number of hidden nodes of an Artificial Neural Network. To see all the ModelBuilder options and what they do go to [[Config:ModelBuilder| this page]].&lt;br /&gt;
&lt;br /&gt;
=== One-shot designs ===&lt;br /&gt;
If you want to use the toolbox to simply model all your data without instead of using the default sequential approach,  see [[Adaptive_Modeling_Mode]] for how to do this.&lt;br /&gt;
&lt;br /&gt;
== Running different configuration files ==&lt;br /&gt;
&lt;br /&gt;
If you just type &amp;quot;go&amp;quot; the SUMO-Toolbox will run using the configuration options in default.xml.  However you may want to make a copy of default.xml and play around with that, leaving your original default.xml intact.  So the question is, how do you run that file?  Lets say your copy is called MyConfigFile.xml.  In order to tell SUMO to run that file you would type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
go(&#039;/path/to/MyConfigFile.xml&#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The path can be an absolute path, or a path relative to the SUMO Toolbox root directory.&lt;br /&gt;
To see what other options you have when running go type &#039;&#039;help go&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remember to always run go from the toolbox root directory.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Merging your configuration ===&lt;br /&gt;
&lt;br /&gt;
If you know what you are doing, you can merge your own custom configuration with the default configuration by using the &#039;-merge&#039; option.  Options or tags that are missing in this custom file will then be filled up with the values from the default configuration.  This prevents you from having to duplicate tags in default.xml and creates xml files which are easier to manipulate. However, if you are unfamiliar with XML and not quite sure what you are doing we advise against using it.&lt;br /&gt;
&lt;br /&gt;
=== Running optimization examples ===&lt;br /&gt;
The SUMO toolbox can also be used for minimizing the simulator in an intelligent way. There are 2 examples in included in &amp;lt;code&amp;gt;config/Optimization&amp;lt;/code&amp;gt;. To run these examples is exactly the same as always, e.g. &amp;lt;code&amp;gt;go(&#039;config/optimization/Branin.xml&#039;)&amp;lt;/code&amp;gt;. The only difference is in the sample selector which is specified in the configuration file itself.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:ISCSampleSelector2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
The example configuration files are well documented, it is advised to go through them for more detailed information.&lt;br /&gt;
&lt;br /&gt;
== Understanding the control flow ==&lt;br /&gt;
&lt;br /&gt;
[[Image:sumo-control-flow.png|thumb|300px|right|The general SUMO-Toolbox control flow]]&lt;br /&gt;
&lt;br /&gt;
When the toolbox is running you might wonder what exactly is going on. The high level control flow that the toolbox goes through is illustrated in the flow chart and explained in more detail below.  You may also refer to the [[About#Presentation|general SUMO presentation]].&lt;br /&gt;
&lt;br /&gt;
# Select samples according to the [[InitialDesign|initial design]] and execute the [[Simulator]] for each of the points&lt;br /&gt;
# Once enough points are available, start the [[Add_Model_Type#Models.2C_Model_builders.2C_and_Factories|Model builder]] which will start producing models as it optimizes the model parameters&lt;br /&gt;
## the number of models generated depends on the [[Config:ModelBuilder|ModelBuilder]] used. Usually the ModelBuilder tag contains a setting like &#039;&#039;maxFunEvals&#039;&#039; or &#039;&#039;popSize&#039;&#039;.  This indicates to the algorithm that is optimizing the model parameters (and thus generating models) how many models it should maximally generate before stopping.  By increasing this number you will generate more models in between sampling iterations, thus have a higher chance of getting a better model, but increasing the computation time.  This step is what we refer to as a &#039;&#039;modeling iteration&#039;&#039;.&lt;br /&gt;
## optimization over the model parameters is driven by the [[Measures|Measure(s)]] that are enabled. Selection of the Measure is thus very important for the modeling process!&lt;br /&gt;
## each time the model builder generates a model that has a lower measure score than the previous best model, the toolbox will trigger a &amp;quot;New best model found&amp;quot; event, save the model, generate a plot, and trigger all the profilers to update themselves.&lt;br /&gt;
## so note that by default, you only see something happen when a new best model is found, you do not see all the other models that are being generated in the background.  If you want to see those, you must increase the logging granularity (or just look in the log file) or [[FAQ#How_do_I_enable_more_profilers.3F|enable more profilers]].&lt;br /&gt;
# So the model builder will run until it has completed&lt;br /&gt;
# Then, if the current best model satisfies all the targets in the enabled Measures, it means we have reached the requirements and the toolbox terminates.&lt;br /&gt;
# If not, the [[Config:SequentialDesign|SequentialDesign]] selects a new set of samples (= a &#039;&#039;sampling iteration&#039;&#039;), they are simulated, and the model building resumes or is restarted according to the configured restart strategy&lt;br /&gt;
# This whole loop continues (thus the toolbox will keep running) until one of the following conditions is true:&lt;br /&gt;
## the targets specified in the active measure tags have been reached (each Measure has a target value which you can set). Note though, that when you are using multiple measures (see [[Multi-Objective Modeling]]) or when using single measures like AIC or LRM, it becomes difficult to set a priori targets since you cant really interpret the scores (in contrast to the simple case with a single measure like CrossValidation where your target is simply the error you require).  In those cases you should usually set the targets to 0 and use one of the other criteria below to make sure the toolbox stops.&lt;br /&gt;
## the maximum running time has been reached (&#039;&#039;maximumTime&#039;&#039; property in the [[Config:SUMO]] tag)&lt;br /&gt;
## the maximum number of samples has been reached (&#039;&#039;maximumTotalSamples&#039;&#039; property in the [[Config:SUMO]] tag)&lt;br /&gt;
## the maximum number of modeling iterations has been reached (&#039;&#039;maxModelingIterations&#039;&#039; property in the [[Config:SUMO]] tag)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that it is also possible to disable the sample selection loop, see [[Adaptive Modeling Mode]].  Also note that while you might think the toolbox is not doing anything, it is actually building models in the background (see above for how to see the details).  The toolbox will only inform you (unless configured otherwise) if it finds a model that is better than the previous best model (using that particular measure!!).  If not it will continue running until one of the stopping conditions is true.&lt;br /&gt;
&lt;br /&gt;
== SUMO Toolbox output ==&lt;br /&gt;
&lt;br /&gt;
All output is stored under the [[Config:ContextConfig#OutputDirectory|directory]] specified in the [[Config:ContextConfig]] section of the configuration file (by default this is set to &amp;quot;&amp;lt;code&amp;gt;output&amp;lt;/code&amp;gt;&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
Starting from version 6.0 the output directory is always relative to the project directory of your example.  Unless you specify an absolute path.&lt;br /&gt;
&lt;br /&gt;
After completion of a SUMO Toolbox run, the following files and directories can be found there (e.g. : in &amp;lt;code&amp;gt;output/&amp;lt;run_name+date+time&amp;gt;/&amp;lt;/code&amp;gt; subdirectory) :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;config.xml&amp;lt;/code&amp;gt;: The xml file that was used by this run. Can be used to reproduce the entire modeling process for that run.&lt;br /&gt;
* &amp;lt;code&amp;gt;randstate.dat&amp;lt;/code&amp;gt;: contains states of the random number generators, so that it becomes possible to deterministically repeat a run (see the [[Random state]] page).&lt;br /&gt;
* &amp;lt;code&amp;gt;samples.txt&amp;lt;/code&amp;gt;: a list of all the samples that were evaluated, and their outputs.&lt;br /&gt;
* &amp;lt;code&amp;gt;profilers&amp;lt;/code&amp;gt;-dir: contains information and plots about convergence rates, resource usage, and so on.&lt;br /&gt;
* &amp;lt;code&amp;gt;best&amp;lt;/code&amp;gt;-dir: contains the best models (+ plots) of all outputs that were constructed during the run.  This is continuously updated as the modeling progresses.&lt;br /&gt;
* &amp;lt;code&amp;gt;models_outputName&amp;lt;/code&amp;gt;-dir: contains a history of all intermediate models (+ plots + movie) for each output that was modeled.&lt;br /&gt;
&lt;br /&gt;
If you generated models [[Multi-Objective Modeling|multi-objectively]] you will also find the following directory:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;paretoFronts&amp;lt;/code&amp;gt;-dir: contains snapshots of the population during multi-objective optimization of the model parameters.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
&lt;br /&gt;
Remember to always check the log file first if problems occur!&lt;br /&gt;
When [[reporting problems]] please attach your log file and the xml configuration file you used.&lt;br /&gt;
&lt;br /&gt;
To aid understanding and debugging you should set the console and file logging level to FINE (or even FINER, FINEST)&lt;br /&gt;
as follows: &lt;br /&gt;
&lt;br /&gt;
Change the level of the ConsoleHandler tag to FINE, FINER or FINEST.  Do the same for the FileHandler tag. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Configure ConsoleHandler instances --&amp;gt;&lt;br /&gt;
&amp;lt;ConsoleHandler&amp;gt;&lt;br /&gt;
	&amp;lt;Option key=&amp;quot;Level&amp;quot; value=&amp;quot;FINE&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/ConsoleHandler&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using models ==&lt;br /&gt;
&lt;br /&gt;
Once you have generated a model, you might wonder what you can do with it. To see how to load, export, and use SUMO generated models see the [[Using a model]] page.&lt;br /&gt;
&lt;br /&gt;
== Modelling complex outputs ==&lt;br /&gt;
&lt;br /&gt;
The toolbox supports the modeling of complex valued data.  If you do not specify any specific &amp;lt;[[Outputs|Output]]&amp;gt; tags, all outputs will be modeled with [[Outputs#Complex_handling|complexHandling]] set to &#039;&amp;lt;code&amp;gt;complex&amp;lt;/code&amp;gt;&#039;. This means that a real output will be modeled as a real value, and a complex output will be modeled as a complex value (with a real and imaginary part).  If you don&#039;t want this (i.e., you want to model the modulus of a complex output or you want to model real and imaginary parts separately), you explicitly have to set [[Outputs#Complex_handling|complexHandling]] to &#039;modulus&#039;, &#039;real&#039;, &#039;imaginary&#039;, or &#039;split&#039;.&lt;br /&gt;
 &lt;br /&gt;
More information on this subject can be found at the [[Outputs#Complex_handling|Outputs]] page.&lt;br /&gt;
&lt;br /&gt;
== Models with multiple outputs ==&lt;br /&gt;
&lt;br /&gt;
If multiple [[Outputs]] are selected, by default the toolbox will model each output separately using a separate adaptive model builder object.  So if you have a system with 3 outputs you will get three different models each with one output.  However, sometimes you may want a single model with multiple outputs.  For example instead of having a neural network for each component of a complex output (real/imaginary) you might prefer a single network with 2 outputs.  To do this simply set the &#039;combineOutputs&#039; attribute of the &amp;lt;AdaptiveModelBuilder&amp;gt; tag to &#039;true&#039;.  That means that each time that model builder is selected for an output, the same model builder object will be used instead of creating a new one.&lt;br /&gt;
&lt;br /&gt;
Note though, that not all model types support multiple outputs.  If they don&#039;t you will get an error message.&lt;br /&gt;
&lt;br /&gt;
Also note that you can also generate models with multiple outputs in a multi-objective fashion.  For information on this see the page on [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
== Multi-Objective Model generation ==&lt;br /&gt;
&lt;br /&gt;
See the page on [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
== Interfacing with the SUMO Toolbox ==&lt;br /&gt;
&lt;br /&gt;
To learn how to interface with the toolbox or model your own problem see the [[Adding an example]] and [[Interfacing with the toolbox]] pages.&lt;br /&gt;
&lt;br /&gt;
== Test Suite ==&lt;br /&gt;
&lt;br /&gt;
A test harness is provided that can be run manually or automatically as part of a cron job.  The test suite consists of a number of test XML files (in the config/test/ directory), each describing a particular surrogate modeling experiment.  The file config/test/suite.xml dictates which tests are run and their order.  The suite.xml file also contains the accuracy and sample bounds that are checked after each test.  If the final model found does not fall within the accuracy or number-of-samples bounds, the test is considered failed.&lt;br /&gt;
&lt;br /&gt;
Note also that some of the predefined test cases may rely on data sets or simulation code that are not publically available for confidentiality reasons.  However, since these test problems typically make very good benchmark problems we left them in for illustration purposes.&lt;br /&gt;
&lt;br /&gt;
The coordinating class is the Matlab TestSuite class found in the src/matlab directory. Besides running the tests defined in suite.xml it also tests each of the model member functions.&lt;br /&gt;
&lt;br /&gt;
Assuming the SUMO Toolbox is setup properly and the necessary libraries are compiled ([[Installation#Optional:_Compiling_libraries|see here]]), the test suite should be run as follows (from the SUMO root directory):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
s = TestEngine(&#039;config/test/suite.xml&#039;) ; s.run()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;run()&amp;quot; method also supports an optional parameter (a vector) that dictates which tests to run (e.g., run([2 5 3]) will run tests 2,5 and 3).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note that due to randomization the final accuracy and number of samples used may vary slightly from run to run (causing failed tests).  Thus the bounds must be set sufficiently loose.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
&lt;br /&gt;
See the [[Tips]] page for various tips and gotchas.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Measures&amp;diff=5885</id>
		<title>Measures</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Measures&amp;diff=5885"/>
		<updated>2014-03-17T08:16:25Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is a Measure ==&lt;br /&gt;
A crucial aspect of generating models is estimating their quality.  Some metric is needed to decide whether a model is poor, good, very good, etc.  In the SUMO Toolbox this role is played by the &#039;&#039;Measure&#039;&#039; component.  A measure is an object that, given a model, returns an estimation of its quality.  This can be something very simple as the error of the model fit in the training data, or it may involve a complex calculation to see if a model satisfies some physical constraint.&lt;br /&gt;
&lt;br /&gt;
The Measure is used in the SUMO Toolbox to drive the [[Add_Model_Type#Models.2C_Model_builders.2C_and_Factories|model parameter optimization]] (see also the [[Running#Understanding_the_control_flow|toolbox control flow]]). This can be done in a single objective or [[Multi-Objective Modeling|multi-objective]] fashion.&lt;br /&gt;
&lt;br /&gt;
There are two aspects to a Measure:&lt;br /&gt;
&lt;br /&gt;
# The quality estimation algorithm&lt;br /&gt;
# The error function&lt;br /&gt;
&lt;br /&gt;
The first is the algorithm used to estimate the model quality.  This is for example the in-sample error, or the 5-fold crossvalidation score.  The error function determines what kind of error you want to use.  You can calculate the in-sample error using: the average absolute error, the root mean square error, a maximum relative error, etc.  Note that the error function may not be relevant for every type of measure (eg., AIC).&lt;br /&gt;
&lt;br /&gt;
It cannot be stressed enough that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&#039;&#039;&#039;A proper choice of Measure and Error function is CRUCIAL to the success of your modeling&#039;&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That choice will depend on your problem characteristics, the data distribution and the model type you will use to fit the data.  It is &#039;&#039;&#039;extremely important&#039;&#039;&#039; to think about this well (&amp;quot;what do you want?&amp;quot;) before starting any modeling.&lt;br /&gt;
&lt;br /&gt;
As a side remark, note that Measures and sequential designs are closely related.  The same criteria that is used to decide if a model is good or bad, can be used to identify interesting locations to select new data points.&lt;br /&gt;
&lt;br /&gt;
Also note that some model builders (notably GeneticModelBuilder) support constraints directly.  This means you can also implement what you would otherwise implement as a Measure as constraint in the model parameter optimization algorithm itself.  This is a superior solution to using a Measure.&lt;br /&gt;
&lt;br /&gt;
== Using measures ==&lt;br /&gt;
&lt;br /&gt;
To use a particular measure in the SUMO Toolbox, you have to edit the &amp;lt;Measure&amp;gt; tag in Plan section of the configuration XML-file. If you are using the configuration XML-file default.xml, please note that the &amp;lt;Measure&amp;gt; tag does NOT refer to any configuration sections below the Plan section. Instead they are defined directly in the Plan section. You can of course always add Measure configuration sections and refer to them in the Plan section using their id. Here are three equivalent examples of defining measure in the configuration xml. The default.xml also contains examples of measures in the commented out sections.&lt;br /&gt;
&lt;br /&gt;
The first way is the one used in the default.xml and can be found within the Plan section; the measure type used is the SampleError which scores models on how well the capture the training data. The error function used to aggregate the scores for each training sample is meanSquareError. The target determines the target accuracy that has to be satisfied by the models, in this case it means that mean square error of all training examples of a model should be 0.01 or less. The option &amp;lt;code&amp;gt;use=&amp;quot;on&amp;quot;&amp;lt;/code&amp;gt; indicates that this measure should be used to guide the model selection criterion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source xmlns:saxon=&amp;quot;http://icl.com/saxon&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Plan&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Measure type=&amp;quot;SampleError&amp;quot; target=&amp;quot;.01&amp;quot; errorFcn=&amp;quot;meanSquareError&amp;quot; use=&amp;quot;on&amp;quot;/&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Plan&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The second way uses an id in the Plan section to refer to the same measure, but which is now defined separately in a configuration section:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source xmlns:saxon=&amp;quot;http://icl.com/saxon&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Plan&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Measure&amp;gt;ExampleMeasure&amp;lt;/Measure&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Plan&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Measure id=&amp;quot;ExampleMeasure&amp;quot; type =&amp;quot;SampleError&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;use&amp;quot; value=&amp;quot;on&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;target&amp;quot; value=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;errorFcn&amp;quot; value=&amp;quot;meanSquareError&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Measure&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
And finally the configuration section can also be placed directly into the Plan section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source xmlns:saxon=&amp;quot;http://icl.com/saxon&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Plan&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;Measure id=&amp;quot;ExampleMeasure&amp;quot; type =&amp;quot;SampleError&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Option key=&amp;quot;use&amp;quot; value=&amp;quot;on&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Option key=&amp;quot;target&amp;quot; value=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Option key=&amp;quot;errorFcn&amp;quot; value=&amp;quot;meanSquareError&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/Measure&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Plan&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using multiple measures ==&lt;br /&gt;
&lt;br /&gt;
The SUMO-Toolbox also allows you to use several measures to guide modeling process. You may want to use more than one measure because for example you need a model which has a mean square error of 0.01 but its largest error cannot exceed a certain threshold. Or you want to use several measures to monitor the modeling process.&lt;br /&gt;
&lt;br /&gt;
Go to the [[Multi-Objective_Modeling|Multi-Objective Modeling page]] to find out how to build models using multiple measures.&lt;br /&gt;
If you want to use more than one measure but only for monitoring purposes (i.e. they will not be used for model selection), you can do this by adding the desired measure(s) you want to use for monitoring to the Plan but with the &amp;lt;code&amp;gt;use=&amp;quot;off&amp;quot;&amp;lt;/code&amp;gt; keyword.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source xmlns:saxon=&amp;quot;http://icl.com/saxon&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Plan&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Measure type=&amp;quot;SampleError&amp;quot; target=&amp;quot;.01&amp;quot; errorFcn=&amp;quot;meanSquareError&amp;quot; use=&amp;quot;on&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Measure type=&amp;quot;CrossValidation&amp;quot; target=&amp;quot;.05&amp;quot; errorFcn=&amp;quot;maxAbsoluteError&amp;quot; use=&amp;quot;off&amp;quot;/&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/Plan&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tips on using measures ==&lt;br /&gt;
&lt;br /&gt;
A recommended read is [http://www.sumo.intec.ugent.be/files/2009_08_EWC.pdf the paper available here].&lt;br /&gt;
&lt;br /&gt;
In general, the default measure, 5 fold CrossValidation, is an acceptable choice.  However, it is also very expensive, as it requires that a model be re-trained for each fold.  This may slow things down if a model is expensive to train (e.g., neural nets).  Also CrossValidation can give biased results if data is clustered or scarce.  Increasing the number of folds may help here.  A cheaper alternative is ValidationSet (see below) or AIC.  For a full list of available measures see the &amp;lt;code&amp;gt;src/matlab/measures&amp;lt;/code&amp;gt; subdirectory.&lt;br /&gt;
&lt;br /&gt;
Note that multiple measures may also be combined.  For more information see [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
For how to change the error function see [[FAQ#How_do_I_change_the_error_function_.28relative_error.2C_RMS.2C_....29.3F| this FAQ entry]].&lt;br /&gt;
&lt;br /&gt;
Below is a list of some available measures and the configuration options available for each of them. Each measure also has a target accuracy attribute, which can be omitted and which defaults to 0.001. In certain cases, such as the binary MinMax measure, the target accuracy is irrelevant.&lt;br /&gt;
&lt;br /&gt;
== Defining your own Measure ==&lt;br /&gt;
&lt;br /&gt;
see [[Add_Measure]]&lt;br /&gt;
&lt;br /&gt;
== Measure types ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;We are well aware that documentation is not always complete and possibly even out of date in some cases. We try to document everything as best we can but much is limited by available time and manpower.  We are are a university research group after all. The most up to date documentation can always be found (if not here) in the default.xml configuration file and, of course, in the source files.  If something is unclear please dont hesitate to [[Reporting problems|ask]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== CrossValidation ===&lt;br /&gt;
&lt;br /&gt;
The CrossValidation measure is the default choice and performs an n-fold cross validation on the model to create an efficient estimation of the accuracy of the model. Several options are available to customize this measure.&lt;br /&gt;
&lt;br /&gt;
{{OptionsHeader}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = folds&lt;br /&gt;
|values      = positive integer&lt;br /&gt;
|default     = 5&lt;br /&gt;
|description = The number of folds used for the measure. A higher number means that more models will be built, but that a better accuracy estimate is achieved.&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = randomThreshold&lt;br /&gt;
|values      = positive integer&lt;br /&gt;
|default     = 1000&lt;br /&gt;
|description = If the number of samples is greater than this number a random partitioning is used&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = partitionMethod&lt;br /&gt;
|values      = [uniform,random]&lt;br /&gt;
|default     = uniform&lt;br /&gt;
|description = This option defines whether the test sets for the folds are chosen randomly, or are chosen in such a way as to maximize the domain coverage. Random is generally much faster, but might result in pessimistic scoring, as unlucky test set choice can result in an inaccurate error. This can partly be fixed by enabling the resetFolds option.&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = resetFolds&lt;br /&gt;
|values      = boolean&lt;br /&gt;
|default     = no&lt;br /&gt;
|description = Folds are generated from scratch for each model that is evaluated using this measure. If the same model is evaluated twice (for example, after a rebuild), new folds are used. Enabling this feature can be very costly for large sample sizes. As a rule of thumb, enable this in combination with the random partition method, or disable this when using the uniform method.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Here is an example configuration for the CrossValidation measure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source xmlns:saxon=&amp;quot;http://icl.com/saxon&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type =&amp;quot;CrossValidation&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;use&amp;quot; value=&amp;quot;on&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;target&amp;quot; value=&amp;quot;0.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;errorFcn&amp;quot; value=&amp;quot;meanSquareError&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;folds&amp;quot; value=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;randomThreshold&amp;quot; value=&amp;quot;1000&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;partitionMethod&amp;quot; value=&amp;quot;uniform&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;resetFolds&amp;quot; value=&amp;quot;no&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Measure&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ValidationSet ===&lt;br /&gt;
&lt;br /&gt;
The ValidationSet measure has two different methods of operation.&lt;br /&gt;
&lt;br /&gt;
# In the first method, the list of samples that have been evaluated is split into a validation set and a training set. A model is then built using the training set, and evaluated using the validation set (which is by default 20% of the total sample pool).&lt;br /&gt;
# However, an external data file containing a validation set can also specified. In this case, all the evaluated samples are used for training, and the external set is used for validation only. Which of these two operation methods is used, depends on the configuration options below. By default, no external validation set is loaded.&lt;br /&gt;
&lt;br /&gt;
If you want to use an external validation set, you will have to provide a SampleEvaluator configuration so that the validation set can be loaded from an external source. Here is a ValidationSet configuration example which loads the validation set from the scattered data file provided in the simulator file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type=&amp;quot;ValidationSet&amp;quot; target=&amp;quot;.001&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Option key=&amp;quot;type&amp;quot; value=&amp;quot;file&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;SampleEvaluator type=&amp;quot;ibbt.sumo.sampleevaluators.datasets.ScatteredDatasetSampleEvaluator&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Measure&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OptionsHeader}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = type&lt;br /&gt;
|values      = [distance, random, file]&lt;br /&gt;
|default     = distance&lt;br /&gt;
|description = Method used to acquire samples for the validation set. The default method, &#039;distance&#039;, tries to select a validation set which covers the entire domain as good as possible, ensuring that not all validation samples are chosen in the same part of the domain. This is achieved using a distance heuristic, which gives no guarantees on optimal coverage but performs very well in almost all situations. The &#039;random&#039; method just picks a random set of samples from the entire pool to be used for validation set.&lt;br /&gt;
Finally, the &#039;file&#039; method does not take samples at all from the pool, but loads a validation set from an external dataset.&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = percentUsed&lt;br /&gt;
|values      = [0,100]&lt;br /&gt;
|default     = 20&lt;br /&gt;
|description = Percent of samples used for the validation set. By default 20% of all samples are used for validation, while the remaining 80% are used for training. This option is irrelevant if the &#039;type&#039; option is set to &#039;file&#039;.&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name        = randomThreshold&lt;br /&gt;
|values      = positive integer&lt;br /&gt;
|default     = 1000&lt;br /&gt;
|description = When the sample pool is very large, the distance heuristic used by default becomes too slow, and the toolbox switches to random sample selection automatically. This is done when the amount of samples is larger than this value, which defaults to 1000. This option should not be changed unless the performance is unacceptable even for sample sets smaller than this amount.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== MinMax ===&lt;br /&gt;
&lt;br /&gt;
The MinMax measure is used to eliminate models whose response falls below a given minimum or above a given maximum. This measure can be used to detect models that have poles in the model domain and to guide the modeling process in the right direction. If the output is known to lie within certain value bounds, these can be added to the simulator file as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;OutputParameters&amp;gt;&lt;br /&gt;
	&amp;lt;Parameter name=&amp;quot;out&amp;quot; type=&amp;quot;real&amp;quot; minimum=&amp;quot;-1&amp;quot; maximum=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/OutputParameters&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the MinMax measure is defined, these values will be used to ensure that all models stay within these bounds. If only the minimum or only the maximum is defined, naturally only these are enforced. There are no further configuration options for this measure. In case of complex outputs the modulus is used.&lt;br /&gt;
&lt;br /&gt;
Remember though, that no guarantee can be given that the poles will really disappear. Using this measure only combats the symptoms and not the cause of the problem. Also, this measure can be reasonably slow, because it evaluates a dense grid to decide wether the model is crossing boundaries. If the model is slow to evaluate, this can take a considerable amount of time. Also note that the model is checked on a dense grid.  However, in higher dimensions the grid is sparser and thus no absolute certainty is given.&lt;br /&gt;
Finally note that this is quite a strong constraint on the model building process.  It means that a model which is otherwise very good, but simply overshoots the data in one place, will be penalized quite heavily.  This, if you can, try not to to give too strict bounds.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tips&#039;&#039;&#039;:&lt;br /&gt;
# even if you don&#039;t know the exact bounds on your output, you can still use this measure by specifying very broad bounds (e.g., [-10000 10000]).  This can still allow you to catch poles since, by definition, they reach until infinity.&lt;br /&gt;
# if you are using the ANN models and you want your output to lie within [0 1] you can simply use a &#039;logsig&#039; transfer function for the output layer.  Then BY DEFINITION your output will lie in [0 1] and no extra measure is needed. To get a different range you could even rename logsig.m and add your own scaling. This solution is far superior than using MinMax.&lt;br /&gt;
# if you are using the GeneticModelBuilder with population type custom, the MinMax idea can also be implemented in the GA itself as a constraint.  Then  you do not need the measure, this would also be a better solution.&lt;br /&gt;
&lt;br /&gt;
=== SampleError ===&lt;br /&gt;
&lt;br /&gt;
This measure simply calculates the error in the training data.  Note that this measure is useless for interpolating methods like Kriging and RBF.&lt;br /&gt;
&lt;br /&gt;
=== ModelDifference ===&lt;br /&gt;
&lt;br /&gt;
The toolbox keeps track of the n best models found so far.  The ModelDifference measure uses the disagreement between those models as a heuristic for ranking them.  A model that differs considerably from the other models is assumed to be of poor quality.  Remember that this is just a heuristic! We recommend ModelDifference never be used alone, but always in combination with some other model.&lt;br /&gt;
&lt;br /&gt;
=== LRMMeasure ===&lt;br /&gt;
&lt;br /&gt;
This is a very useful measure that can be used to complement other measures (see [[Multi-Objective Modeling]]) with some good results.  For example, as a cheaper alternative for crossvaliation with neural networks.  It will penalize models where they show unwanted &#039;bumps&#039; or &#039;ripples&#039; in the response.&lt;br /&gt;
&lt;br /&gt;
=== AIC ===&lt;br /&gt;
&lt;br /&gt;
Implements [http://en.wikipedia.org/wiki/Akaike_information_criterion Akaikes Information Criterion].  Note that this requires a proper implementation of the freeParams of a Model.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Add_Sampling_Algorithm&amp;diff=5884</id>
		<title>Add Sampling Algorithm</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Add_Sampling_Algorithm&amp;diff=5884"/>
		<updated>2014-03-17T08:15:25Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;This wiki page is based on version 2014a of the SUMO Toolbox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The toolbox comes with a number of sample selection algorithms, both for experimental design (initial samples) and sequential design.  Of course you are free to add your own.&lt;br /&gt;
&lt;br /&gt;
You can govern how new samples are selected in a number of ways. The easiest method is by implementing your own sample selector class that derives from the SequentialDesign base class in src/matlab/sequentialDesigns.  Again, only two methods are needed:&lt;br /&gt;
&lt;br /&gt;
* a constructor for reading in the configuration extracted from the XML file. See other sample selectors for the structure of this configuration.&lt;br /&gt;
* a selectSamples.m file that, given the toolbox state, returns the next batch of samples.&lt;br /&gt;
&lt;br /&gt;
The toolbox state is a Matlab struct with the following fields:&lt;br /&gt;
* samples: the samples that were previously evaluated.&lt;br /&gt;
* values: the output that must be used to select new samples for.&lt;br /&gt;
* lastModels: the best models so far.&lt;br /&gt;
* numNewSamples: the amount of new samples that must be selected. This is based on environmental information such as the modeling time, the number of available computational nodes (cpu cores, grid nodes) and so on.&lt;br /&gt;
&lt;br /&gt;
The SUMO Toolbox contains an extensive framework for sampling, which makes it possible to combine your sampling algorithm in a number of ways with the existing algorithms. Below, a number of options are discussed. Note that these are optional, and it is also possible to write your own sample selector as mentioned above, without paying attention to the options below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= CombinedSequentialDesign =&lt;br /&gt;
&lt;br /&gt;
The combined sample selector can be used to have multiple different sample selectors sample the same output during one run of the toolbox. This can be useful if there are multiple criteria that you want to use together to select new samples. Different weights can be given to the sample selectors, so that each sample selector gets to sample a number of samples proportional to its weight. Sample code for combining 3 selectors with different weights can be found below.&lt;br /&gt;
&lt;br /&gt;
Note the &amp;lt;MergeCriterion&amp;gt; tag. This tag defines the criterion which is used to combine the selected samples from the different sample selectors in one set of new samples. The ClosenessThreshold merge criterion simply filters out samples that are too close to each other. This avoids the problem that two sample selectors might select new samples really close to each other, thus evaluating two (almost) identical samples. The code from this example can be copied to your own CombinedSequentialDesign as is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source xmlns:saxon=&amp;quot;http://icl.com/saxon&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Allows you combine multiple sequential design algorithms--&amp;gt;&lt;br /&gt;
&amp;lt;SequentialDesign id=&amp;quot;combo&amp;quot; type=&amp;quot;CombinedSequentialDesign&amp;quot; combineOutputs=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;!-- A highly adaptive sampling algorithm, error and density based --&amp;gt;&lt;br /&gt;
	&amp;lt;SequentialDesign id=&amp;quot;lola&amp;quot; type=&amp;quot;LOLASequentialDesign&amp;quot; combineOutputs=&amp;quot;false&amp;quot; weight=&amp;quot;0.5&amp;quot; /&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
	&amp;lt;!-- An adaptive sequential design algorithm (error based), driven by the evaluation of your model on a dense grid --&amp;gt;&lt;br /&gt;
	&amp;lt;SequentialDesign id=&amp;quot;error&amp;quot; type=&amp;quot;ErrorSequentialDesign&amp;quot; combineOutputs=&amp;quot;false&amp;quot; weight=&amp;quot;0.3&amp;quot; /&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
	&amp;lt;!--Each sampling iterations new samples are selected randomly--&amp;gt;&lt;br /&gt;
	&amp;lt;SequentialDesign id=&amp;quot;random&amp;quot; type=&amp;quot;RandomSequentialDesign&amp;quot; combineOutputs=&amp;quot;false&amp;quot; weight=&amp;quot;0.2&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!--Remove samples that are too close to each other--&amp;gt;&lt;br /&gt;
	&amp;lt;MergeCriterion type=&amp;quot;ClosenessThreshold&amp;quot;&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;!-- Closeness threshold, Double --&amp;gt;&lt;br /&gt;
		&amp;lt;Option key=&amp;quot;closenessThreshold&amp;quot; value=&amp;quot;0.2&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Set a % of the maximumSamples to randomly chosen --&amp;gt;&lt;br /&gt;
		&amp;lt;Option key=&amp;quot;randomPercentage&amp;quot; value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
		&amp;lt;Option key=&amp;quot;debug&amp;quot; value=&amp;quot;off&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/MergeCriterion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/SequentialDesign&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= PipelineSequentialDesign =&lt;br /&gt;
&lt;br /&gt;
The pipeline sequential design is an extensive sampling framework used by several of the predefined sample selectors. It splits the sampling process up into three separate tasks, which are executed one after each other, to come to a final set of sample locations. In this section, we will briefly discuss the three different steps in the pipeline process. Please look into the existing sequential designs (such as delaunay and error) for example implementations.&lt;br /&gt;
&lt;br /&gt;
== CandidateGenerator ==&lt;br /&gt;
&lt;br /&gt;
The candidate generator is responsible for generating an initial set of candidate new samples. Out of this set of candidates, eventually, a number of new samples will be picked. Examples of candidate generators are a grid, a set of random points, etc. To implement your own candidate generator, you need only make a function with the following declaration:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source xmlns:saxon=&amp;quot;http://icl.com/saxon&amp;quot; lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [state, candidates] = MyCandidateGenerator(state)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CandidateRanker ==&lt;br /&gt;
&lt;br /&gt;
All the candidates, generated by the candidate generator, are ranked by one or more candidate rankers. These rankers give a score (or ranking) to all the candidates. To make your own candidate ranker, you have to derive your class from the CandidateRanker base class. A minimal example candidate ranker is shown below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source xmlns:saxon=&amp;quot;http://icl.com/saxon&amp;quot; lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
classdef MyCandidateRanker &amp;lt; CandidateRanker&lt;br /&gt;
	methods (Access = public)&lt;br /&gt;
		&lt;br /&gt;
		function this = MyCandidateRanker(config)&lt;br /&gt;
			this = this@CandidateRanker(config);&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		function ranking = scoreCandidates(this, candidates, state)&lt;br /&gt;
			ranking = rand(size(candidates,1), 1);&lt;br /&gt;
		end&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MergeCriterion ==&lt;br /&gt;
&lt;br /&gt;
Finally, all the rankings provided by the different candidate rankers, are used to select the final set of new samples out of the candidate samples. The merge criterion has the task of somehow combining the different rankings, and using these rankings to select the most appropriate candidates. In addition to a set of new samples, the merge criterion also has to assign priority values to each sample. These priorities (high value means high priority) are used to determine in which order the samples are evaluated. A minimal example merge criterion is shown below.&lt;br /&gt;
&amp;lt;source xmlns:saxon=&amp;quot;http://icl.com/saxon&amp;quot; lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
classdef MyMergeCriterion &amp;lt; MergeCriterion&lt;br /&gt;
	&lt;br /&gt;
	methods (Access = public)&lt;br /&gt;
		&lt;br /&gt;
		&lt;br /&gt;
		function [this] = MyMergeCriterion()&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		function [this, newSamples, priorities] = selectSamples(this, candidates, rankings, state)&lt;br /&gt;
&lt;br /&gt;
			newSamples = candidates(1:state.numNewSamples, :);&lt;br /&gt;
			priorities = rand(state.numNewSamples,1);&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Multi-Objective_Modeling&amp;diff=5883</id>
		<title>Multi-Objective Modeling</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Multi-Objective_Modeling&amp;diff=5883"/>
		<updated>2014-03-17T08:06:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motivation ==&lt;br /&gt;
&lt;br /&gt;
Please first read [http://www.springerlink.com/content/24104526223221u3/ this paper] and the page about [[Measures]].&lt;br /&gt;
&lt;br /&gt;
Often it makes sense to use multiple measures.  For example you may be interested in minimizing the average relative error AND the maximum absolute error.  Alternatively you may have a problem with multiple outputs (see [[Running#Models_with_multiple_outputs]]) and it may make sense to model them in a model them together in a multi-objective way.  This section is about those topics.  Note that everything works with or without sample selection.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note that we are talking about optimization of the model parameters (hyperparameter optimization), NOT optimization of the simulator!!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Using Multiple Measures ==&lt;br /&gt;
&lt;br /&gt;
To enable multiple measures simply specify multiple &amp;lt;Measure&amp;gt; tags in your configuration file and make sure the &#039;&#039;use&#039;&#039; attribute is set to &#039;&#039;on&#039;&#039;.  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type=&amp;quot;ValidationSet&amp;quot; errorFcn=&amp;quot;rootMeanSquareError&amp;quot; target=&amp;quot;.001&amp;quot; use=&amp;quot;on&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;Measure type=&amp;quot;LRMMeasure&amp;quot; target=&amp;quot;0&amp;quot; use=&amp;quot;on&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What the toolbox then does with this depends on some other settings.&lt;br /&gt;
&lt;br /&gt;
=== Selecting the best model ===&lt;br /&gt;
&lt;br /&gt;
The toolbox keeps track of the k best models found so far.  Each time a model is found that is better than the previous best model it will be processed (plotted, profiled, ...) and saved to disk.  If only one measure is active the best model is simply the model with lowest measure score.&lt;br /&gt;
However, when multiple measures are used, an intelligent pareto-based method is used to decide which model is the best choice. Models that score high on a particular measure but low on another are not discarded immediately, but are given a chance to set things right in future iterations of the toolbox. This encourages variety in the models, while still ensuring convergence to the optimal accuracy for each measure. An often used combination is CrossValidation with the MinMax measure, to ensure that no poles are present in the model domain when using rational models.&lt;br /&gt;
&lt;br /&gt;
=== Weighted Single Objective ===&lt;br /&gt;
&lt;br /&gt;
If you specify nothing else the toolbox will simply minimize the sum of both (= scalarization) and everything continues as normal.  However, if the scale of the measures differs greatly this might not be very fair.  Or, it might be that you consider one more important than the other.  In that case you can add weights as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure weight=&amp;quot;0.6&amp;quot; type=&amp;quot;ValidationSet&amp;quot; errorFcn=&amp;quot;rootMeanSquareError&amp;quot; target=&amp;quot;.001&amp;quot; use=&amp;quot;on&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;Measure weight=&amp;quot;0.4&amp;quot; type=&amp;quot;LRMMeasure&amp;quot; target=&amp;quot;0&amp;quot; use=&amp;quot;on&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the toolbox will generate models (by optimizing the model parameters) that minimize:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
0.6*(validation score) + 0.4*(LRM score)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So this gives you more fine grained control of the importance of each measure.  Note that weights are normalized since version 6.2.  If no weight is specified it defaults to 1.&lt;br /&gt;
&lt;br /&gt;
=== Multi-Objective ===&lt;br /&gt;
&lt;br /&gt;
Sometimes a weighting scheme is not enough and you want to do true multi-objective optimization (e.g., to see the trade-off between the measures).  In this case there is no longer a single best model but a set of models.  This set of models will be saved every k iterations of the multi-objective optimization routine.&lt;br /&gt;
&lt;br /&gt;
To enable multi-objective hyperparameter optimization there are two adaptive model builders you can use:&lt;br /&gt;
&lt;br /&gt;
# GeneticModelBuilder (e.g., anngenetic) : this uses the multi-objective version of the GA implemented in the [http://www.mathworks.com/products/gads/ Matlab GADS Toolbox].&lt;br /&gt;
# ParetoModelBuilder (e.g., krigingnsga) : this uses the standard NSGA-II algorithm (but other algorithms could be easily added).&lt;br /&gt;
&lt;br /&gt;
In both cases you must set the following option: &#039;&#039;paretoMode=&amp;quot;true&amp;quot;&#039;&#039; in the configuration of the ModelBuilder.&lt;br /&gt;
Note that when using the GeneticModelBuilder you should increase the population size and number of generations in order to get a good pareto front.&lt;br /&gt;
&lt;br /&gt;
If you want to plot the search trace of a multi-objective run you can use &#039;&#039;plotModelParetoFront&#039;&#039; function in the tools directory.  To extract the k-th Pareto front you can use the &#039;&#039;nonDominatedSort&#039;&#039; function.&lt;br /&gt;
&lt;br /&gt;
== Multi-output modeling ==&lt;br /&gt;
&lt;br /&gt;
Finally, it is also possible to generate models with multiple outputs in a multi-objective way.  In this case you would usually use only a single measure but have a simulator with more than one output.  You also have to set combineOutputs true (see [[Running#Models_with_multiple_outputs]]).&lt;br /&gt;
If you then use one of the mult-objective model builders the toolbox will attempt to find the Pareto front of models that score well on ouput 1 vs models that score well on output 2.  This gives information about the correlation between both outputs in the hyperparameter space.  The final models may also be used to generate diverse ensembles.&lt;br /&gt;
&lt;br /&gt;
Finally, when combined with the automatic model type selection algorithm this allows one to automatically select the best model type for each output without having to perform multiple runs.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Add_Modeling_Algorithm&amp;diff=5882</id>
		<title>Add Modeling Algorithm</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Add_Modeling_Algorithm&amp;diff=5882"/>
		<updated>2014-03-17T08:04:57Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Make sure you are familiar with [[OO Programming in Matlab]] before you attempt any of this.&lt;br /&gt;
&lt;br /&gt;
== Model vs Model Builder ==&lt;br /&gt;
It is important to first make the distinction between the model type and the model builder (= modeling algorithm or hyperparameter optimization algorithm). Please first read the [[Add Model Type]] page first.&lt;br /&gt;
&lt;br /&gt;
The toolbox comes with a number of modeling algorithms but others can be easily added.&lt;br /&gt;
&lt;br /&gt;
== Available Model Builders  ==&lt;br /&gt;
&lt;br /&gt;
A list of the available model builders can be found in the &amp;lt;code&amp;gt;src/matlab/modelbuilders&amp;lt;/code&amp;gt; subdirectory.  The most important are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;OptimizerModelBuilder&#039;&#039;&#039;: uses any algorithm that is implemented as part of the [[Optimizer]] hierarcy. A list of the optimizer configurations used in the default.xml can be found [[Config:Optimizer|here]].&lt;br /&gt;
* &#039;&#039;&#039;GeneticModelBuilder&#039;&#039;&#039;: a genetic algorithm is used to search the parameter space.  Given an initial population the algorithm uses crossover and mutation operators to search through the parameter space. (requires the [http://www.mathworks.com/products/gads/ Matlab Direct Search Toolbox (GADS) toolbox]).  Note that the GeneticModelBuilder has two possible population types: custom and doubleVector. Selecting doubleVector will pass the hyperparameters directly to the GADS toolbox. This allows you to use the mutation and crossover operators built-in the GADS toolbox. Using the custom option will pas the models itself to the GADS toolbox. This requires custom crossover and mutation operators for the model type you are using, which should be defined in the ModelFactory class for this model.&lt;br /&gt;
* &#039;&#039;&#039;ModelBuilder&#039;&#039;&#039;: this is the base class, this will build a single model each iteration according to the configuration set in the xml file.  Thus there is no optimization, but it allows for full manual control&lt;br /&gt;
* &#039;&#039;&#039;ParetoModelBuilder&#039;&#039;&#039;: uses the [[Multi-Objective Modeling| multi-objective NSGA-II algorithm]] to generate models multi-objectively&lt;br /&gt;
* &#039;&#039;&#039;EGOModelBuilder&#039;&#039;&#039;: uses an algorithm based on the [http://portal.acm.org/citation.cfm?id=596218 Efficient Global Optimization algorithm] to search for good model parameters.  Basically this uses a nested kriging model to predict where to find the most promising models&lt;br /&gt;
* &#039;&#039;&#039;RandomModelBuilder&#039;&#039;&#039;: this is solely useful as a baseline comparison, it simply generates models with random model parameters (within user specified bounds)&lt;br /&gt;
&lt;br /&gt;
== Adding a new model builder ==&lt;br /&gt;
&lt;br /&gt;
If you would like to add a new optimization algorithm for optimizing the model parameters, you usually will have to do nothing more than [[add a new optimizer]] class.  Then you can simply plug that optimizer into the OptimizerModelBuilder.  Use one of the existing optimizers as an example to guide you.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you prefer to write your own algorithm from scratch you just have to derive from ModelBuilder and provide the following methods:&lt;br /&gt;
&lt;br /&gt;
* a constructor that reads out the xml configuration and configures the modeling algorithm (MyModelBuilder.m)&lt;br /&gt;
* runLoop.m : this is the main loop of your algorithm, it gets the current available samples and builds new models according to your optimization algorithm&lt;br /&gt;
* the optimized models are passed to the rest of Toolbox via the &#039;&#039;DefaultFitnessFunction&#039;&#039;, which has to be called to in runLoop.m&lt;br /&gt;
&lt;br /&gt;
Once your algorithm is implemented you can then write the necessary factories for the model types you wish to use. See the [[Add Model Type]] page for more information.  Make sure you think hard about the interfacing with the different model factories. Try to keep the number of methods that model factories need to implement as small as possible.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=FAQ&amp;diff=5881</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=FAQ&amp;diff=5881"/>
		<updated>2014-03-17T08:04:25Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
=== What is a global surrogate model? ===&lt;br /&gt;
&lt;br /&gt;
A global [http://en.wikipedia.org/wiki/Surrogate_model surrogate model] is a mathematical model that mimics the behavior of a computationally expensive simulation code over &#039;&#039;&#039;the complete parameter space&#039;&#039;&#039; as accurately as possible, using as little data points as possible. So note that optimization is not the primary goal, although it can be done as a post-processing step. Global surrogate models are useful for:&lt;br /&gt;
&lt;br /&gt;
* design space exploration, to get a &#039;&#039;feel&#039;&#039; of how the different parameters behave&lt;br /&gt;
* sensitivity analysis&lt;br /&gt;
* &#039;&#039;what-if&#039;&#039; analysis&lt;br /&gt;
* prototyping&lt;br /&gt;
* visualization&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
In addition they are a cheap way to model large scale systems, multiple global surrogate models can be chained together in a model cascade.&lt;br /&gt;
&lt;br /&gt;
See also the [[About]] page.&lt;br /&gt;
&lt;br /&gt;
=== What about surrogate driven optimization? ===&lt;br /&gt;
&lt;br /&gt;
When coining the term &#039;&#039;&#039;surrogate driven optimization&#039;&#039;&#039; most people associate it with trust-region strategies and simple polynomial models. These frameworks first construct a local surrogate which is optimized to find an optimum. Afterwards, a move limit strategy decides how the local surrogate is scaled and/or moved through the input space. Subsequently the surrogate is rebuild and optimized. I.e. the surrogate zooms in to the global optimum. For instance the [http://www.cs.sandia.gov/DAKOTA/ DAKOTA] Toolbox implements such strategies where the surrogate construction is separated from optimization.&lt;br /&gt;
&lt;br /&gt;
Such a framework was earlier implemented in the SUMO Toolbox but was deprecated as it didn&#039;t fit the philosophy and design of the toolbox. &lt;br /&gt;
&lt;br /&gt;
Instead another, equally powerful, approach was taken. The current optimization framework is in fact a sampling selection strategy that balances local and global search. In other words, it balances between exploring the input space and exploiting the information the surrogate gives us.&lt;br /&gt;
&lt;br /&gt;
A configuration example can be found [[Config:SampleSelector#expectedImprovement|here]].&lt;br /&gt;
&lt;br /&gt;
=== What is (adaptive) sampling? Why is it used? ===&lt;br /&gt;
&lt;br /&gt;
In classical Design of Experiments you need to specify the design of your experiment up-front. Or in other words, you have to say up-front how many data points you need and how they should be distributed.  Two examples are Central Composite Designs and Latin Hypercube designs.  However, if your data is expensive to generate (e.g., an expensive simulation code) it is not clear how many points are needed up-front.  Instead data points are selected adaptively, only a couple at a time.  This process of incrementally selecting new data points in regions that are the most interesting is called adaptive sampling, sequential design, or active learning.  Of course the sampling process needs to start from somewhere so the very first set of points is selected based on a fixed, classic experimental design.  See also [[Running#Understanding_the_control_flow]].&lt;br /&gt;
SUMO provides a number of different sampling algorithms: [[Config:SequentialDesign|SequentialDesign]]&lt;br /&gt;
&lt;br /&gt;
Of course sometimes you dont want to do sampling.  For example if you have a fixed dataset you just want to load all the data in one go and model that.  For how to do this see [[FAQ#How_do_I_turn_off_adaptive_sampling_.28run_the_toolbox_for_a_fixed_set_of_samples.29.3F]].&lt;br /&gt;
&lt;br /&gt;
=== What about dynamical, time dependent data? ===&lt;br /&gt;
&lt;br /&gt;
The original design and purpose was to tackle static input-output systems, where there is no memory. Just a complex mapping that must be learnt and approximated. Of course you can take a fixed time interval and apply the toolbox but that typically is not a desired solution.  Usually you are interested in time series prediction, e.g., given a set of output values from time t=0 to t=k, predict what happens at time t=k+1,k+2,...&lt;br /&gt;
&lt;br /&gt;
The toolbox was originally not intended for this purpose.  However, it is quite easy to add support for recurrent models.  Automatic generation of dynamical models would involve adding a new model type (just like you would add a new regression technique) or require adapting an existing one.  For example it would not be too much work to adapt the ANN or SVM models to support dynamic problems.  The only extra work besides that would be to add a new [[Measures|Measure]] that can evaluate the fidelity of the models&#039; prediction.&lt;br /&gt;
&lt;br /&gt;
Naturally though, you would be unable to use sample selection (since it makes no sense in those problems).  Unless of course there is a specialized need for it.  In that case you would add a new [[Config:SequentialDesign|SequentialDesign]].&lt;br /&gt;
&lt;br /&gt;
For more information on this topic [[Contact]] us.&lt;br /&gt;
&lt;br /&gt;
=== What about classification problems? ===&lt;br /&gt;
&lt;br /&gt;
The main focus of the SUMO Toolbox is on regression/function approximation.  However, the framework for hyperparameter optimization, model selection, etc.  can also be used for classification.  Starting from version 6.3 a demo file is included in the distribution that shows how this works on the well known two spiral test problem. It is possible to specify a run as a classification problem by setting the &#039;classificationMode&#039; and &#039;numberOfClasses&#039; option in ContextConfig in the configuration file. Classification models from WEKA are also available in SUMO. Please refer to the default configuration file for the explanation on usage of WEKA model types available through SUMO. The LOLA-Voronoi sample selection scheme also supports classification, and its usage is documented in the default configuration file as well.&lt;br /&gt;
&lt;br /&gt;
=== Does SUMO support discrete inputs/outputs ===&lt;br /&gt;
&lt;br /&gt;
Not, if you mean in a smart way.  There is a way to flag an input/output as discrete but it is not used anywhere.  It is on the wishlist but we have not been able to get to it yet.  Discrete inputs are just handled as if they were continuous.  Depending on how many levels there are and if there is an ordering this may work ok or not work at all.  You could of course add your own model type that can handle these :)  As for discrete outputs see [[FAQ#What_about_classification_problems.3F]].&lt;br /&gt;
&lt;br /&gt;
=== Can the toolbox drive my simulation code directly? ===&lt;br /&gt;
&lt;br /&gt;
Yes it can.  See the [[Interfacing with the toolbox]] page.&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between the M3-Toolbox and the SUMO-Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
The SUMO toolbox is a complete, feature-full framework for automatically generating approximation models and performing adaptive sampling. In contrast, the M3-Toolbox was more of a proof-of-principle.&lt;br /&gt;
&lt;br /&gt;
=== What happened to the M3-Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
The M3 Toolbox project has been discontinued (Fall 2007) and superseded by the SUMO Toolbox. Please contact tom.dhaene@ugent.be for any inquiries and requests about the M3 Toolbox.&lt;br /&gt;
&lt;br /&gt;
=== How can I stay up to date with the latest news? ===&lt;br /&gt;
&lt;br /&gt;
To stay up to date with the latest news and releases, we also recommend subscribing to our newsletter [http://www.sumo.intec.ugent.be here].  Traffic will be kept to a minimum (1 message every 2-3 months) and you can unsubscribe at any time.&lt;br /&gt;
&lt;br /&gt;
You can also follow our blog: [http://sumolab.blogspot.com/ http://sumolab.blogspot.com/].&lt;br /&gt;
&lt;br /&gt;
=== What is the roadmap for the future? ===&lt;br /&gt;
&lt;br /&gt;
There is no explicit roadmap since much depends on where our research leads us, what feedback we get, which problems we are working on, etc.  However, to get an idea of features to come you can always check the [[Whats new]] page.&lt;br /&gt;
&lt;br /&gt;
You can also follow our blog: [http://sumolab.blogspot.com/ http://sumolab.blogspot.com/].&lt;br /&gt;
&lt;br /&gt;
=== Will there be an R/Scilab/Octave/Sage/.. version? ===&lt;br /&gt;
&lt;br /&gt;
At the start of the project we considered moving from Matlab to one of the available open source alternatives.  However, after much discussion we decided against this for several reasons, including:&lt;br /&gt;
&lt;br /&gt;
* Existing experience and know-how of the development team&lt;br /&gt;
* The widespread use of the Matlab platform in the target application domains&lt;br /&gt;
* The quality and amount of available Matlab documentation&lt;br /&gt;
* The quality and number of Matlab toolboxes&lt;br /&gt;
* Support for object orientation (inheritance, polymorphism, etc.)&lt;br /&gt;
* Many well documented interfacing options (especially the seamless integration with Java)&lt;br /&gt;
&lt;br /&gt;
Matlab, as a proprietary platform, definitely has its problems and deficiencies but the number of advanced algorithms and available toolboxes make it a very attractive platform.  Equally important is the fact that every function is properly documented, tested, and includes examples, tutorials, and in some cases GUI tools.  A lot of things would have been a lot harder and/or time consuming to implement on one of the other platforms.  Add to that the fact that many engineers (particularly in aerospace) already use Matlab quite heavily.  Thus given our situation, goals, and resources at the time, Matlab was the best choice for us.  &lt;br /&gt;
&lt;br /&gt;
The other platforms remain on our radar however, and we do look into them from time to time.  Though, with our limited resources porting to one of those platforms is not (yet) cost effective.&lt;br /&gt;
&lt;br /&gt;
=== What are collaboration options? ===&lt;br /&gt;
&lt;br /&gt;
We will gladly help out with any SUMO-Toolbox related questions or problems. However, since we are a university research group the most interesting goal for us is to work towards some joint publication (e.g., we can help with the modeling of your problem).  Alternatively, it is always nice if we could use your data/problem (fully referenced and/or anonymized if necessary of course) as an example application during a conference presentation or in a PhD thesis.&lt;br /&gt;
&lt;br /&gt;
The most interesting case is if your problem involves sample selection and modeling.  This means you have some simulation code or script to drive and you want an accurate model while minimizing the number of data points.  In this case, in order for us to optimally help you it would be easiest if we could run your simulation code (or script) locally or access it remotely.  Else its difficult to give good recommendations about what settings to use.&lt;br /&gt;
&lt;br /&gt;
If this is not possible (e.g., expensive, proprietary or secret modeling code) or if your problem does not involve sample selection, you can send us a fixed data set that is representative of your problem. Again, this may be fully anonymized and will be kept confidential of course.&lt;br /&gt;
&lt;br /&gt;
In either case (code or dataset) remember:&lt;br /&gt;
&lt;br /&gt;
* the data file should be an ASCII file in column format (each row containing one data point) (see also [[Interfacing_with_the_toolbox]])&lt;br /&gt;
* include a short description of your data:&lt;br /&gt;
** number of inputs and number of outputs&lt;br /&gt;
** the range of each input (or scaled to [-1 1] if you do not wish to disclose this)&lt;br /&gt;
** if the outputs are real or complex valued&lt;br /&gt;
** how noisy the data is or if it is completely deterministic (computer simulation) (please also see: [[FAQ#My_data_contains_noise_can_the_SUMO-Toolbox_help_me.3F]]).&lt;br /&gt;
** if possible the expected range of each output (or scaled if you do not wish to disclose this)&lt;br /&gt;
** if possible the names of each input/output + a short description of what they mean&lt;br /&gt;
** any further insight you have about the data, expected behavior, expected importance of each input, etc.&lt;br /&gt;
&lt;br /&gt;
If you have any further questions or comments related to this please [[Contact]] us.&lt;br /&gt;
&lt;br /&gt;
=== Can you help me model my problem? ===&lt;br /&gt;
&lt;br /&gt;
Please see the previous question: [[FAQ#What_are_collaboration_options.3F]]&lt;br /&gt;
&lt;br /&gt;
== Installation and Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== What is the relationship between Matlab and Java? ===&lt;br /&gt;
&lt;br /&gt;
Many people do not know this, but your Matlab installation automatically includes a Java virtual machine.  By default, Matlab seamlessly integrates with Java, allowing you to create Java objects from the command line (e.g., &#039;s = java.lang.String&#039;).  It is possible to disable java support but in order to use the SUMO Toolbox it should not be.  To check if Java is enabled you can use the &#039;usejava&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== What is Java, why do I need it, do I have to install it, etc. ? ===&lt;br /&gt;
&lt;br /&gt;
The short answer is: no, dont worry about it.  The long answer is: Some of the code of the SUMO Toolbox is written in [http://en.wikipedia.org/wiki/Java_(programming_language) Java], since it makes a lot more sense in many situations and is a proper programming language instead of a scripting language like Matlab.  Since Matlab automatically includes a JVM to run Java code there is nothing you need to do or worry about (see the previous FAQ entry).  Unless its not working of course, in that case see [[FAQ#When_running_the_toolbox_you_get_something_like_.27.3F.3F.3F_Undefined_variable_.22ibbt.22_or_class_.22ibbt.sumo.config.ContextConfig.setRootDirectory.22.27]].&lt;br /&gt;
&lt;br /&gt;
=== What is XML? ===&lt;br /&gt;
&lt;br /&gt;
XML stands for eXtensible Markup Language and is related to HTML (= the stuff web pages are written in).  The first thing you have to understand is that &#039;&#039;&#039;does not do anything&#039;&#039;&#039;. Honest. Many engineers are not used to it and think it is some complicated computer programming language-stuff-thingy.  This is of course not the case (we ignore some of the fancy stuff you can do with it for now).  XML is a markup language meaning, it provides some rules how you can annotate or structure existing text.&lt;br /&gt;
&lt;br /&gt;
The way SUMO uses XML is really simple and there is not much to understand (for more information on how SUMO uses XML go this  [[Config:ToolboxConfiguration#Interpreting_the_configuration_file|page]]). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First some simple terminology.  Take the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Foo attr=&amp;quot;bar&amp;quot;&amp;gt;bla bla bla&amp;lt;/Foo&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here we have &#039;&#039;&#039;a tag&#039;&#039;&#039; called &#039;&#039;Foo&#039;&#039; containing text &#039;&#039;bla bla bla&#039;&#039;.  The tag Foo also has an &#039;&#039;&#039;attribute&#039;&#039;&#039; &#039;&#039;attr&#039;&#039; with value &#039;&#039;bar&#039;&#039;.  &#039;&amp;lt;Foo&amp;gt;&#039; is what we call the &#039;&#039;&#039;opening tag&#039;&#039;&#039;, and &#039;&amp;lt;/Foo&amp;gt;&#039; is the &#039;&#039;&#039;closing tag&#039;&#039;&#039;.  Each time you open a tag you must close it again.  How you name the tags or attributes it totally up to you, you choose :)&lt;br /&gt;
&lt;br /&gt;
Lets take a more interesting example.  Here we have used XML to represent information about a receipe for pancakes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;recipe category=&amp;quot;dessert&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;Pancakes&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;sumo@intec.ugent.be&amp;lt;/author&amp;gt;&lt;br /&gt;
  &amp;lt;date&amp;gt;Wed, 14 Jun 95&amp;lt;/date&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
    Good old fashioned pancakes.&lt;br /&gt;
  &amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;ingredients&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
        &amp;lt;amount&amp;gt;3&amp;lt;/amount&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;eggs&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
         &amp;lt;amount&amp;gt;0.5 tablespoon&amp;lt;/amount&amp;gt;&lt;br /&gt;
         &amp;lt;type&amp;gt;salt&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
  &amp;lt;/ingredients&amp;gt;&lt;br /&gt;
  &amp;lt;preparation&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/preparation&amp;gt;&lt;br /&gt;
 &amp;lt;/recipe&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So basically, you see that XML is just a way to structure, order, and group information.  Thats it!  So SUMO basically uses it to store and structure configuration options.  And this works well due to the nice hierarchical nature of XML.&lt;br /&gt;
&lt;br /&gt;
If you understand this there is nothing else to it in order to be able to understand the SUMO configuration files.  If you need more information see the tutorial here: [http://www.w3schools.com/XML/xml_whatis.asp http://www.w3schools.com/XML/xml_whatis.asp].  You can also have a look at the wikipedia page here: [http://en.wikipedia.org/wiki/XML http://en.wikipedia.org/wiki/XML]&lt;br /&gt;
&lt;br /&gt;
=== Why does SUMO use XML? ===&lt;br /&gt;
&lt;br /&gt;
XML is the de facto standard way of structuring information. This ranges from spreadsheet files (Microsoft Excel for example), to configuration data, to scientific data, ...  There are even whole database systems based solely on XML.  So basically, its an intuitive way to structure data and it is used everywhere.  This makes that there are a very large number of libraries and programming languages available that can parse, and handle XML easily.  That means less work for the programmer.  Then of course there is stuff like XSLT, XQuery, etc that makes life even easier.&lt;br /&gt;
So basically, it would not make sense for SUMO to use any other format :). For more information on how SUMO uses XML go this [[Config:ToolboxConfiguration#Interpreting_the_configuration_file|page]].&lt;br /&gt;
&lt;br /&gt;
=== I get an error that SUMO is not yet activated ===&lt;br /&gt;
&lt;br /&gt;
Make sure you installed the activation file that was mailed to you as is explained in the [[Installation]] instructions.  Also double check your system meets the [[System requirements]] and that [http://www.sumowiki.intec.ugent.be/index.php/FAQ#When_running_the_toolbox_you_get_something_like_.27.3F.3F.3F_Undefined_variable_.22ibbt.22_or_class_.22ibbt.sumo.config.ContextConfig.setRootDirectory.22.27|java java is enabled].  To fully verify that the activation file installation is correct ensure that the file ContextConfig.class is present in the directory &#039;&#039;&amp;lt;SUMO installation directory&amp;gt;/bin/java/ibbt/sumo/config&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Please note that more flexible research licenses are available if it is possible to [[FAQ#What_are_collaboration_options.3F|collaborate in any way]].&lt;br /&gt;
&lt;br /&gt;
== Upgrading ==&lt;br /&gt;
&lt;br /&gt;
=== How do I upgrade to a newer version? ===&lt;br /&gt;
&lt;br /&gt;
Delete your old &amp;lt;code&amp;gt;&amp;lt;SUMO-Toolbox-directory&amp;gt;&amp;lt;/code&amp;gt; completely and replace it by the new one.  Install the new activation file / extension pack as  before (see [[Installation]]), start Matlab and make sure the default run works.  To port your old configuration files to the new version: make a copy of default.xml (from the new version) and copy over your custom changes (from the old version) one by one.  This should prevent any weirdness if the XML structure has changed between releases.&lt;br /&gt;
&lt;br /&gt;
If you had a valid activation file for the previous version, just [[Contact]] us (giving your SUMOlab website username) and we will send you a new activation file.  Note that to update an activation file you must first unzip a copy of the toolbox to a new directory and install the activation file as if it was the very first time.  Upgrading of an activation file without performing a new toolbox install is (unfortunately) not (yet) supported.&lt;br /&gt;
&lt;br /&gt;
== Using ==&lt;br /&gt;
&lt;br /&gt;
=== I have no idea how to use the toolbox, what should I do? ===&lt;br /&gt;
&lt;br /&gt;
See: [[Running#Getting_started]]&lt;br /&gt;
&lt;br /&gt;
=== I want to try one of the different examples ===&lt;br /&gt;
&lt;br /&gt;
See [[Running#Running_different_examples]].&lt;br /&gt;
&lt;br /&gt;
=== I want to model my own problem ===&lt;br /&gt;
&lt;br /&gt;
See : [[Adding an example]].&lt;br /&gt;
&lt;br /&gt;
=== I want to contribute some data/patch/documentation/... ===&lt;br /&gt;
&lt;br /&gt;
See : [[Contributing]].&lt;br /&gt;
&lt;br /&gt;
=== How do I interface with the SUMO Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Interfacing with the toolbox]].&lt;br /&gt;
&lt;br /&gt;
=== What configuration options (model type, sample selection algorithm, ...) should I use for my problem? ===&lt;br /&gt;
&lt;br /&gt;
See [[General_guidelines]].&lt;br /&gt;
&lt;br /&gt;
=== Ok, I generated a model, what can I do with it? ===&lt;br /&gt;
&lt;br /&gt;
See: [[Using a model]].&lt;br /&gt;
&lt;br /&gt;
=== How can I share a model created by the SUMO Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Using a model#Model_portability| Model portability]].&lt;br /&gt;
&lt;br /&gt;
=== I dont like the final model generated by SUMO how do I improve it? ===&lt;br /&gt;
&lt;br /&gt;
Before you start the modeling you should really ask youself this question: &#039;&#039;What properties do I want to see in the final model?&#039;&#039;  You have to think about what for you constitutes a good model and what constitutes a poor model. Then you should rank those properties depending on how important you find them.  Examples are:&lt;br /&gt;
&lt;br /&gt;
* accuracy in the training data&lt;br /&gt;
** is it important that the error in the training data is exactly 0, or do you prefer some smoothing&lt;br /&gt;
* accuracy outside the training data&lt;br /&gt;
** this is the validation or test error, how important is proper generalization (usually this is very important)&lt;br /&gt;
* what does accuracy mean to you? a low maximum error, a low average error, both, ...&lt;br /&gt;
* smoothness&lt;br /&gt;
** should your model be perfectly smooth or is it acceptable that you have a few small ripples here and there for example&lt;br /&gt;
* are some regions of the response more important than others?&lt;br /&gt;
** for example you may want to be certain that the minima/maxima are captured very accurately but everything in between is less important&lt;br /&gt;
* are there particular special features that your model should have&lt;br /&gt;
** for example, capture underlying poles or discontinuities correctly&lt;br /&gt;
* extrapolation capability&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
It is important to note that often these criteria may be conflicting.  The classical example is fitting noisy data: the lower your training error the higher your testing error.  A natural approach is to combine multiple criteria, see [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
Once you have decided on a set of requirements the question is then, can the SUMO-Toolbox produce a model that meets them? In SUMO model generation is driven by one or more [[Measures]].  So you should choose the combination of [[Measures]] that most closely match your requirements.  Of course we can not provide a Measure for every single property, but it is very straightforward to [[Add_Measure|add your own Measure]].&lt;br /&gt;
&lt;br /&gt;
Now, lets say you have chosen what you think are the best Measures but you are still not happy with the final model.  Reasons could be:&lt;br /&gt;
&lt;br /&gt;
* you need more modeling iterations or you need to build more models per iteration (see [[Running#Understanding_the_control_flow]]). This will result in a more extensive search of the model parameter space, but will take longer to run.&lt;br /&gt;
* you should switch to a different model parameter optimization algorithm (e.g., for example instead of the Pattern Search variant, try the Genetic Algorithm variant of your ModelBuilder.)&lt;br /&gt;
* the model type you are using is not ideally suited to your data&lt;br /&gt;
* there simply is not enough data, use a larger initial design or perform more sampling iterations to get more information per dimension&lt;br /&gt;
* maybe the sample distribution is causing troubles for your model (e.g., Kriging can have problems with clustered data).  In that case it could be worthwhile to choose a different sample selection algorithm.&lt;br /&gt;
* the range of your response variable is not ideal (for example, neural networks have trouble modeling data if the range of the outputs is very very small)&lt;br /&gt;
&lt;br /&gt;
You may also refer to the following [[General_guidelines]].  Finally, of course it may be that your problem is simply a very difficult one and does not approximate well.  But, still you should at least get something satisfactory.&lt;br /&gt;
&lt;br /&gt;
If you are having these kinds of problems, please [[Reporting_problems|let us know]] and we will gladly help out.&lt;br /&gt;
&lt;br /&gt;
=== My data contains noise can the SUMO-Toolbox help me? ===&lt;br /&gt;
&lt;br /&gt;
The original purpose of the SUMO-Toolbox was for it to be used in conjunction with computer simulations.  Since these are fully deterministic you do not have to worry about noise in the data and all the problems it causes.  However, the methods in the toolbox are general fitting methods that work on noisy data as well.  So yes, the toolbox can be used with noisy data, but you will just have to be more careful about how you apply the methods and how you perform model selection.  Its only when you use the toolbox with a noisy simulation engine that a few special  options may need to be set.  In that case [[Contact]] us for more information.&lt;br /&gt;
&lt;br /&gt;
Note though, that the toolbox is not a statistical package, if you have noisy data and you need noise estimation algorithms, kernel smoothing algorithms, etc.  you should look towards other tools.&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between a ModelBuilder and a ModelFactory? ===&lt;br /&gt;
&lt;br /&gt;
See [[Add Model Type]].&lt;br /&gt;
&lt;br /&gt;
=== Why are the Neural Networks so slow? ===&lt;br /&gt;
&lt;br /&gt;
The ANN models are an extremely powerful model type that give very good results in many problems.  However, they are quite slow to use.  There are some things you can do:&lt;br /&gt;
&lt;br /&gt;
* use trainlm or trainscg instead of the default training function trainbr.  trainbr gives very good, smooth results but is slower to use.  If results with trainlm are not good enough, try using msereg as a performance function.&lt;br /&gt;
* try setting the training goal (= the SSE to reach during training) to a small positive number (e.g., 1e-5) instead of 0.&lt;br /&gt;
* check that the output range of your problem is not very small.  If your response data lies between 10e-5 and 10e-9 for example it will be very hard for the neural net to learn it.  In that case rescale your data to a more sane range.&lt;br /&gt;
* switch from ANN to one of the other neural network modelers: fanngenetic or nanngenetic. These are a lot faster than the default backend based on the [http://www.mathworks.com/products/neuralnet/ Matlab Neural Network Toolbox].  However, the accuracy is usually not as good.&lt;br /&gt;
* If you are using [[Measures#CrossValidation| CrossValidation]] try to switch to a different measure since CrossValidation is very expensive to use. CrossValidation is used by default if you have not defined a [[Measures| measure]] yourself.  When using one of the neural network model types, try to use a different measure if you can.  For example, our tests have shown that minimizing the sum of [[Measures#SampleError| SampleError]] and [[Measures#LRMMeasure| LRMMeasure]] can give equal or even better results than CrossValidation, while being much cheaper (see [[Multi-Objective Modeling]] for how to combine multiple measures).  See also the comments in &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; for examples.&lt;br /&gt;
* Finally, as with any model type things will slow down if you have many dimensions or very large amounts of data.  If that is the case, try some dimensionality reduction or subsampling techniques.&lt;br /&gt;
&lt;br /&gt;
See also [[FAQ#How_can_I_make_the_toolbox_run_faster.3F]]&lt;br /&gt;
&lt;br /&gt;
=== How can I make the toolbox run faster? ===&lt;br /&gt;
&lt;br /&gt;
There are a number of things you can do to speed things up.  These are listed below.  Remember though that the main reason the toolbox may seem to be slow is due to the many models being built as part of the hyperparameter optimization.  Please make sure you fully understand the [[Running#Understanding_the_control_flow|control flow described here]] before trying more advanced options.&lt;br /&gt;
&lt;br /&gt;
* First of all check that your virus scanner is not interfering with Matlab. If McAfee or any other program wants to scan every file SUMO generates this really slows things down and your computer becomes unusable.&lt;br /&gt;
&lt;br /&gt;
* Turn off the plotting of models in [[Config:ContextConfig#PlotOptions| ContextConfig]], you can always generate plots from the saved mat files&lt;br /&gt;
&lt;br /&gt;
* This is an important one.  For most model builders there is an option &amp;quot;maxFunEals&amp;quot;, &amp;quot;maxIterations&amp;quot;, or equivalent.  Change this value to change the maximum number of models built between 2 sampling iterations.  The higher this number, the slower, but the better the models &#039;&#039;may&#039;&#039; be.  Equivalently, for the Genetic model builders reduce the population size and the number of generations.&lt;br /&gt;
&lt;br /&gt;
* If you are using [[Measures#CrossValidation]] see if you can avoid it and use one of the other measures or a combination of measures (see [[Multi-Objective Modeling]]&lt;br /&gt;
&lt;br /&gt;
* If you are using a very dense [[Measures#ValidationSet]] as your Measure, this means that every single model will be evaluated on that data set.  For some models like RBF, Kriging, SVM, this can slow things down.&lt;br /&gt;
&lt;br /&gt;
* Disable some, or even all of the [[Config:ContextConfig#Profiling| profilers]] or disable the output handlers that draw charts.  For example, you might use the following configuration for the profilers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Profiling&amp;gt;&lt;br /&gt;
	&amp;lt;Profiler name=&amp;quot;.*share.*|.*ensemble.*|.*Level.*&amp;quot; enabled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toImage&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toFile&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Profiler&amp;gt;&lt;br /&gt;
			&lt;br /&gt;
	&amp;lt;Profiler name=&amp;quot;.*&amp;quot; enabled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toFile&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Profiler&amp;gt;&lt;br /&gt;
&amp;lt;/Profiling&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;.*&amp;quot; means match any one or more characters ([http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html see here for the full list of supported wildcards]).  Thus in this example all the profilers that have &amp;quot;share&amp;quot;, &amp;quot;ensemble&amp;quot;, or &amp;quot;Level&amp;quot; in their name shoud be enabled and should be saved as a text file (toFile) AND as an image file (toImage).  All the other profilers should be saved just to file. The idea is to only save to image what you want as an image since image generation is expensive.  If you do this or switch off image generation completely you will see everything run much faster.&lt;br /&gt;
&lt;br /&gt;
* Decrease the logging granularity, a log level of FINE (the default is FINEST or ALL) is more then granular enough.  Setting it to FINE, INFO, or even WARNING should speed things up.&lt;br /&gt;
&lt;br /&gt;
* If you have a multi-core/multi-cpu machine:&lt;br /&gt;
** if you have the Matlab Parallel Computing Toolbox, try setting the parallelMode option to true in [[Config:ContextConfig]].  Now all model training occurs in parallel.  This may give unexpected errors in some cases so beware when using.&lt;br /&gt;
** if you are using a native executable or script as the sample evaluator set the threadCount variable in [[Config:SampleEvaluator#LocalSampleEvaluator| LocalSampleEvaluator]] equal to the number of cores/CPUs (only do this if it is ok to start multiple instances of your simulation script in parallel!)&lt;br /&gt;
&lt;br /&gt;
* Dont use the Min-Max measure, it can slow things down. See also [[FAQ#How_do_I_force_the_output_of_the_model_to_lie_in_a_certain_range]]&lt;br /&gt;
&lt;br /&gt;
* If you are using neural networks see [[FAQ#Why_are_the_Neural_Networks_so_slow.3F]]&lt;br /&gt;
&lt;br /&gt;
* If you are having problems with very slow or seemingly hanging runs:&lt;br /&gt;
** Do a run inside the [http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/matlab_env/f9-17018.html&amp;amp;http://www.google.be/search?client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;channel=s&amp;amp;hl=nl&amp;amp;q=matlab+profiler&amp;amp;meta=&amp;amp;btnG=Google+zoeken Matlab profiler] and see where most time is spent.&lt;br /&gt;
&lt;br /&gt;
** Monitor CPU and physical/virtual memory usage while the SUMO toolbox is running and see if you notice anything strange.  &lt;br /&gt;
&lt;br /&gt;
* Also note that by default Matlab only allocates about 117 MB memory space for the Java Virtual Machine. If you would like to increase this limit (which you should) please follow the instructions [http://www.mathworks.com/support/solutions/data/1-18I2C.html?solution=1-18I2C here]. See also the general memory instructions [http://www.mathworks.com/support/tech-notes/1100/1106.html here].&lt;br /&gt;
&lt;br /&gt;
To check if your SUMO run has hanged, monitor your log file (with the level set at least to FINE).  If you see no changes for about 30 minutes the toolbox will probably have stalled.  [[Reporting problems| report the problems here]].&lt;br /&gt;
&lt;br /&gt;
Such problems are hard to identify and fix so it is best to work towards a reproducible test case if you think you found a performance or scalability issue.&lt;br /&gt;
&lt;br /&gt;
=== How do I build models with more than one output ===&lt;br /&gt;
&lt;br /&gt;
Sometimes you have multiple responses that you want to model at once.  See [[Running#Models_with_multiple_outputs]]&lt;br /&gt;
&lt;br /&gt;
=== How do I turn off adaptive sampling (run the toolbox for a fixed set of samples)? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Adaptive Modeling Mode]].&lt;br /&gt;
&lt;br /&gt;
=== How do I change the error function (relative error, RMSE, ...)? ===&lt;br /&gt;
&lt;br /&gt;
The [[Measures| &amp;lt;Measure&amp;gt;]] tag specifies the algorithm to use to assign models a score, e.g., [[Measures#CrossValidation| CrossValidation]].  It is also possible to specify which &#039;&#039;&#039;error function&#039;&#039;&#039; to  use, in the measure.  The default error function is &#039;&amp;lt;code&amp;gt;rootRelativeSquareError&amp;lt;/code&amp;gt;&#039;.&lt;br /&gt;
&lt;br /&gt;
Say you want to use [[Measures#CrossValidation| CrossValidation]] with the maximum absolute error, then you would put:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type=&amp;quot;CrossValidation&amp;quot; target=&amp;quot;0.001&amp;quot; errorFcn=&amp;quot;maxAbsoluteError&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the other hand, if you wanted to use the [[Measures#ValidationSet| ValidationSet]] measure with a relative root-mean-square error you would put:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type=&amp;quot;ValidationSet&amp;quot; target=&amp;quot;0.001&amp;quot; errorFcn=&amp;quot;relativeRms&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default error function is &#039;&amp;lt;code&amp;gt;rootRelativeSquareError&amp;lt;/code&amp;gt;&#039;.  These error functions can be found in the &amp;lt;code&amp;gt;src/matlab/tools/errorFunctions&amp;lt;/code&amp;gt; directory.  You are free to modify them and add your own.  Remember that the choice of error function is very important! Make sure you think well about it.  Also see [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
=== How do I enable more profilers? ===&lt;br /&gt;
&lt;br /&gt;
Go to the [[Config:ContextConfig#Profiling| &amp;lt;Profiling&amp;gt;]] tag and put &amp;lt;code&amp;gt;&amp;quot;&amp;lt;nowiki&amp;gt;.*&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; as the regular expression.  See also the next question.&lt;br /&gt;
&lt;br /&gt;
=== What regular expressions can I use to filter profilers? ===&lt;br /&gt;
&lt;br /&gt;
See the syntax [http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html here].&lt;br /&gt;
&lt;br /&gt;
=== How can I ensure deterministic results? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Random state]].&lt;br /&gt;
&lt;br /&gt;
=== How do I get a simple closed-form model (symbolic expression)? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Using a model]].&lt;br /&gt;
&lt;br /&gt;
=== How do I enable the Heterogenous evolution to automatically select the best model type? ===&lt;br /&gt;
&lt;br /&gt;
Simply use the [[Config:AdaptiveModelBuilder#heterogenetic| heterogenetic modelbuilder]] as you would any other.&lt;br /&gt;
&lt;br /&gt;
=== What is the combineOutputs option? ===&lt;br /&gt;
&lt;br /&gt;
See [[Running#Models_with_multiple_outputs]]&lt;br /&gt;
&lt;br /&gt;
=== What error function should I use? ===&lt;br /&gt;
&lt;br /&gt;
The default error function is the Root Relative Square Error (RRSE).  On the other hand meanRelativeError may be more intuitive but in that case you have to be careful if you have function values close to zero since in that case the relative error explodes or even gives infinity.  You could also use one of the combined relative error functions (contain a +1 in the denominator to account for small values) but then you get something between a relative and absolute error (=&amp;gt; hard to interpret).&lt;br /&gt;
&lt;br /&gt;
So to be sure an absolute error seems the safest bet (like the RMSE), however in that case you have to come up with sensible accuracy targets and realize that you will build models that try to fit the regions of high absolute value better than the low ones.&lt;br /&gt;
&lt;br /&gt;
Picking an error function is a very tricky business and many people do not realize this.  Which one is best for you and what targets you use ultimately depends on your application and on what kind of model you want.  There is no general answer.&lt;br /&gt;
&lt;br /&gt;
A recommended read is [http://www.springerlink.com/content/24104526223221u3/ is this paper].  See also the page on [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
=== I just want to generate an initial design (no sampling, no modeling) ===&lt;br /&gt;
&lt;br /&gt;
Do a regular SUMO run, except set the &#039;maxModelingIterations&#039; in the SUMO tag to 0.  The resulting run will only generate (and evaluate) the initial design and save it to samples.txt in the output directory.&lt;br /&gt;
&lt;br /&gt;
=== How do I start a run with the samples of of a previous run, or with a custom initial design? ===&lt;br /&gt;
&lt;br /&gt;
Use a Dataset design component, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;InitialDesign type=&amp;quot;DatasetDesign&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;file&amp;quot; value=&amp;quot;/path/to/the/file/containing/the/points.txt&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/InitialDesign&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The points of a previous run can be found in the samples.txt file in the output directory of the run you want to continue.&lt;br /&gt;
&lt;br /&gt;
As a sidenote, remark you can start the toolbox with *data points* of a previous run, but not with the *models* of a previous run.&lt;br /&gt;
&lt;br /&gt;
=== What is a level plot? ===&lt;br /&gt;
&lt;br /&gt;
A level plot is a plot that shows how the error histogram changes as the best model improves. An example is:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:levelplot.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Level plots only work if you have a separate dataset (test set) that the model can be checked against.  See the comments in default.xml for how to enable level plots.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How do I force the output of the model to lie in a certain range ===&lt;br /&gt;
&lt;br /&gt;
See [[Measures#MinMax]].&lt;br /&gt;
&lt;br /&gt;
=== My problem is high dimensional and has a lot of input parameters (more than 10).  Can I use SUMO? ===&lt;br /&gt;
&lt;br /&gt;
That depends.  Remember that the main focus of SUMO is to generate accurate &#039;global&#039; models. If you want to do sampling the practical dimensionality is limited to around 6-8 (though it depends on the problem and how cheap the simulations are!).  Since the more dimensions the more space you need to fill.  At that point you need to see if you can extend the models with domain specific knowledge (to improve performance) or apply a dimensionality reduction method ([[FAQ#Can_the_toolbox_tell_me_which_are_the_most_important_inputs_.28.3D_variable_selection.29.3F|see the next question]]).  On the other hand, if you don&#039;t need to do sample selection but you have a fixed dataset which you want to model.  Then the performance on high dimensional data just depends on the model type.  For examples SVM type models are independent of the dimension and thus can always be applied.  Though things like feature selection are always recommended.&lt;br /&gt;
&lt;br /&gt;
=== Can the toolbox tell me which are the most important inputs (= variable selection)? ===&lt;br /&gt;
&lt;br /&gt;
When tackling high dimensional problems a crucial question is &amp;quot;Are all my input parameters relevant?&amp;quot;.  Normally domain knowledge would answer this question but this is not always straightforward. In those cases a whole set of algorithms exist for doing dimensionality reduction (= feature selection).  Support for some of these algorithms may eventually make it into the toolbox but are not currently implemented.  That is a whole PhD thesis on its own.  However, if a model type provides functions for input relevance determination the toolbox can leverage this.  For example, the LS-SVM model available in the toolbox supports Automatic Relevance Determination (ARD).  This means that if you use the SUMO Toolbox to generate an LS-SVM model, you can call the function &#039;&#039;ARD()&#039;&#039; on the model and it will give you a list of the inputs it thinks are most important.&lt;br /&gt;
&lt;br /&gt;
=== Should I use a Matlab script or a shell script for interfacing with my simulation code? ===&lt;br /&gt;
&lt;br /&gt;
When you want to link SUMO with an external simulation engine (ADS Momentum, SPECTRE, FEBIO, SWAT, ...) you need a [http://en.wikipedia.org/wiki/Shell_script shell script] (or executable) that can take the requested points from SUMO, setup the simulation engine (e.g., set necessary input files), calls the simulator for all the requested points, reads the output (e.g., one or more output files), and returns the results to SUMO (see [[Interfacing with the toolbox]]).&lt;br /&gt;
&lt;br /&gt;
Which one you choose (matlab script + [[Config:SampleEvaluator#matlab|Matlab Sample Evaluator]], or shell script/executable with [[Config:SampleEvaluator#local|Local Sample Evaluator]] is basically a matter of preference, take whatever is easiest for you.&lt;br /&gt;
&lt;br /&gt;
HOWEVER, there is one important consideration: Matlab does not support threads so this means that if you use a matlab script to interface with the simulation engine, simulations and modeling will happen sequentially, NOT in parallel.  This means the modeling code will sit around waiting, doing nothing, until the simulation(s) have finished.  If your simulation code takes a long time to run this is not very efficient.&lt;br /&gt;
&lt;br /&gt;
On the other hand, using a shell script/executable, does allow the modeling and simulation to occur in parallel (at least if you wrote your interface script in such a way that it can be run multiple times in parallel, i.e., no shared global directories or variables that can cause [http://en.wikipedia.org/wiki/Race_condition race conditions]).&lt;br /&gt;
&lt;br /&gt;
As a sidenote, note that if you already put work into a Matlab script, it is still possible to use a shell script, by writing a shell script that starts Matlab (using -nodisplay or -nojvm options), executes your script (using the -r option), and exits Matlab again.  Of course it is not very elegant and adds some overhead but depending on your situation it may be worth it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How can I look at the internal structure of a SUMO model ===&lt;br /&gt;
&lt;br /&gt;
See [[Using_a_model#Available_methods]].&lt;br /&gt;
&lt;br /&gt;
=== Is there any design documentation available? ===&lt;br /&gt;
&lt;br /&gt;
An in depth overview of the rationale and philosophy, including a treatment of the software architecture underlying the SUMO Toolbox is available in the form of a PhD dissertation.  A copy of this dissertation [http://www.sumo.intec.ugent.be/?q=system/files/2010_04_PhD_DirkGorissen.pdf is available here].&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== I have a problem and I want to report it ===&lt;br /&gt;
&lt;br /&gt;
See : [[Reporting problems]].&lt;br /&gt;
&lt;br /&gt;
===I am getting a java out of memory error, what happened?===&lt;br /&gt;
Datasets are loaded through java. This means that the java heap space is used for storing the data. If you try to load a huge dataset (&amp;gt; 50MB), you might experience problems with the maximum heap size. You can solve this by raising the heap size as described on the following webpage:&lt;br /&gt;
[http://www.mathworks.com/support/solutions/data/1-18I2C.html]&lt;br /&gt;
&lt;br /&gt;
=== I sometimes get flat models when using rational functions ===&lt;br /&gt;
&lt;br /&gt;
First make sure the model is indeed flat, and does not just appear so on the plot. You can verify this by looking at the output axis range and making sure it is within reasonable bounds. When there are poles in the model, the axis range is sometimes stretched to make it possible to plot the high values around the pole, causing the rest of the model to appear flat. If the model contains poles, refer to the next question for the solution.&lt;br /&gt;
&lt;br /&gt;
The [[Config:AdaptiveModelBuilder#rational| RationalModel]] tries to do a least squares fit, based on which monomials are allowed in numerator and denominator. We have experienced that some models just find a flat model as the best least squares fit. There are two causes for this:&lt;br /&gt;
&lt;br /&gt;
* The number of sample points is few, and the model parameters (as explained [[Model types explained#PolynomialModel|here]]) force the model to use only a very small set of degrees of freedom.  The solution in this case is to increase the minimum percentage bound in the RationalFactory section of your configuration file: change the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option to &amp;lt;code&amp;gt;&amp;quot;60,100&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;80,100&amp;quot;&amp;lt;/code&amp;gt;,  or even &amp;lt;code&amp;gt;&amp;quot;100,100&amp;quot;&amp;lt;/code&amp;gt;.  A setting of &amp;lt;code&amp;gt;&amp;quot;100,100&amp;quot;&amp;lt;/code&amp;gt; will force the polynomial models to always exactly interpolate.  However, note that this does not scale very well with the number of samples (to counter this you can set &amp;lt;code&amp;gt;&amp;quot;maxDegrees&amp;quot;&amp;lt;/code&amp;gt;). If, after increasing the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; you still get weird, spiky, models you simply need more samples or you should switch to a different model type.&lt;br /&gt;
* Another possibility is that given a set of monomial degrees, the flat function is just the best possible least squares fit. In that case you simply need to wait for more samples.&lt;br /&gt;
* The measure you are using is not accurately estimating the true error, try a different measure or error function.  Note that a maximum relative error is dangerous to use since a the 0-function (= a flat model) has a lower maximum relative error than a function which overshoots the true behavior in some places but is otherwise correct.&lt;br /&gt;
&lt;br /&gt;
=== When using rational functions I sometimes get &#039;spikes&#039; (poles) in my model ===&lt;br /&gt;
&lt;br /&gt;
When the denominator polynomial of a rational model has zeros inside the domain, the model will tend to infinity near these points. In most cases these models will only be recognized as being `the best&#039; for a short period of time. As more samples get selected these models get replaced by better ones and the spikes should disappear.&lt;br /&gt;
&lt;br /&gt;
So, it is possible that a rational model with &#039;spikes&#039; (caused by poles inside the domain) will be selected as best model. This may or may not be an issue, depending on what you want to use the model for. If it doesn&#039;t matter that the model is very inaccurate at one particular, small spot (near the pole), you can use the model with the pole and it should perform properly.&lt;br /&gt;
&lt;br /&gt;
However, if the model should have a reasonable error on the entire domain, several methods are available to reduce the chance of getting poles or remove the possibility altogether. The possible solutions are:&lt;br /&gt;
&lt;br /&gt;
* Simply wait for more data, usually spikes disappear (but not always).&lt;br /&gt;
* Lower the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option in the RationalFactory section of your configuration file.  For example, say you have 500 data points and if the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option is set to 100 percent it means the degrees of the polynomials in the rational function can go up to 500.  If you set the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option to 10, on the other hand, the maximum degree is set at 50 (= 10 percent of 500).  You can also use the &amp;lt;code&amp;gt;&amp;quot;maxDegrees&amp;quot;&amp;lt;/code&amp;gt; option to set an absolute bound.&lt;br /&gt;
* If you roughly know the output range your data should have, an easy way to eliminate poles is to use the [[Measures#MinMax| MinMax]] [[Measures| Measure]] together with your current measure ([[Measures#CrossValidation| CrossValidation]] by default).  This will cause models whose response falls outside the min-max bounds to be penalized extra, thus spikes should disappear.&lt;br /&gt;
* Use a different model type (RBF, ANN, SVM,...), as spikes are a typical problem of rational functions.&lt;br /&gt;
* Increase the population size if using the genetic version&lt;br /&gt;
* Try using the [[SampleSelector#RationalPoleSuppressionSampleSelector| RationalPoleSuppressionSampleSelector]], it was designed to get rid of this problem more quickly, but it only selects one sample at the time.&lt;br /&gt;
&lt;br /&gt;
However, these solutions may not still not suffice in some cases.  The underlying reason is that the order selection algorithm contains quite a lot of randomness, making it prone to over-fitting.  This issue is being worked on but will take some time.  Automatic order selection is not an easy problem&lt;br /&gt;
&lt;br /&gt;
=== There is no noise in my data yet the rational functions don&#039;t interpolate ===&lt;br /&gt;
&lt;br /&gt;
[[FAQ#I sometimes get flat models when using rational functions |see this question]].&lt;br /&gt;
&lt;br /&gt;
=== When loading a model from disk I get &amp;quot;Warning: Class &#039;:all:&#039; is an unknown object class.  Object &#039;model&#039; of this class has been converted to a structure.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You are trying to load a model file without the SUMO Toolbox in your Matlab path.  Make sure the toolbox is in your Matlab path. &lt;br /&gt;
&lt;br /&gt;
In short: Start Matlab, run &amp;lt;code&amp;gt;&amp;lt;SUMO-Toolbox-directory&amp;gt;/startup.m&amp;lt;/code&amp;gt; (to ensure the toolbox is in your path) and then try to load your model.&lt;br /&gt;
&lt;br /&gt;
=== When running the SUMO Toolbox you get an error like &amp;quot;No component with id &#039;annpso&#039; of type &#039;adaptive model builder&#039; found in config file.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This means you have specified to use a component with a certain id (in this case an ModelBuilder component with id &#039;annpso&#039;) but a component with that id does not exist further down in the configuration file (in this particular case &#039;annpso&#039; does not exist but &#039;anngenetic&#039; or &#039;ann&#039; does, as a quick search through the configuration file will show).  So make sure you only declare components which have a definition lower down.  So see which components are available, simply scroll down the configuration file and see which id&#039;s are specified.  Please also refer to the [[Toolbox configuration#Declarations and Definitions | Declarations and Definitions]] page.&lt;br /&gt;
&lt;br /&gt;
=== When using NANN models I sometimes get &amp;quot;Runtime error in matrix library, Choldc failed. Matrix not positive definite&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This is a problem in the mex implementation of the [http://www.iau.dtu.dk/research/control/nnsysid.html NNSYSID] toolbox.  Simply delete the mex files, the Matlab implementation will be used and this will not cause any problems.&lt;br /&gt;
&lt;br /&gt;
=== When using FANN models I sometimes get &amp;quot;Invalid MEX-file createFann.mexa64, libfann.so.2: cannot open shared object file: No such file or directory.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This means Matlab cannot find the [http://leenissen.dk/fann/ FANN] library itself to link to dynamically.  Make sure the FANN libraries (stored in src/matlab/contrib/fann/src/.libs/) are in your library path, e.g., on unix systems, make sure they are included in LD_LIBRARY_PATH.&lt;br /&gt;
&lt;br /&gt;
=== Undeﬁned function or method ’createFann’ for input arguments of type ’double’. ===&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#When_using_FANN_models_I_sometimes_get_.22Invalid_MEX-file_createFann.mexa64.2C_libfann.so.2:_cannot_open_shared_object_file:_No_such_file_or_directory..22]]&lt;br /&gt;
&lt;br /&gt;
=== When trying to use SVM models I get &#039;Error during fitness evaluation: Error using ==&amp;gt; svmtrain at 170, Group must be a vector&#039; ===&lt;br /&gt;
&lt;br /&gt;
You forgot to build the SVM mex files for your platform.  For windows they are pre-compiled for you, on other systems you have to compile them yourself with the makefile.&lt;br /&gt;
&lt;br /&gt;
=== When running the toolbox you get something like &#039;??? Undefined variable &amp;quot;ibbt&amp;quot; or class &amp;quot;ibbt.sumo.config.ContextConfig.setRootDirectory&amp;quot;&#039; ===&lt;br /&gt;
&lt;br /&gt;
First see [[FAQ#What_is_the_relationship_between_Matlab_and_Java.3F | this FAQ entry]].&lt;br /&gt;
&lt;br /&gt;
This means Matlab cannot find the needed Java classes.  This typically means that you forgot to run &#039;startup&#039; (to set the path correctly) before running the toolbox (using &#039;go&#039;).  So make sure you always run &#039;startup&#039; before running &#039;go&#039; and that both commands are always executed in the toolbox root directory.&lt;br /&gt;
&lt;br /&gt;
If you did run &#039;startup&#039; correctly and you are still getting an error, check that Java is properly enabled:&lt;br /&gt;
&lt;br /&gt;
# typing &#039;usejava jvm&#039; should return 1 &lt;br /&gt;
# typing &#039;s = java.lang.String&#039;, this should &#039;&#039;not&#039;&#039; give an error&lt;br /&gt;
# typing &#039;version(&#039;-java&#039;)&#039; should return at least version 1.5.0&lt;br /&gt;
&lt;br /&gt;
If (1) returns 0, then the jvm of your Matlab installation is not enabled.  Check your Matlab installation or startup parameters (did you start Matlab with -nojvm?)&lt;br /&gt;
If (2) fails but (1) is ok, there is a very weird problem, check the Matlab documentation.&lt;br /&gt;
If (3) returns a version before 1.5.0 you will have to upgrade Matlab to a newer version or force Matlab to use a custom, newer, jvm (See the Matlab docs for how to do this).&lt;br /&gt;
&lt;br /&gt;
=== You get errors related to &#039;&#039;gaoptimset&#039;&#039;,&#039;&#039;psoptimset&#039;&#039;,&#039;&#039;saoptimset&#039;&#039;,&#039;&#039;newff&#039;&#039; not being found or unknown ===&lt;br /&gt;
&lt;br /&gt;
You are trying to use a component of the SUMO toolbox that requires a Matlab toolbox that you do not have.  See the [[System requirements]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== After upgrading I get all kinds of weird errors or warnings when I run my XML files ===&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#How_do_I_upgrade_to_a_newer_version.3F]]&lt;br /&gt;
&lt;br /&gt;
=== I get a warning about duplicate samples being selected, why is this? ===&lt;br /&gt;
&lt;br /&gt;
Sometimes, in special circumstances, multiple sample selectors may select the same sample at the same time. Even though in most cases this is detected and avoided, it can still happen when multiple outputs are modelled in one run, and each output is sampled by a different sample selector. These sample selectors may then accidentally choose the same new sample location.&lt;br /&gt;
&lt;br /&gt;
=== I sometimes see the error of the best model go up, shouldn&#039;t it decrease monotonically? ===&lt;br /&gt;
&lt;br /&gt;
There is no short answer here, it depends on the situation.  Below &#039;single objective&#039; refers to the case where during the hyperparameter optimization (= the modeling iteration) combineOutputs=false, and there is only a single measure set to &#039;on&#039;.  The other cases are classified as &#039;multi objective&#039;.  See also [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Sampling off&#039;&#039;&#039;&lt;br /&gt;
## &#039;&#039;Single objective&#039;&#039;: the error should always decrease monotonically, you should never see it rise. If it does [[reporting problems|report it as a bug]]&lt;br /&gt;
## &#039;&#039;Multi objective&#039;&#039;: There is a very small chance the error can temporarily decrease but it should be safe to ignore.  In this case it is best to use a multi objective enabled modeling algorithm&lt;br /&gt;
# &#039;&#039;&#039;Sampling on&#039;&#039;&#039;&lt;br /&gt;
## &#039;&#039;Single objective&#039;&#039;: inside each modeling iteration the error should always monotonically decrease.  At each sampling iteration the best models are updated (to reflect the new data), thus there the best model score may increase, this is normal behavior(*).  It is possible that the error increases for a short while, but as more samples come in it should decrease again.  If this does not happen you are using a poor measure or poor hyperparameter optimization algorithm, or there is a problem with the modeling technique itself (e.g., clustering in the datapoints is causing numerical problems).&lt;br /&gt;
## &#039;&#039;Multi objective&#039;&#039;: Combination of 1.2 and 2.1.&lt;br /&gt;
&lt;br /&gt;
(*) This is normal if you are using a measure like cross validation that is less reliable on little data than on more data.  However, in some cases you may wish to override this behavior if you are using a measure that is independent of the number of samples the model is trained with (e.g., a dense, external validation set).  In this case you can force a monotonic decrease by setting the &#039;keepOldModels&#039; option in the SUMO tag to true.  Use with caution!&lt;br /&gt;
&lt;br /&gt;
=== At the end of a run I get Undefined variable &amp;quot;ibbt&amp;quot; or class &amp;quot;ibbt.sumo.util.JpegImagesToMovie.createMovie&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This is normal, the warning printed out before the error explains why:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[WARNING] jmf.jar not found in the java classpath, movie creation may not work! Did you install the SUMO extension pack? Alternatively you can install the java media framwork from java.sun.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By default, at the end of a run, the toolbox will try to generate a movie of all the intermediate model plots.  To do this it requires the extension pack to be installed (you can download it from the SUMO lab website).  So install the extension pack and you will no longer get the error.  Alternatively you can simply set the &amp;quot;createMovie&amp;quot; option in the &amp;lt;SUMO&amp;gt; tag to &amp;quot;false&amp;quot;.&lt;br /&gt;
So note that there is nothing to worry about, everything has run correctly, it is just the movie creation that is failing.&lt;br /&gt;
&lt;br /&gt;
=== On startup I get the error &amp;quot;java.io.IOException: Couldn&#039;t get lock for output/SUMO-Toolbox.%g.%u.log&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This error means that SUMO is unable to create the log file.  Check the output directory exists and has the correct permissions.  If  your output directory is on a shared (network) drive this could also cause problems.  Also make sure you are running the toolbox (calling &#039;go&#039;) from the toolbox root directory, and not in some toolbox sub directory! This is very important.&lt;br /&gt;
&lt;br /&gt;
If you still have problems you can override the default logfile name and location as follows:&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;FileHandler&amp;gt; tag inside the &amp;lt;Logging&amp;gt; tag add the following option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;Option key=&amp;quot;Pattern&amp;quot; value=&amp;quot;My_SUMO_Log_file.log&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This means that from now on the sumo log file will be saved as the file &amp;quot;My_SUMO_Log_file.log&amp;quot; in the SUMO root directory.  You can use any path you like.&lt;br /&gt;
For more information about this option see [http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/FileHandler.html the FileHandler Javadoc].&lt;br /&gt;
&lt;br /&gt;
=== The Toolbox crashes with &amp;quot;Too many open files&amp;quot; what should I do? ===&lt;br /&gt;
&lt;br /&gt;
This is a known bug, see [[Known_bugs#Version_6.1]].&lt;br /&gt;
&lt;br /&gt;
If this does not fix your problem then do the following:&lt;br /&gt;
&lt;br /&gt;
On Windows try increasing the limit in windows as dictated by the error message.  Also, when you get the error, use the fopen(&amp;quot;all&amp;quot;) command to see which files are open and send us the list of filenames.  Then we can maybe further help you debug the problem.  Even better would be to use the Process Explorer utility [http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx available here]. When you get the error, dont shut down Matlab but start Process explorer and see which SUMO-Toolbox related files are open.  If you then [[Reporting_problems|let us know]] we can further debug the problem.&lt;br /&gt;
&lt;br /&gt;
On Linux again don&#039;t shut down Matlab but:&lt;br /&gt;
&lt;br /&gt;
* open a new terminal window&lt;br /&gt;
* type:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsof &amp;gt; openFiles.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Then [[Contact|send us]] the following information:&lt;br /&gt;
** the file openFiles.txt &lt;br /&gt;
** the exact Linux distribution you are using (Red Hat 10, CentOS 5, SUSE 11, etc).&lt;br /&gt;
** the output of&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
uname -a ; df -T ; mount&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a temporary workaround you can try increasing the maximum number of open files ([http://www.linuxforums.org/forum/redhat-fedora-linux-help/64716-where-chnage-file-max-permanently.html see for example here]).  We are currently debugging this issue.&lt;br /&gt;
&lt;br /&gt;
In general: to be safe it is always best to do a SUMO run from a clean Matlab startup, especially if the run is important or may take a long time.&lt;br /&gt;
&lt;br /&gt;
=== When using the LS-SVM models I get lots of warnings: &amp;quot;make sure lssvmFILE.x (lssvmFILE.exe) is in the current directory, change now to MATLAB implementation...&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
The LS-SVMs have a C implementation and a Matlab implementation.  If you dont have the compiled mex files it will use the matlab implementation and give a warning.  But everything will work properly.  To get rid of the warnings, compile the mex files [[Installation#Windows|as described here]], this can be done very easily.  Or simply comment out the lines that produce the output in the lssvmlab directory in src/matlab/contrib.&lt;br /&gt;
&lt;br /&gt;
=== I get an error &amp;quot;Undefined function or method &#039;trainlssvm&#039; for input arguments of type &#039;cell&#039;&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You most likely forgot to [[Installation#Extension_pack|install the extension pack]].&lt;br /&gt;
&lt;br /&gt;
=== When running the SUMO-Toolbox under Linux, the [http://en.wikipedia.org/wiki/X_Window_System X server] suddenly restarts and I am logged out of my session ===&lt;br /&gt;
&lt;br /&gt;
Note that in Linux there is an explicit difference between the [http://en.wikipedia.org/wiki/Linux_kernel kernel] and the [http://en.wikipedia.org/wiki/X_Window_System X display server].  If the kernel crashes or panics your system completely freezes (you have to reset manually) or your computer does a full reboot.  Luckily this is very rare.  However, if you display server (X) crashes or restarts it means your operating system is still running fine, its just that you have to log in again since your graphical session has terminated.  The FAQ entry is only for the latter.  If you find your kernel is panicing or freezing, that is a more fundamental problem and you should contact your system admin.&lt;br /&gt;
&lt;br /&gt;
So what happens is that after a few seconds when the toolbox wants to plot the first model [http://en.wikipedia.org/wiki/X_Window_System X] crashes and you are suddenly presented with a login screen.  The problem is not due to SUMO but rather to the Matlab - Display server interaction.&lt;br /&gt;
&lt;br /&gt;
What you should first do is set plotModels to false in the [[Config:ContextConfig]] tag, run again and see if the problem occurs again.  If it does please [[Reporting_problems| report it]].  If the problem does not occur you can then try the following:&lt;br /&gt;
&lt;br /&gt;
* Log in as root (or use [http://en.wikipedia.org/wiki/Sudo sudo])&lt;br /&gt;
* Edit the following configuration file using a text editor (pico, nano, vi, kwrite, gedit,...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/etc/X11/xorg.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: the exact location of the xorg.conf file may vary on your system.&lt;br /&gt;
&lt;br /&gt;
* Look for the following line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  Load         &amp;quot;glx&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Comment it out by replacing it by:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#  Load         &amp;quot;glx&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then save the file, restart your X server (if you do not know how to do this simply reboot your computer)&lt;br /&gt;
* Log in again, and try running the toolbox (making sure plotModels is set to true again).  It should now work.  If it still does not please [[Reporting_problems| report it]].&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* this is just an empirical workaround, if you have a better idea please [[Contact|let us know]]&lt;br /&gt;
* if you wish to debug further yourself please check the Xorg log files and those in /var/log&lt;br /&gt;
* another possible workaround is to start matlab with the &amp;quot;-nodisplay&amp;quot; option.  That could work as well.&lt;br /&gt;
&lt;br /&gt;
=== I get the error &amp;quot;Failed to close Matlab pool cleanly, error is Too many output arguments&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This happens if you run the toolbox on Matlab version 2008a and you have the parallel computing toolbox installed.  You can simply ignore this error message, it does not cause any problems. If you want to use SUMO with the parallel computing toolbox you will need Matlab 2008b.&lt;br /&gt;
&lt;br /&gt;
=== The toolbox seems to keep on running forever, when or how will it stop? ===&lt;br /&gt;
&lt;br /&gt;
The toolbox will keep on generating models and selecting data until one of the termination criteria has been reached. It is up to &#039;&#039;you&#039;&#039; to choose these targets carefully, so how low the toolbox runs simply depends on what targets you choose.  Please see [[Running#Understanding_the_control_flow]].&lt;br /&gt;
&lt;br /&gt;
Of course choosing a-priori targets up front is not always easy and there is no real solution for this, except thinking well about what type of model you want (see [[FAQ#I_dont_like_the_final_model_generated_by_SUMO_how_do_I_improve_it.3F]]).  In doubt you can always use a small value (or 0) and then simply quit the running toolbox using Ctrl-C when you think its been enough.&lt;br /&gt;
&lt;br /&gt;
While one could implement fancy, automatic stopping algorithms, their actual benefit is questionable.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Observables&amp;diff=5880</id>
		<title>Observables</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Observables&amp;diff=5880"/>
		<updated>2014-03-17T08:03:25Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
This page explains the &#039;&#039;&#039;observables framework&#039;&#039;&#039;. It is designed to profile certain model parameter properties at certain timestamps during the adaptive modeling process. &lt;br /&gt;
&lt;br /&gt;
Example timestamps are:&lt;br /&gt;
* A new best model has been constructed&lt;br /&gt;
* A new model has been constructed for the sequential model builder&lt;br /&gt;
* A complete generation has been built for the genetic model builder&lt;br /&gt;
&lt;br /&gt;
The observables are currently split into two groups, observables on a &#039;&#039;&#039;model&#039;&#039;&#039;, and observables on a &#039;&#039;&#039;batch&#039;&#039;&#039; (or generation) of models. &lt;br /&gt;
&lt;br /&gt;
Examples of the first kind are:&lt;br /&gt;
* Weights, flags and percentage for rational models&lt;br /&gt;
* Kernel parameter (= spread) for a RBFNN model&lt;br /&gt;
Examples of the second kind are:&lt;br /&gt;
* Model parameters of the best model in a generation&lt;br /&gt;
* Spread (= largest/average/smallest value) of model parameters for a generation&lt;br /&gt;
* Distribution of different model types in a generation when using the heterogeneous model interface&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To accommodate this framework, a few key components have been implemented:&lt;br /&gt;
* The &amp;lt;code&amp;gt;getObservables()&amp;lt;/code&amp;gt; member function that each model interface should implement. This method returns a cell array of Observable objects.&lt;br /&gt;
* The &amp;lt;code&amp;gt;getBatchObservables()&amp;lt;/code&amp;gt; member function of &amp;lt;code&amp;gt;BatchInterface&amp;lt;/code&amp;gt; (superclass of &amp;lt;code&amp;gt;GeneticInterface&amp;lt;/code&amp;gt;). This method return a cell array of observable objects on a Batch/Generation of models.&lt;br /&gt;
* The methods &amp;lt;code&amp;gt;registerObserver()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;observe()&amp;lt;/code&amp;gt; of the &amp;lt;code&amp;gt;ModelBuilder&amp;lt;/code&amp;gt; base class.&lt;br /&gt;
&lt;br /&gt;
The sequel will elaborate on all different classes and components.&lt;br /&gt;
&lt;br /&gt;
== Observable ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;Observable&amp;lt;/code&amp;gt; class is just an `abstract&#039; base class corresponding to `a thing that can be observed&#039;. It has following methods:&lt;br /&gt;
* &amp;lt;code&amp;gt;Observable( (string) name, (string) description )&amp;lt;/code&amp;gt;. The constructor (doh)&lt;br /&gt;
* &amp;lt;code&amp;gt;(string) getName( void ) { return name; }&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;(string) getDescription( void ) { return description; }&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;(struct) getColumns( void )&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;(vector) process( (void*) object )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;getColumns()&amp;lt;/code&amp;gt; returns names and descriptions for the outputs of this observable. For example, suppose we work in input dimension 3: An Observable that extracts the weight parameters out of a rational model, returns names [weight1, weight2, weight3] and suitable descriptions.&lt;br /&gt;
The return type of &amp;lt;code&amp;gt;getColumns()&amp;lt;/code&amp;gt; is a struct array with 2 fields, &#039;&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&#039; and &#039;&amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;process()&amp;lt;/code&amp;gt; processes the object (e.g. a model) out of which something has to be extracted (e.g. the weights) and returns the extracted values. It is mandatory the length of the double vector returned matches the number of columns returned by &amp;lt;code&amp;gt;getColumns()&amp;lt;/code&amp;gt;. If it is impossible to extract the data from the model, &amp;lt;code&amp;gt;process()&amp;lt;/code&amp;gt; SHOULD return an empty vector []&lt;br /&gt;
&lt;br /&gt;
Things will become clearer as you read on!&lt;br /&gt;
&lt;br /&gt;
== SimpleObservable ==&lt;br /&gt;
&lt;br /&gt;
Most Observables are quite simple, e.g. they just extract a field from a model object. Therefore, we have the &amp;lt;code&amp;gt;SimpleObservable&amp;lt;/code&amp;gt; class, it has following methods:&lt;br /&gt;
* &amp;lt;code&amp;gt;SimpleObservable( name, description, classtype, functor [, numColumns] )&amp;lt;/code&amp;gt;. If &amp;lt;code&amp;gt;numColumns&amp;lt;/code&amp;gt; unspecified, use 1.&lt;br /&gt;
* &amp;lt;code&amp;gt;(struct) getColumns( void )&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;(vector) process( (void*) object )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;process()&amp;lt;/code&amp;gt; checks whether the object passed is of type &#039;&amp;lt;code&amp;gt;classtype&amp;lt;/code&amp;gt;&#039;. If not, it returns []. Else, it returns &#039;&amp;lt;code&amp;gt;feval( functor, object )&amp;lt;/code&amp;gt;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;getColumns()&amp;lt;/code&amp;gt; returns a struct array with names [name_1, ..., name_`numColumns&#039;] and suitable descriptions.&lt;br /&gt;
&lt;br /&gt;
As an example, following extract of &amp;lt;code&amp;gt;RationalInterface::getObservables()&amp;lt;/code&amp;gt; constructs an Observable which processes only RationalModels, and has as a functor an implicit function which extract the &amp;lt;code&amp;gt;config.parameters.weights&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
SimpleObservable( &lt;br /&gt;
  &#039;weight&#039;, ...&lt;br /&gt;
  &#039;The weight for a variable of a polynomial interpolant&#039;, ...&lt;br /&gt;
  &#039;PolynomialModel&#039;, ...&lt;br /&gt;
  @(x) extractField( x, &#039;config.parameters.weights&#039; ), ...&lt;br /&gt;
  s.dimension );&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ModelBuilder ==&lt;br /&gt;
&lt;br /&gt;
The Adaptive Model Builder provides two methods:&lt;br /&gt;
* &amp;lt;code&amp;gt;(ModelBuilder) registerObserver( (ModelBuilder) self, (string) tag, (string) x_name, (string) description, (Observable cell array) observables );&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;(ModelBuilder) observe( (ModelBuilderself, (string) tag, (double) x_value, (void*) object );&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The constructor of a xxxModelBuilder can register a new timestamp (tag) at which it wants to do profiling in the future. Example tags are:&lt;br /&gt;
* best (ModelBuilder) -&amp;gt; The model parameters for each new best model&lt;br /&gt;
* iteration (SequentialModelBuilder) -&amp;gt; The model parameters for each model built&lt;br /&gt;
* batch (BatchModelBuilder) -&amp;gt; Model parameters of the best model in each batch&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
`x_name&#039; is a string name for the x-axis of the plot. `description&#039; is a description of the plot. The last parameter of &amp;lt;code&amp;gt;registerObserver()&amp;lt;/code&amp;gt; is a list of [[Observables]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;observe()&amp;lt;/code&amp;gt; is called each time a new row has to be added to the profiler or when the last row has to be updated (the ModelBuilder keeps track of the last x_value&#039;s passed). A call to &amp;lt;code&amp;gt;observe()&amp;lt;/code&amp;gt; makes the ModelBuilder browse through its registered `tag&#039;s looking for all matches. For each match, and each Observable, the Observable is called on the `object&#039; parameter, and (if the observable returns data) its corresponding profiler gets updated.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Configuration&amp;diff=5870</id>
		<title>Configuration</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Configuration&amp;diff=5870"/>
		<updated>2014-03-12T15:19:15Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The full behavior of the SUMO Toolbox is configurable through 2 [[FAQ#What_is_XML.3F| XML]] files:&lt;br /&gt;
&lt;br /&gt;
* [[Toolbox configuration]] xml file: all the options related to the toolbox itself, which model types to use, how to score models, what sample selection strategy to use, etc.  All options related to the &#039;modeling&#039;.&lt;br /&gt;
** The [[Config:ToolboxConfiguration|default configuration]] can be used as a starting point to the several components of the toolbox. A tool is available called the [[Config:ToolboxConfigurationGUI|SUMO configuration editor]] that provides a GUI for editing the default configuration. It is advised for new users to use this tool to set up their experiment, as it avoids having to learn to work with the XML structure.&lt;br /&gt;
* [[Simulator configuration]] xml file: defines the interface with the [[simulator]], how many inputs, how many outputs, ranges, name of the executable or dataset, etc.  This file is found inside each project directory in the &amp;lt;code&amp;gt;examples/&amp;lt;/code&amp;gt; subdirectory.  If you want to add your own, please see [[Adding an example]].&lt;br /&gt;
&lt;br /&gt;
The Toolbox configuration file will contain the name of the simulator project to use (specified in the &amp;lt;code&amp;gt;&amp;lt;Simulator&amp;gt;&amp;lt;/code&amp;gt; tag). For information how to run different examples see [[Running#Running_different_examples|running different examples]].&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Useful_Links&amp;diff=5840</id>
		<title>Useful Links</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Useful_Links&amp;diff=5840"/>
		<updated>2014-02-26T18:01:01Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Conference links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Related publications ===&lt;br /&gt;
&lt;br /&gt;
See the [[Related publications]] page.&lt;br /&gt;
&lt;br /&gt;
=== Related projects ===&lt;br /&gt;
&lt;br /&gt;
A list of projects with similar ideas and scope.&lt;br /&gt;
* [http://www.cs.rtu.lv/jekabsons/regression.html] Matlab regression software&lt;br /&gt;
* [http://sites.google.com/site/gptips4matlab GTIPS] Matlab symbolic regression software using genetic programming&lt;br /&gt;
* [http://www.optiy.eu OptiY]&lt;br /&gt;
* [http://www.nutechsolutions.com/prod_cv_analytics.asp ClearVu Analytics]&lt;br /&gt;
* [https://sites.google.com/site/felipeacviana/ Surrogates Toolbox]: Another matlab surrogate modeling toolbox&lt;br /&gt;
* [http://www.evolved-analytics.com Evolved-Analytics]: DataModeler package.&lt;br /&gt;
* [http://www.muneda.com/ MunEDA]: MunEDA provides leading EDA software technology for analysis, modelling and optimization of yield and performance of analog, mixed-signal and digital designs.&lt;br /&gt;
* [http://www.lsoptsupport.com/faqs/setting-parameters-for-metamodel-based-optimization-strategies LS-OPT: Functionality similar to the SUMO-Toolbox in LS-OPT]&lt;br /&gt;
* [http://mucm.aston.ac.uk/MUCM/MUCMToolkit/index.php?page=MetaHomePage.html MUCH Toolkit]: A toolbox for sensitivity analysis using surrogate models&lt;br /&gt;
* [http://home.mit.bme.hu/~kollar/topics/fdident.html FDIDENT: frequency domain identification toolbox]&lt;br /&gt;
* [http://www.dmoz.org/Science/Math/Statistics/Software/Regression_and_Curve_Fitting/: Regression software on Open Directory]&lt;br /&gt;
* [http://www.infiniscale.com/ Infiniscale]: TechModeler, TechAnalyzer: automatic model generation tools for EM applications&lt;br /&gt;
* [http://www.vrand.com/visualDOC.html visualDOC]: VisualDOC, a design optimization tool&lt;br /&gt;
* [http://www.salford-systems.com/mars.php MARS]: A spline based modeling tool&lt;br /&gt;
* [http://www.phoenix-int.com/software/phx_modelcenter.php Modelcenter]: datamining and modeling tool&lt;br /&gt;
* [http://www.simulia.com/products/isight2.html iSIGHT]: datamining and modeling tool&lt;br /&gt;
* [http://www.tmpinc.com/datascape_overview.html Datascape]: datamining and modeling tool&lt;br /&gt;
* [http://www.friendship-systems.com/ Friendship systems]: Tools for modeling ship hulls parametrically and performing the modeling calculations (Equilibrium tool)&lt;br /&gt;
* [http://www.csse.monash.edu.au/%7Edavida/nimrod/nimrodg.htm Nimrod/G]: Execute parameter sweeps on the grid&lt;br /&gt;
* [http://www-sop.inria.fr/oasis/ProActive/ ProActive]: Java grid library &lt;br /&gt;
* [http://www.csse.monash.edu.au/%7Edavida/nimrod/nimrodo.htm Nimrod/O]: Grid-enabled optimization toolkit &lt;br /&gt;
* [http://www.ece.northwestern.edu/OTC/ NEOS]: Distributed optimization toolkit &lt;br /&gt;
* [http://software.sci.utah.edu/scirun.html SciRun]: Problem Solving Environment (PSE), for simulation, modeling, and visualization of scientific problems. &lt;br /&gt;
* [http://www.esteco.it/ ModeFRONTIER]: environment dedicated to the set up of design assessment chains and efficient investigation of the design space. &lt;br /&gt;
* [http://www.gridbus.org/ Gridbus]: metascheduler for the grid &lt;br /&gt;
* [http://icl.cs.utk.edu/netsolve/overview/ Gridsolve/Netsolve]: grid enabled scientific computation toolbox &lt;br /&gt;
* [http://www.dtreg.com/ DTREG]: a powerful statistical analysis program that generates classification and regression trees and Support Vector Machine models that can be used to predict parameter values. &lt;br /&gt;
* [http://www.soton.ac.uk/%7Epbn/MDO/ MDO]: A collection of MDO links &lt;br /&gt;
* [http://www.research.att.com/~njas/gosset/index.html GOSSET]: A general purpose program for designing experiments &lt;br /&gt;
* [http://www.cs.sandia.gov/DAKOTA/ DAKOTA]: Design Analysis Kit for Optimization and Terascale Applications&lt;br /&gt;
* [http://www.cs.cf.ac.uk/gridprojects/dipso/ DIPSO]: Wide-Area Distributed Problem Solving (DIPSO) &lt;br /&gt;
* [http://www.geodise.org GEODISE]: Grid Enabled Optimisation and Design Search for Engineering&lt;br /&gt;
* [http://www.fast.u-psud.fr/ezyfit/ EZfit] : Free curve fitting toolbox for matlab&lt;br /&gt;
* [http://www.ians.uni-stuttgart.de/spinterp/about.html SGIT] : A Sparse grid interpolation toolbox&lt;br /&gt;
* [http://www.csie.ntu.edu.tw/~yien/quickrbf/quickstart.php QuickRBF] : an RBF fitting library (native)&lt;br /&gt;
* [http://www.farfieldtechnology.com/products/toolbox/ FastRBF] : another RBF fitting library (matlab)&lt;br /&gt;
* [http://promethee.irsn.org PROMETHEE project: easy parametric modeling]&lt;br /&gt;
* [http://simlab.jrc.ec.europa.eu/ Sensitivity Analysis library]&lt;br /&gt;
* Gaussian Process Matlab code&lt;br /&gt;
** [http://www.gaussianprocess.org/gpml/code/matlab/doc/ Code] based on Rasmussen&#039;s book&lt;br /&gt;
** [http://www.cs.man.ac.uk/~neill/gp/ Gaussian Process Software]&lt;br /&gt;
** [http://www.ios.htwg-konstanz.de/joomla_mof/index.php?option=com_content&amp;amp;view=article&amp;amp;id=48:polyreg-polynomial-gaussian-process-regression&amp;amp;catid=36:code&amp;amp;Itemid=81 GP] using polynomial covariance functions&lt;br /&gt;
* [http://shark-project.sourceforge.net/ Shark Machine Learning Library - An open source machine learning bundle]&lt;br /&gt;
&lt;br /&gt;
=== Related labs ===&lt;br /&gt;
&lt;br /&gt;
A list of some of the labs/researchers with similar ideas and scope.&lt;br /&gt;
&lt;br /&gt;
* [http://aerospace.engin.umich.edu/index.html Department of Aerospace Engineering at the University of Michigan]&lt;br /&gt;
* [http://www.mae.ufl.edu/~mdo/ The Structural and Multidisciplinary Optimization Group at the University of Florida]&lt;br /&gt;
* [http://web.engr.oregonstate.edu/~tgd/ School of Electrical Engineering and Computer Science, Oregon State U]&lt;br /&gt;
* [http://www.soton.ac.uk/engineering/research/groups/ced.page  Southampton University Computational Engineering and Design Group]&lt;br /&gt;
* [http://edog.mne.psu.edu/  Engineering Design &amp;amp; Optimization Group (Penn state)]&lt;br /&gt;
* [http://nd.edu/~ame/ Aerospace and Mechanical Engineering] [http://www.gano.name/shawn/ Homepage]&lt;br /&gt;
* [http://shyylab.engin.umich.edu/research/design-optimization Computational Thermo-Fluids Group]&lt;br /&gt;
* [http://www.ensc.sfu.ca/~gwa5/index.htm Product Design and Optimization Laboratory (PDOL)]&lt;br /&gt;
* [http://www.cerfacs.fr/4-25708-Home.php Computational Fluid Dynamics (CFD) group at CERFACS]&lt;br /&gt;
* [http://webuser.uni-weimar.de/~roos1/ Dirk Roos]&lt;br /&gt;
* [http://www.cerfacs.fr/~duchaine/HTML/research.htm Florent Duchaine]&lt;br /&gt;
* http://www.nlr.nl/ National aerospace lab]&lt;br /&gt;
&lt;br /&gt;
=== Data sets - Simulation code ===&lt;br /&gt;
&lt;br /&gt;
A list of publicly available datasets and simulation codes, useful for testing.&lt;br /&gt;
&lt;br /&gt;
* [http://www.mat.univie.ac.at/~neum/stat.html Statistics links] : A nice collection of data fitting and analysis codes&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Classic_data_sets Wikipedia Classic Datasets]&lt;br /&gt;
* [http://www.uni-koeln.de/themen/Statistik/data/rousseeuw/ The ROUSSEEUW datasets]&lt;br /&gt;
* [ftp://ftp.sas.com/pub/neural/dojo/dojo.html Donoho-Johnstone Benchmarks] &lt;br /&gt;
* [http://people.scs.fsu.edu/~burkardt/datasets/datasets.html datasets]&lt;br /&gt;
* [http://www-syscom.univ-mlv.fr/~vignat/Signal/Space/index.html Spice like simulator for matlab]&lt;br /&gt;
* [http://www.itl.nist.gov/div898/strd/general/dataarchive.html Nist dataset archive]&lt;br /&gt;
* [http://homes.esat.kuleuven.be/~smc/daisy/daisydata.html Daisy datasets]&lt;br /&gt;
* [http://lib.stat.cmu.edu/datasets/ Statlib dataset archive]&lt;br /&gt;
* [http://www.iau.dtu.dk/nnbook/systems.html Datasets from the book &amp;quot;Neural networks for the modeling and control of dynamic systems.]&lt;br /&gt;
* [http://www.gpc.de/e_poses.html A simulation environment for production and transport, logistics and automation systems]&lt;br /&gt;
* [http://shumway.physics.asu.edu/codes.html Nanostructure Simulation and Modeling Programs]&lt;br /&gt;
* [http://pedsim.silmaril.org/ A Modular, Distributed Pedestrian Crowd Simulation System]&lt;br /&gt;
* [http://g95.sourceforge.net/g95_status.html Fortran simulation codes]&lt;br /&gt;
* [http://www.genie.ac.uk/ Grid ENabled Integrated Earth system model]&lt;br /&gt;
* [http://gcmd.nasa.gov/KeywordSearch/Home.do?Portal=GCMD&amp;amp;MetadataType=0 Nasa datasets]&lt;br /&gt;
* [http://funapp.cs.bilkent.edu.tr/DataSets/ Function approximation repository]&lt;br /&gt;
* [http://www.idsia.ch/~andrea/Andrea_Rizzoli_Home_Page/Sim_Tools.html A Collection of Modeling and Simulation Resources on the Internet]&lt;br /&gt;
* [http://www.grc.nasa.gov/WWW/K-12/freesoftware_page.htm Free simulation software from Nasa]&lt;br /&gt;
* [http://opensees.berkeley.edu/index.php Earthquake simulation]&lt;br /&gt;
* [http://www.pdl.cmu.edu/DiskSim/ Harddisk simulator]&lt;br /&gt;
* [http://spib.rice.edu/spib/mtn_top.html Mountain top radar data]&lt;br /&gt;
* [http://www.statsci.org/datasets.html Statsci dataset repository]&lt;br /&gt;
* [http://statwww.epfl.ch/davison/BMA/Data4BMA/ dataset repository]&lt;br /&gt;
* [http://astrostatistics.psu.edu/datasets/ dataset repository]&lt;br /&gt;
* [http://www.maths.uq.edu.au/CEToolBox/ problems from the Cross Entropy toolbox]&lt;br /&gt;
* [http://www.cs.waikato.ac.nz/~ml/weka/index_datasets.html Weka datasets]&lt;br /&gt;
* [http://www.ailab.si/orange/datasets.asp?Inst=on&amp;amp;Atts=on&amp;amp;Class=on&amp;amp;Values=on&amp;amp;Description=on&amp;amp;sort=Data+Set dataset repository]&lt;br /&gt;
* [http://www.itee.uq.edu.au/%7Emarcusg/msg.html Max Set of Gaussians Landscape Generator]&lt;br /&gt;
* [http://www.mathworks.fr/matlabcentral/fileexchange/loadAuthor.do?objectId=364966&amp;amp;objectType=author Collection of useful Matlab scripts by Thomas Abrahamsson ]&lt;br /&gt;
* [http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=10731&amp;amp;objectType=FILE# A Matlab toolbox for Linear Structural Dynamics Analysis]&lt;br /&gt;
* [http://webscripts.softpedia.com/script/Scientific-Engineering-Ruby/Controls-and-Systems-Modeling/StructDyn-32656.html Matlab simulators for control and systems modeling]&lt;br /&gt;
* [http://www.ae.uiuc.edu/m-selig/ads.html UIUC Airfoil Data Site]&lt;br /&gt;
* [http://public.ca.sandia.gov/TNF/abstract.html TNF workshop data archives]&lt;br /&gt;
* [http://www.gaussianprocess.org Code for kriging models]&lt;br /&gt;
* [http://www.comsol.be/ Comsol multiphysics] package&lt;br /&gt;
&lt;br /&gt;
=== Predefined functions ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.cs.cmu.edu/afs/cs/project/jair/pub/volume24/ortizboyer05a-html/node6.html Continuous benchmark problems]&lt;br /&gt;
* [http://www2.imm.dtu.dk/~km/Test_ex_forms/test_ex.html Optimization test functions]&lt;br /&gt;
* [http://www.geatbx.com/docu/fcnindex-01.html Optimization test functions]&lt;br /&gt;
* [http://www.ewh.ieee.org/soc/es/May2001/14/Begin.htm Optimization test functions]&lt;br /&gt;
* [http://www.it.lut.fi/ip/evo/functions/functions.html Optimization test functions]&lt;br /&gt;
* [http://www.cs.colostate.edu/~genitor/functions.html Optimization test functions]&lt;br /&gt;
* [http://www-optima.amp.i.kyoto-u.ac.jp/member/student/hedar/Hedar_files/TestGO_files/Page364.htm Optimization test functions]&lt;br /&gt;
* [http://www.it.lut.fi/ip/evo/functions/functions.html Functions with multiple global optima]&lt;br /&gt;
* [http://www.mat.univie.ac.at/~neum/glopt/moretest More test set]&lt;br /&gt;
* [http://www.mat.univie.ac.at/~neum/software/dixon.tar.gz Dixon-Szegö test set]&lt;br /&gt;
* [http://titan.princeton.edu/2010-10-11/TestProblems/ Handbook of Test Problems for local and global optimization]&lt;br /&gt;
&lt;br /&gt;
=== Optimization ===&lt;br /&gt;
&lt;br /&gt;
* [http://ab-initio.mit.edu/wiki/index.php/NLopt NLopt is a free/open-source library for nonlinear optimization]&lt;br /&gt;
* [http://www.tik.ee.ethz.ch/sop/pisa/ PISA optimization framework]&lt;br /&gt;
* [http://www.hvass-labs.org/projects/swarmops/ swarmOps]&lt;br /&gt;
* [http://www.icsi.berkeley.edu/~storn/code.html Differential Evolution]&lt;br /&gt;
* [http://control.ee.ethz.ch/~joloef/wiki/pmwiki.php YALMIP] High-level optimization problem solver, uses external solvers as backend&lt;br /&gt;
* [http://www.mat.univie.ac.at/~neum/glopt/software_g.html Global optimization software]&lt;br /&gt;
* [http://www.gerad.ca/NOMAD/Abramson/nomadm.html Mesh-Adaptive Direct Search (MADS) software in Matlab]&lt;br /&gt;
* [http://www-rocq.inria.fr/~gilbert/modulopt/modulopt.html Modulopt]: fortran implementations and some matlab&lt;br /&gt;
* [http://www.geodise.org/documentation/OptionsMatlab/html/ MatlabOptions] Matlab interface to the design and optimization package (OPTIONS).&lt;br /&gt;
&lt;br /&gt;
=== Various links ===&lt;br /&gt;
&lt;br /&gt;
* [http://videolectures.net/Top/Computer_Science/Machine_Learning/ An excellent collection of machine learning lecture videos]&lt;br /&gt;
* [http://home.online.no/~pjacklam/matlab/software/util/fullindex.html A collection of useful Matlab scripts]&lt;br /&gt;
* [http://home.online.no/~pjacklam/matlab/doc/mtt/  MATLAB array manipulation tips and tricks]&lt;br /&gt;
* [http://www.adaptivebox.net/research/bookmark/psocodes_link.html Particle Swarm implementations]&lt;br /&gt;
* [http://mloss.org A great selection of open source machine learning software]&lt;br /&gt;
* [http://stommel.tamu.edu/~baum/toolboxes.html A list of Matlab toolboxes]&lt;br /&gt;
* [http://mdoboard.proboards59.com/ ISSMO-REASON: Research and Engineering Applications in Structural Optimization Network]&lt;br /&gt;
* [http://www.nafems.org/about/ NAFEMS]&lt;br /&gt;
* [http://www.kat-net.net/ The European Coordinating Action on Key Aerodynamic Technologies]&lt;br /&gt;
* [http://www.altairhyperworks.co.uk/Default.aspx Altair Hyperworks]&lt;br /&gt;
* [http://www.ifte.de/english/research/index.html IFTE]&lt;br /&gt;
* [http://www.optiy.eu/Features.html OptyI]&lt;br /&gt;
* [http://www.technet-alliance.com/ Technet Alliance]&lt;br /&gt;
&lt;br /&gt;
=== Conference links ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.conferencealerts.com Conference alerts]&lt;br /&gt;
* [http://www.conferencealerts.com/engineer.htm Engineering conferences]&lt;br /&gt;
* [http://www.conferencealerts.com/ai.htm AI Conference alerts]&lt;br /&gt;
* [http://www.ieee.org/web/conferences/search/index.html IEEE conferences]&lt;br /&gt;
* [http://www.aiaa.org/content.cfm?pageid=1 AIAA Conferences]&lt;br /&gt;
* [http://www.wikicfp.com/ Wiki of conferences]&lt;br /&gt;
* [http://users.jyu.fi/~miettine/lista.html#Conferences Kaisa&#039;s conferences]&lt;br /&gt;
* [http://www.conference-service.com/conferences/neural-networks.html AI Conferences]&lt;br /&gt;
* [http://ieee-cis.org/conferences/co_sponsorship_1/ IEEE CIS conferences]&lt;br /&gt;
* [http://www.makhfi.com/events.htm Neural Network Events]&lt;br /&gt;
* [http://openresearch.org/mw/index.php?title=Upcoming_deadlines&amp;amp;field=Machine+learning Open research AI conferences]&lt;br /&gt;
* [http://ppsn2014.ijs.si International Conference on Parallel Problem Solving from Nature]&lt;br /&gt;
* [http://icannga.com International Conference on Adaptive and Natural Computing Algorithms]&lt;br /&gt;
* [http://www.engopt.org/ EngOpt]&lt;br /&gt;
* [http://www.sigevo.org/gecco-2014/ Genetic and Evolutionary Computation Conference]&lt;br /&gt;
&lt;br /&gt;
=== Journal Links ===&lt;br /&gt;
&lt;br /&gt;
*[http://www.linklings.net/tomacs/charter.html ACM Transactions on Modeling and Computer Simulation]&lt;br /&gt;
*[http://www.elsevier.com/wps/find/journaldescription.cws_home/622330/description#description Simulation Modelling Practice and Theory]&lt;br /&gt;
*[http://www.elsevier.com/wps/find/journaldescription.cws_home/422911/description#description Advances in Engineering Software]&lt;br /&gt;
*[http://journaltool.asme.org/Content/JournalDescriptions.cfm?journalId=12 Journal of Mechanical Design ]&lt;br /&gt;
*[http://journaltool.asme.org/Content/JournalDescriptions.cfm?journalId=3&amp;amp;Journal=JCISE Journal of Computing and Information Science in Engineering]&lt;br /&gt;
*[http://www.elsevier.com/wps/find/journaldescription.cws_home/975/description#description Engineering Applications of Artificial Intelligence]&lt;br /&gt;
*[http://www.elsevier.com/wps/find/journaldescription.cws_home/622240/description#description Advanced Engineering Informatics]&lt;br /&gt;
*[http://www.springer.com/computer/information+systems/journal/366 Engineering with Computers]&lt;br /&gt;
*[http://www.springer.com/computer/mathematics/journal/521 Neural Computing and Applications]&lt;br /&gt;
*[http://www.aiaa.org/content.cfm?pageid=322&amp;amp;lupubid=2 AIAA Journal]&lt;br /&gt;
*[http://journals.cambridge.org/action/displayJournal?jid=aie Artificial Intelligence for Engineering Design, Analysis and Manufacturing ]&lt;br /&gt;
*[http://jmlr.csail.mit.edu/ Journal of Machine Learning Research]&lt;br /&gt;
*[http://www.elsevier.com/wps/find/journaldescription.cws_home/505645/description#description Computer Methods in Applied Mechanics and Engineering]&lt;br /&gt;
*[http://www.elsevier.com/wps/find/journaldescription.cws_home/524998/description#description Applied Mathematical Modelling]&lt;br /&gt;
*[http://www.siam.org/journals/sisc.php SIAM Journal on Scientific Computing]&lt;br /&gt;
*[http://www.iop.org/EJ/journal/-page=scope/0266-5611 Inverse Problems]&lt;br /&gt;
*[http://www.tandf.co.uk/journals/titles/17415977.asp Inverse problems in science and engineering]&lt;br /&gt;
*[http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=3468 IEEE Transactions on Systems, Man and Cybernetics, Part A]&lt;br /&gt;
*[http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=3477 IEEE Transactions on Systems, Man and Cybernetics, Part B]&lt;br /&gt;
*[http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5326 IEEE Transactions on Systems, Man and Cybernetics, Part C]&lt;br /&gt;
*[http://www.techscience.com/cmes/aims_scope.html Computer Modeling in Engineering &amp;amp; Sciences]&lt;br /&gt;
*[http://www.informaworld.com/smpp/title~db=all~content=t713723652~tab=summary Journal of Experimental &amp;amp; Theoretical Artificial Intelligence]&lt;br /&gt;
*[http://www.elsevier.com/locate/jocs Journal of Computational Science]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=MediaWiki:Sidebar&amp;diff=5832</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=MediaWiki:Sidebar&amp;diff=5832"/>
		<updated>2013-04-08T18:03:13Z</updated>

		<summary type="html">&lt;p&gt;Admin: Disambiguating &amp;#039;Download&amp;#039; from &amp;#039;download&amp;#039; since download is an interface message&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* SUMO Toolbox&lt;br /&gt;
** mainpage | Main Page&lt;br /&gt;
** About | About&lt;br /&gt;
** Downloading | Downloads&lt;br /&gt;
** whats_new | New Features&lt;br /&gt;
** Running#Getting_started | Getting started&lt;br /&gt;
&lt;br /&gt;
* Support&lt;br /&gt;
** contact|Contact&lt;br /&gt;
** faq|FAQ&lt;br /&gt;
** Special:Allpages|All Pages&lt;br /&gt;
** Wiki Help|Wiki help&lt;br /&gt;
&lt;br /&gt;
* News&lt;br /&gt;
** currentevents-url|currentevents&lt;br /&gt;
** recentchanges-url|Recent Wiki Changes&lt;br /&gt;
&lt;br /&gt;
* Related links&lt;br /&gt;
** http://www.sumo.intec.ugent.be | SUMO-Lab Homepage&lt;br /&gt;
** http://www.ibcn.intec.ugent.be | IBCN Homepage&lt;br /&gt;
** http://www.intec.ugent.be | INTEC Homepage&lt;br /&gt;
** http://www.ugent.be | UGent Homepage&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=MediaWiki:Sidebar&amp;diff=5831</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=MediaWiki:Sidebar&amp;diff=5831"/>
		<updated>2013-04-08T17:59:09Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* SUMO Toolbox&lt;br /&gt;
** mainpage | Main Page&lt;br /&gt;
** About | About&lt;br /&gt;
** Downloading | Download&lt;br /&gt;
** whats_new | New Features&lt;br /&gt;
** Running#Getting_started | Getting started&lt;br /&gt;
&lt;br /&gt;
* Support&lt;br /&gt;
** contact|Contact&lt;br /&gt;
** faq|FAQ&lt;br /&gt;
** Special:Allpages|All Pages&lt;br /&gt;
** Wiki Help|Wiki help&lt;br /&gt;
&lt;br /&gt;
* News&lt;br /&gt;
** currentevents-url|currentevents&lt;br /&gt;
** recentchanges-url|Recent Wiki Changes&lt;br /&gt;
&lt;br /&gt;
* Related links&lt;br /&gt;
** http://www.sumo.intec.ugent.be | SUMO-Lab Homepage&lt;br /&gt;
** http://www.ibcn.intec.ugent.be | IBCN Homepage&lt;br /&gt;
** http://www.intec.ugent.be | INTEC Homepage&lt;br /&gt;
** http://www.ugent.be | UGent Homepage&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=MediaWiki:Sidebar&amp;diff=5830</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=MediaWiki:Sidebar&amp;diff=5830"/>
		<updated>2013-04-08T17:58:39Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* SUMO Toolbox&lt;br /&gt;
** mainpage|mainpage&lt;br /&gt;
** About | About&lt;br /&gt;
** Downloading|Download&lt;br /&gt;
** whats_new | New Features&lt;br /&gt;
** Running#Getting_started | Getting started&lt;br /&gt;
&lt;br /&gt;
* Support&lt;br /&gt;
** contact|Contact&lt;br /&gt;
** faq|FAQ&lt;br /&gt;
** Special:Allpages|All Pages&lt;br /&gt;
** Wiki Help|Wiki help&lt;br /&gt;
&lt;br /&gt;
* News&lt;br /&gt;
** currentevents-url|currentevents&lt;br /&gt;
** recentchanges-url|Recent Wiki Changes&lt;br /&gt;
&lt;br /&gt;
* Related links&lt;br /&gt;
** http://www.sumo.intec.ugent.be | SUMO-Lab Homepage&lt;br /&gt;
** http://www.ibcn.intec.ugent.be | IBCN Homepage&lt;br /&gt;
** http://www.intec.ugent.be | INTEC Homepage&lt;br /&gt;
** http://www.ugent.be | UGent Homepage&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=MediaWiki:Sidebar&amp;diff=5829</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=MediaWiki:Sidebar&amp;diff=5829"/>
		<updated>2013-04-08T17:57:39Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* SUMO Toolbox&lt;br /&gt;
** mainpage|mainpage&lt;br /&gt;
** About | About&lt;br /&gt;
**  Downloading  |  Download &lt;br /&gt;
** whats_new | New Features&lt;br /&gt;
** Running#Getting_started | Getting started&lt;br /&gt;
&lt;br /&gt;
* Support&lt;br /&gt;
** contact|Contact&lt;br /&gt;
** faq|FAQ&lt;br /&gt;
** Special:Allpages|All Pages&lt;br /&gt;
** Wiki Help|Wiki help&lt;br /&gt;
&lt;br /&gt;
* News&lt;br /&gt;
** currentevents-url|currentevents&lt;br /&gt;
** recentchanges-url|Recent Wiki Changes&lt;br /&gt;
&lt;br /&gt;
* Related links&lt;br /&gt;
** http://www.sumo.intec.ugent.be | SUMO-Lab Homepage&lt;br /&gt;
** http://www.ibcn.intec.ugent.be | IBCN Homepage&lt;br /&gt;
** http://www.intec.ugent.be | INTEC Homepage&lt;br /&gt;
** http://www.ugent.be | UGent Homepage&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=MediaWiki:Sidebar&amp;diff=5828</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=MediaWiki:Sidebar&amp;diff=5828"/>
		<updated>2013-04-08T17:55:46Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* SUMO Toolbox&lt;br /&gt;
** mainpage|mainpage&lt;br /&gt;
** About | About&lt;br /&gt;
** Downloading | Download&lt;br /&gt;
** whats_new | New Features&lt;br /&gt;
** Running#Getting_started | Getting started&lt;br /&gt;
&lt;br /&gt;
* Support&lt;br /&gt;
** contact|Contact&lt;br /&gt;
** faq|FAQ&lt;br /&gt;
** Special:Allpages|All Pages&lt;br /&gt;
** Wiki Help|Wiki help&lt;br /&gt;
&lt;br /&gt;
* News&lt;br /&gt;
** currentevents-url|currentevents&lt;br /&gt;
** recentchanges-url|Recent Wiki Changes&lt;br /&gt;
&lt;br /&gt;
* Related links&lt;br /&gt;
** http://www.sumo.intec.ugent.be | SUMO-Lab Homepage&lt;br /&gt;
** http://www.ibcn.intec.ugent.be | IBCN Homepage&lt;br /&gt;
** http://www.intec.ugent.be | INTEC Homepage&lt;br /&gt;
** http://www.ugent.be | UGent Homepage&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=MediaWiki:Sidebar&amp;diff=5827</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=MediaWiki:Sidebar&amp;diff=5827"/>
		<updated>2013-04-08T17:55:32Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* SUMO Toolbox&lt;br /&gt;
** mainpage|mainpage&lt;br /&gt;
** About | About&lt;br /&gt;
** Downloading | download&lt;br /&gt;
** whats_new | New Features&lt;br /&gt;
** Running#Getting_started | Getting started&lt;br /&gt;
&lt;br /&gt;
* Support&lt;br /&gt;
** contact|Contact&lt;br /&gt;
** faq|FAQ&lt;br /&gt;
** Special:Allpages|All Pages&lt;br /&gt;
** Wiki Help|Wiki help&lt;br /&gt;
&lt;br /&gt;
* News&lt;br /&gt;
** currentevents-url|currentevents&lt;br /&gt;
** recentchanges-url|Recent Wiki Changes&lt;br /&gt;
&lt;br /&gt;
* Related links&lt;br /&gt;
** http://www.sumo.intec.ugent.be | SUMO-Lab Homepage&lt;br /&gt;
** http://www.ibcn.intec.ugent.be | IBCN Homepage&lt;br /&gt;
** http://www.intec.ugent.be | INTEC Homepage&lt;br /&gt;
** http://www.ugent.be | UGent Homepage&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=FANN_Bindings&amp;diff=5558</id>
		<title>FANN Bindings</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=FANN_Bindings&amp;diff=5558"/>
		<updated>2011-08-19T10:48:32Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== FANN: Fast Artificial Neural Network Library ==&lt;br /&gt;
&lt;br /&gt;
From the [http://fann.sf.net FANN website]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Fast Artificial Neural Network Library is a free open source neural network library, which implements multilayer artificial neural networks in C with support for both fully connected and sparsely connected networks. Cross-platform execution in both fixed and floating point are supported. It includes a framework for easy handling of training data sets. It is easy to use, versatile, well documented, and fast. PHP, C++, .NET, Ada, Python, Delphi, Octave, Ruby, Prolog Pure Data and Mathematica bindings are available. A reference manual accompanies the library with examples and recommendations on how to use the library. A graphical user interface is also available for the library.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== FANN Matlab bindings ==&lt;br /&gt;
&lt;br /&gt;
The Matlab Neural Network toolbox is a great piece of software but unfortunately much too slow. Therefore I decided to add the FANN library as an optional backend.  Unfortunately there were no Matlab bindings available so I quickly hacked some together.  I&#039;d never written Mex files before and my C skills are very rusty to say the least so I thought it would be a good exercise. I&#039;m putting them online in the hope somebody will pick them up and improve/extend them (since they are pretty basic).&lt;br /&gt;
&lt;br /&gt;
Note that I am only interested in regression (function approximation) so my bindings only reflect that tiny subset of the total FANN features.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Use these bindings at your own risk! They work for me but don&#039;t expect me to guarantee anything!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
License: GPL v2 or later&lt;br /&gt;
&lt;br /&gt;
Download: https://github.com/dgorissen/mfann&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Version of the FANN library required: 2.1beta&lt;br /&gt;
&lt;br /&gt;
Enclosed is a GNU makefile that builds the mex files (you may have to edit the makefile a little to accommodate for your environment). If anybody is willing to contribute windows binaries or Makefiles please do!&lt;br /&gt;
&lt;br /&gt;
Make sure the mex files are in your Matlab path and Matlab knows where to find the FANN library (e.g., see LD_LIBRARY_PATH on unix systems).&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
* Create a network&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;ann = createFann([2 5 3 1],connectivity)&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Train a network&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;ann = trainFann(ann,samples,values,[desired error],[max epochs])&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Use a network&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;values = testFann(ann,samples)&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where samples are the input data points and values the output values, both in column format (1 column per dimension).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: do not use a connectivity different from 1 for else you will get wrong results&#039;&#039;&#039; (I hope this can be fixed with the new fann library)&lt;br /&gt;
&lt;br /&gt;
== Contribute ==&lt;br /&gt;
&lt;br /&gt;
These bindings are very basic but they work for me.  Please improve, extend, provide binaries, and of course contribute back.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=FAQ&amp;diff=5557</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=FAQ&amp;diff=5557"/>
		<updated>2011-07-07T08:43:03Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Does SUMO support discrete inputs/outputs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
=== What is a global surrogate model? ===&lt;br /&gt;
&lt;br /&gt;
A global [http://en.wikipedia.org/wiki/Surrogate_model surrogate model] is a mathematical model that mimics the behavior of a computationally expensive simulation code over &#039;&#039;&#039;the complete parameter space&#039;&#039;&#039; as accurately as possible, using as little data points as possible. So note that optimization is not the primary goal, although it can be done as a post-processing step. Global surrogate models are useful for:&lt;br /&gt;
&lt;br /&gt;
* design space exploration, to get a &#039;&#039;feel&#039;&#039; of how the different parameters behave&lt;br /&gt;
* sensitivity analysis&lt;br /&gt;
* &#039;&#039;what-if&#039;&#039; analysis&lt;br /&gt;
* prototyping&lt;br /&gt;
* visualization&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
In addition they are a cheap way to model large scale systems, multiple global surrogate models can be chained together in a model cascade.&lt;br /&gt;
&lt;br /&gt;
See also the [[About]] page.&lt;br /&gt;
&lt;br /&gt;
=== What about surrogate driven optimization? ===&lt;br /&gt;
&lt;br /&gt;
When coining the term &#039;&#039;&#039;surrogate driven optimization&#039;&#039;&#039; most people associate it with trust-region strategies and simple polynomial models. These frameworks first construct a local surrogate which is optimized to find an optimum. Afterwards, a move limit strategy decides how the local surrogate is scaled and/or moved through the input space. Subsequently the surrogate is rebuild and optimized. I.e. the surrogate zooms in to the global optimum. For instance the [http://www.cs.sandia.gov/DAKOTA/ DAKOTA] Toolbox implements such strategies where the surrogate construction is separated from optimization.&lt;br /&gt;
&lt;br /&gt;
Such a framework was earlier implemented in the SUMO Toolbox but was deprecated as it didn&#039;t fit the philosophy and design of the toolbox. &lt;br /&gt;
&lt;br /&gt;
Instead another, equally powerful, approach was taken. The current optimization framework is in fact a sampling selection strategy that balances local and global search. In other words, it balances between exploring the input space and exploiting the information the surrogate gives us.&lt;br /&gt;
&lt;br /&gt;
A configuration example can be found [[Config:SampleSelector#expectedImprovement|here]].&lt;br /&gt;
&lt;br /&gt;
=== What is (adaptive) sampling? Why is it used? ===&lt;br /&gt;
&lt;br /&gt;
In classical Design of Experiments you need to specify the design of your experiment up-front. Or in other words, you have to say up-front how many data points you need and how they should be distributed.  Two examples are Central Composite Designs and Latin Hypercube designs.  However, if your data is expensive to generate (e.g., an expensive simulation code) it is not clear how many points are needed up-front.  Instead data points are selected adaptively, only a couple at a time.  This process of incrementally selecting new data points in regions that are the most interesting is called adaptive sampling, sequential design, or active learning.  Of course the sampling process needs to start from somewhere so the very first set of points is selected based on a fixed, classic experimental design.  See also [[Running#Understanding_the_control_flow]].&lt;br /&gt;
SUMO provides a number of different sampling algorithms: [[SampleSelector]]&lt;br /&gt;
&lt;br /&gt;
Of course sometimes you dont want to do sampling.  For example if you have a fixed dataset you just want to load all the data in one go and model that.  For how to do this see [[FAQ#How_do_I_turn_off_adaptive_sampling_.28run_the_toolbox_for_a_fixed_set_of_samples.29.3F]].&lt;br /&gt;
&lt;br /&gt;
=== What about dynamical, time dependent data? ===&lt;br /&gt;
&lt;br /&gt;
The original design and purpose was to tackle static input-output systems, where there is no memory. Just a complex mapping that must be learnt and approximated. Of course you can take a fixed time interval and apply the toolbox but that typically is not a desired solution.  Usually you are interested in time series prediction, e.g., given a set of output values from time t=0 to t=k, predict what happens at time t=k+1,k+2,...&lt;br /&gt;
&lt;br /&gt;
The toolbox was originally not intended for this purpose.  However, it is quite easy to add support for recurrent models.  Automatic generation of dynamical models would involve adding a new model type (just like you would add a new regression technique) or require adapting an existing one.  For example it would not be too much work to adapt the ANN or SVM models to support dynamic problems.  The only extra work besides that would be to add a new [[Measures|Measure]] that can evaluate the fidelity of the models&#039; prediction.&lt;br /&gt;
&lt;br /&gt;
Naturally though, you would be unable to use sample selection (since it makes no sense in those problems).  Unless of course there is a specialized need for it.  In that case you would add a new [[SampleSelector]].&lt;br /&gt;
&lt;br /&gt;
For more information on this topic [[Contact]] us.&lt;br /&gt;
&lt;br /&gt;
=== What about classification problems? ===&lt;br /&gt;
&lt;br /&gt;
The main focus of the SUMO Toolbox is on regression/function approximation.  However, the framework for hyperparameter optimization, model selection, etc.  can also be used for classification.  Starting from version 6.3 a demo file is included in the distribution that shows how this works on the well known two spiral test problem.&lt;br /&gt;
&lt;br /&gt;
=== Can the toolbox drive my simulation code directly? ===&lt;br /&gt;
&lt;br /&gt;
Yes it can.  See the [[Interfacing with the toolbox]] page.&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between the M3-Toolbox and the SUMO-Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
The SUMO toolbox is a complete, feature-full framework for automatically generating approximation models and performing adaptive sampling. In contrast, the M3-Toolbox was more of a proof-of-principle.&lt;br /&gt;
&lt;br /&gt;
=== What happened to the M3-Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
The M3 Toolbox project has been discontinued (Fall 2007) and superseded by the SUMO Toolbox. Please contact tom.dhaene@ua.ac.be for any inquiries and requests about the M3 Toolbox.&lt;br /&gt;
&lt;br /&gt;
=== How can I stay up to date with the latest news? ===&lt;br /&gt;
&lt;br /&gt;
To stay up to date with the latest news and releases, we also recommend subscribing to our newsletter [http://www.sumo.intec.ugent.be here].  Traffic will be kept to a minimum (1 message every 2-3 months) and you can unsubscribe at any time.&lt;br /&gt;
&lt;br /&gt;
You can also follow our blog: [http://sumolab.blogspot.com/ http://sumolab.blogspot.com/].&lt;br /&gt;
&lt;br /&gt;
=== What is the roadmap for the future? ===&lt;br /&gt;
&lt;br /&gt;
There is no explicit roadmap since much depends on where our research leads us, what feedback we get, which problems we are working on, etc.  However, to get an idea of features to come you can always check the [[Whats new]] page.&lt;br /&gt;
&lt;br /&gt;
You can also follow our blog: [http://sumolab.blogspot.com/ http://sumolab.blogspot.com/].&lt;br /&gt;
&lt;br /&gt;
=== Will there be an R/Scilab/Octave/Sage/.. version? ===&lt;br /&gt;
&lt;br /&gt;
At the start of the project we considered moving from Matlab to one of the available open source alternatives.  However, after much discussion we decided against this for several reasons, including:&lt;br /&gt;
&lt;br /&gt;
* Existing experience and know-how of the development team&lt;br /&gt;
* The widespread use of the Matlab platform in the target application domains&lt;br /&gt;
* The quality and amount of available Matlab documentation&lt;br /&gt;
* The quality and number of Matlab toolboxes&lt;br /&gt;
* Support for object orientation (inheritance, polymorphism, etc.)&lt;br /&gt;
* Many well documented interfacing options (especially the seamless integration with Java)&lt;br /&gt;
&lt;br /&gt;
Matlab, as a proprietary platform, definitely has its problems and deficiencies but the number of advanced algorithms and available toolboxes make it a very attractive platform.  Equally important is the fact that every function is properly documented, tested, and includes examples, tutorials, and in some cases GUI tools.  A lot of things would have been a lot harder and/or time consuming to implement on one of the other platforms.  Add to that the fact that many engineers (particularly in aerospace) already use Matlab quite heavily.  Thus given our situation, goals, and resources at the time, Matlab was the best choice for us.  &lt;br /&gt;
&lt;br /&gt;
The other platforms remain on our radar however, and we do look into them from time to time.  Though, with our limited resources porting to one of those platforms is not (yet) cost effective.&lt;br /&gt;
&lt;br /&gt;
=== What are collaboration options? ===&lt;br /&gt;
&lt;br /&gt;
We will gladly help out with any SUMO-Toolbox related questions or problems. However, since we are a university research group the most interesting goal for us is to work towards some joint publication (e.g., we can help with the modeling of your problem).  Alternatively, it is always nice if we could use your data/problem (fully referenced and/or anonymized if necessary of course) as an example application during a conference presentation or in a PhD thesis.&lt;br /&gt;
&lt;br /&gt;
The most interesting case is if your problem involves sample selection and modeling.  This means you have some simulation code or script to drive and you want an accurate model while minimizing the number of data points.  In this case, in order for us to optimally help you it would be easiest if we could run your simulation code (or script) locally or access it remotely.  Else its difficult to give good recommendations about what settings to use.&lt;br /&gt;
&lt;br /&gt;
If this is not possible (e.g., expensive, proprietary or secret modeling code) or if your problem does not involve sample selection, you can send us a fixed data set that is representative of your problem. Again, this may be fully anonymized and will be kept confidential of course.&lt;br /&gt;
&lt;br /&gt;
In either case (code or dataset) remember:&lt;br /&gt;
&lt;br /&gt;
* the data file should be an ASCII file in column format (each row containing one data point) (see also [[Interfacing_with_the_toolbox]])&lt;br /&gt;
* include a short description of your data:&lt;br /&gt;
** number of inputs and number of outputs&lt;br /&gt;
** the range of each input (or scaled to [-1 1] if you do not wish to disclose this)&lt;br /&gt;
** if the outputs are real or complex valued&lt;br /&gt;
** how noisy the data is or if it is completely deterministic (computer simulation) (please also see: [[FAQ#My_data_contains_noise_can_the_SUMO-Toolbox_help_me.3F]]).&lt;br /&gt;
** if possible the expected range of each output (or scaled if you do not wish to disclose this)&lt;br /&gt;
** if possible the names of each input/output + a short description of what they mean&lt;br /&gt;
** any further insight you have about the data, expected behavior, expected importance of each input, etc.&lt;br /&gt;
&lt;br /&gt;
If you have any further questions or comments related to this please [[Contact]] us.&lt;br /&gt;
&lt;br /&gt;
=== Can you help me model my problem? ===&lt;br /&gt;
&lt;br /&gt;
Please see the previous question: [[FAQ#What_are_collaboration_options.3F]]&lt;br /&gt;
&lt;br /&gt;
== Installation and Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== What is the relationship between Matlab and Java? ===&lt;br /&gt;
&lt;br /&gt;
Many people do not know this, but your Matlab installation automatically includes a Java virtual machine.  By default, Matlab seamlessly integrates with Java, allowing you to create Java objects from the command line (e.g., &#039;s = java.lang.String&#039;).  It is possible to disable java support but in order to use the SUMO Toolbox it should not be.  To check if Java is enabled you can use the &#039;usejava&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== What is Java, why do I need it, do I have to install it, etc. ? ===&lt;br /&gt;
&lt;br /&gt;
The short answer is: no, dont worry about it.  The long answer is: Some of the code of the SUMO Toolbox is written in [http://en.wikipedia.org/wiki/Java_(programming_language) Java], since it makes a lot more sense in many situations and is a proper programming language instead of a scripting language like Matlab.  Since Matlab automatically includes a JVM to run Java code there is nothing you need to do or worry about (see the previous FAQ entry).  Unless its not working of course, in that case see [[FAQ#When_running_the_toolbox_you_get_something_like_.27.3F.3F.3F_Undefined_variable_.22ibbt.22_or_class_.22ibbt.sumo.config.ContextConfig.setRootDirectory.22.27]].&lt;br /&gt;
&lt;br /&gt;
=== What is XML? ===&lt;br /&gt;
&lt;br /&gt;
XML stands for eXtensible Markup Language and is related to HTML (= the stuff web pages are written in).  The first thing you have to understand is that &#039;&#039;&#039;does not do anything&#039;&#039;&#039;. Honest. Many engineers are not used to it and think it is some complicated computer programming language-stuff-thingy.  This is of course not the case (we ignore some of the fancy stuff you can do with it for now).  XML is a markup language meaning, it provides some rules how you can annotate or structure existing text.&lt;br /&gt;
&lt;br /&gt;
The way SUMO uses XML is really simple and there is not much to understand.  First some simple terminology.  Take the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Foo attr=&amp;quot;bar&amp;quot;&amp;gt;bla bla bla&amp;lt;/Foo&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here we have &#039;&#039;&#039;a tag&#039;&#039;&#039; called &#039;&#039;Foo&#039;&#039; containing text &#039;&#039;bla bla bla&#039;&#039;.  The tag Foo also has an &#039;&#039;&#039;attribute&#039;&#039;&#039; &#039;&#039;attr&#039;&#039; with value &#039;&#039;bar&#039;&#039;.  &#039;&amp;lt;Foo&amp;gt;&#039; is what we call the &#039;&#039;&#039;opening tag&#039;&#039;&#039;, and &#039;&amp;lt;/Foo&amp;gt;&#039; is the &#039;&#039;&#039;closing tag&#039;&#039;&#039;.  Each time you open a tag you must close it again.  How you name the tags or attributes it totally up to you, you choose :)&lt;br /&gt;
&lt;br /&gt;
Lets take a more interesting example.  Here we have used XML to represent information about a receipe for pancakes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;recipe category=&amp;quot;dessert&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;Pancakes&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;sumo@intec.ugent.be&amp;lt;/author&amp;gt;&lt;br /&gt;
  &amp;lt;date&amp;gt;Wed, 14 Jun 95&amp;lt;/date&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
    Good old fashioned pancakes.&lt;br /&gt;
  &amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;ingredients&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
        &amp;lt;amount&amp;gt;3&amp;lt;/amount&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;eggs&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
         &amp;lt;amount&amp;gt;0.5 tablespoon&amp;lt;/amount&amp;gt;&lt;br /&gt;
         &amp;lt;type&amp;gt;salt&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
  &amp;lt;/ingredients&amp;gt;&lt;br /&gt;
  &amp;lt;preparation&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/preparation&amp;gt;&lt;br /&gt;
 &amp;lt;/recipe&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So basically, you see that XML is just a way to structure, order, and group information.  Thats it!  So SUMO basically uses it to store and structure configuration options.  And this works well due to the nice hierarchical nature of XML.&lt;br /&gt;
&lt;br /&gt;
If you understand this there is nothing else to it in order to be able to understand the SUMO configuration files.  If you need more information see the tutorial here: [http://www.w3schools.com/XML/xml_whatis.asp http://www.w3schools.com/XML/xml_whatis.asp].  You can also have a look at the wikipedia page here: [http://en.wikipedia.org/wiki/XML http://en.wikipedia.org/wiki/XML]&lt;br /&gt;
&lt;br /&gt;
=== Why does SUMO use XML? ===&lt;br /&gt;
&lt;br /&gt;
XML is the defacto standard way of structuring information. This ranges from spreadsheet files (Microsoft Excel for example), to configuration data, to scientific data, ...  There are even whole database systems based solely on XML.  So basically, its an intuitive way to structure data and it is used everywhere.  This makes that there are a very large number of libraries and programming languages available that can parse, and handle XML easily.  That means less work for the programmer.  Then of course there is stuff like XSLT, XQuery, etc that makes life even easier.&lt;br /&gt;
So basically, it would not make sense for SUMO to use any other format :)&lt;br /&gt;
&lt;br /&gt;
=== I get an error that SUMO is not yet activated ===&lt;br /&gt;
&lt;br /&gt;
Make sure you installed the activation file that was mailed to you as is explained in the [[Installation]] instructions.  Also double check your system meets the [[System requirements]] and that [http://www.sumowiki.intec.ugent.be/index.php/FAQ#When_running_the_toolbox_you_get_something_like_.27.3F.3F.3F_Undefined_variable_.22ibbt.22_or_class_.22ibbt.sumo.config.ContextConfig.setRootDirectory.22.27|java java is enabled].  To fully verify that the activation file installation is correct ensure that the file ContextConfig.class is present in the directory &#039;&#039;&amp;lt;SUMO installation directory&amp;gt;/bin/java/ibbt/sumo/config&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Please note that more flexible research licenses are available if it is possible to [[FAQ#What_are_collaboration_options.3F|collaborate in any way]].&lt;br /&gt;
&lt;br /&gt;
== Upgrading ==&lt;br /&gt;
&lt;br /&gt;
=== How do I upgrade to a newer version? ===&lt;br /&gt;
&lt;br /&gt;
Delete your old &amp;lt;code&amp;gt;&amp;lt;SUMO-Toolbox-directory&amp;gt;&amp;lt;/code&amp;gt; completely and replace it by the new one.  Install the new activation file / extension pack as  before (see [[Installation]]), start Matlab and make sure the default run works.  To port your old configuration files to the new version: make a copy of default.xml (from the new version) and copy over your custom changes (from the old version) one by one.  This should prevent any weirdness if the XML structure has changed between releases.&lt;br /&gt;
&lt;br /&gt;
If you had a valid activation file for the previous version, just [[Contact]] us (giving your SUMOlab website username) and we will send you a new activation file.  Note that to update an activation file you must first unzip a copy of the toolbox to a new directory and install the activation file as if it was the very first time.  Upgrading of an activation file without performing a new toolbox install is (unfortunately) not (yet) supported.&lt;br /&gt;
&lt;br /&gt;
== Using ==&lt;br /&gt;
&lt;br /&gt;
=== I have no idea how to use the toolbox, what should I do? ===&lt;br /&gt;
&lt;br /&gt;
See: [[Running#Getting_started]]&lt;br /&gt;
&lt;br /&gt;
=== I want to try one of the different examples ===&lt;br /&gt;
&lt;br /&gt;
See [[Running#Running_different_examples]].&lt;br /&gt;
&lt;br /&gt;
=== I want to model my own problem ===&lt;br /&gt;
&lt;br /&gt;
See : [[Adding an example]].&lt;br /&gt;
&lt;br /&gt;
=== I want to contribute some data/patch/documentation/... ===&lt;br /&gt;
&lt;br /&gt;
See : [[Contributing]].&lt;br /&gt;
&lt;br /&gt;
=== How do I interface with the SUMO Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Interfacing with the toolbox]].&lt;br /&gt;
&lt;br /&gt;
=== What configuration options (model type, sample selection algorithm, ...) should I use for my problem? ===&lt;br /&gt;
&lt;br /&gt;
See [[General_guidelines]].&lt;br /&gt;
&lt;br /&gt;
=== Ok, I generated a model, what can I do with it? ===&lt;br /&gt;
&lt;br /&gt;
See: [[Using a model]].&lt;br /&gt;
&lt;br /&gt;
=== How can I share a model created by the SUMO Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Using a model#Model_portability| Model portability]].&lt;br /&gt;
&lt;br /&gt;
=== I dont like the final model generated by SUMO how do I improve it? ===&lt;br /&gt;
&lt;br /&gt;
Before you start the modeling you should really ask youself this question: &#039;&#039;What properties do I want to see in the final model?&#039;&#039;  You have to think about what for you constitutes a good model and what constitutes a poor model. Then you should rank those properties depending on how important you find them.  Examples are:&lt;br /&gt;
&lt;br /&gt;
* accuracy in the training data&lt;br /&gt;
** is it important that the error in the training data is exactly 0, or do you prefer some smoothing&lt;br /&gt;
* accuracy outside the training data&lt;br /&gt;
** this is the validation or test error, how important is proper generalization (usually this is very important)&lt;br /&gt;
* what does accuracy mean to you? a low maximum error, a low average error, both, ...&lt;br /&gt;
* smoothness&lt;br /&gt;
** should your model be perfectly smooth or is it acceptable that you have a few small ripples here and there for example&lt;br /&gt;
* are some regions of the response more important than others?&lt;br /&gt;
** for example you may want to be certain that the minima/maxima are captured very accurately but everything in between is less important&lt;br /&gt;
* are there particular special features that your model should have&lt;br /&gt;
** for example, capture underlying poles or discontinuities correctly&lt;br /&gt;
* extrapolation capability&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
It is important to note that often these criteria may be conflicting.  The classical example is fitting noisy data: the lower your training error the higher your testing error.  A natural approach is to combine multiple criteria, see [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
Once you have decided on a set of requirements the question is then, can the SUMO-Toolbox produce a model that meets them? In SUMO model generation is driven by one or more [[Measures]].  So you should choose the combination of [[Measures]] that most closely match your requirements.  Of course we can not provide a Measure for every single property, but it is very straightforward to [[Add_Measure|add your own Measure]].&lt;br /&gt;
&lt;br /&gt;
Now, lets say you have chosen what you think are the best Measures but you are still not happy with the final model.  Reasons could be:&lt;br /&gt;
&lt;br /&gt;
* you need more modeling iterations or you need to build more models per iteration (see [[Running#Understanding_the_control_flow]]). This will result in a more extensive search of the model parameter space, but will take longer to run.&lt;br /&gt;
* you should switch to a different model parameter optimization algorithm (e.g., for example instead of the Pattern Search variant, try the Genetic Algorithm variant of your AdaptiveModelBuilder.)&lt;br /&gt;
* the model type you are using is not ideally suited to your data&lt;br /&gt;
* there simply is not enough data, use a larger initial design or perform more sampling iterations to get more information per dimension&lt;br /&gt;
* maybe the sample distribution is causing troubles for your model (e.g., Kriging can have problems with clustered data).  In that case it could be worthwhile to choose a different sample selection algorithm.&lt;br /&gt;
* the range of your response variable is not ideal (for example, neural networks have trouble modeling data if the range of the outputs is very very small)&lt;br /&gt;
&lt;br /&gt;
You may also refer to the following [[General_guidelines]].  Finally, of course it may be that your problem is simply a very difficult one and does not approximate well.  But, still you should at least get something satisfactory.&lt;br /&gt;
&lt;br /&gt;
If you are having these kinds of problems, please [[Reporting_problems|let us know]] and we will gladly help out.&lt;br /&gt;
&lt;br /&gt;
=== My data contains noise can the SUMO-Toolbox help me? ===&lt;br /&gt;
&lt;br /&gt;
The original purpose of the SUMO-Toolbox was for it to be used in conjunction with computer simulations.  Since these are fully deterministic you do not have to worry about noise in the data and all the problems it causes.  However, the methods in the toolbox are general fitting methods that work on noisy data as well.  So yes, the toolbox can be used with noisy data, but you will just have to be more careful about how you apply the methods and how you perform model selection.  Its only when you use the toolbox with a noisy simulation engine that a few special  options may need to be set.  In that case [[Contact]] us for more information.&lt;br /&gt;
&lt;br /&gt;
Note though, that the toolbox is not a statistical package, if you have noisy data and you need noise estimation algorithms, kernel smoothing algorithms, etc.  you should look towards other tools.&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between a ModelBuilder and a ModelFactory? ===&lt;br /&gt;
&lt;br /&gt;
See [[Add Model Type]].&lt;br /&gt;
&lt;br /&gt;
=== Why are the Neural Networks so slow? ===&lt;br /&gt;
&lt;br /&gt;
The ANN models are an extremely powerful model type that give very good results in many problems.  However, they are quite slow to use.  There are some things you can do:&lt;br /&gt;
&lt;br /&gt;
* use trainlm or trainscg instead of the default training function trainbr.  trainbr gives very good, smooth results but is slower to use.  If results with trainlm are not good enough, try using msereg as a performance function.&lt;br /&gt;
* try setting the training goal (= the SSE to reach during training) to a small positive number (e.g., 1e-5) instead of 0.&lt;br /&gt;
* check that the output range of your problem is not very small.  If your response data lies between 10e-5 and 10e-9 for example it will be very hard for the neural net to learn it.  In that case rescale your data to a more sane range.&lt;br /&gt;
* switch from ANN to one of the other neural network modelers: fanngenetic or nanngenetic. These are a lot faster than the default backend based on the [http://www.mathworks.com/products/neuralnet/ Matlab Neural Network Toolbox].  However, the accuracy is usually not as good.&lt;br /&gt;
* If you are using [[Measures#CrossValidation| CrossValidation]] try to switch to a different measure since CrossValidation is very expensive to use. CrossValidation is used by default if you have not defined a [[Measures| measure]] yourself.  When using one of the neural network model types, try to use a different measure if you can.  For example, our tests have shown that minimizing the sum of [[Measures#SampleError| SampleError]] and [[Measures#LRMMeasure| LRMMeasure]] can give equal or even better results than CrossValidation, while being much cheaper (see [[Multi-Objective Modeling]] for how to combine multiple measures).  See also the comments in &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; for examples.&lt;br /&gt;
* Finally, as with any model type things will slow down if you have many dimensions or very large amounts of data.  If that is the case, try some dimensionality reduction or subsampling techniques.&lt;br /&gt;
&lt;br /&gt;
See also [[FAQ#How_can_I_make_the_toolbox_run_faster.3F]]&lt;br /&gt;
&lt;br /&gt;
=== How can I make the toolbox run faster? ===&lt;br /&gt;
&lt;br /&gt;
There are a number of things you can do to speed things up.  These are listed below.  Remember though that the main reason the toolbox may seem to be slow is due to the many models being built as part of the hyperparameter optimization.  Please make sure you fully understand the [[Running#Understanding_the_control_flow|control flow described here]] before trying more advanced options.&lt;br /&gt;
&lt;br /&gt;
* First of all check that your virus scanner is not interfering with Matlab. If McAfee or any other program wants to scan every file SUMO generates this really slows things down and your computer becomes unusable.&lt;br /&gt;
&lt;br /&gt;
* Turn off the plotting of models in [[Config:ContextConfig#PlotOptions| ContextConfig]], you can always generate plots from the saved mat files&lt;br /&gt;
&lt;br /&gt;
* This is an important one.  For most model builders there is an option &amp;quot;maxFunEals&amp;quot;, &amp;quot;maxIterations&amp;quot;, or equivalent.  Change this value to change the maximum number of models built between 2 sampling iterations.  The higher this number, the slower, but the better the models &#039;&#039;may&#039;&#039; be.  Equivalently, for the Genetic model builders reduce the population size and the number of generations.&lt;br /&gt;
&lt;br /&gt;
* If you are using [[Measures#CrossValidation]] see if you can avoid it and use one of the other measures or a combination of measures (see [[Multi-Objective Modeling]]&lt;br /&gt;
&lt;br /&gt;
* If you are using a very dense [[Measures#ValidationSet]] as your Measure, this means that every single model will be evaluated on that data set.  For some models like RBF, Kriging, SVM, this can slow things down.&lt;br /&gt;
&lt;br /&gt;
* Disable some, or even all of the [[Config:ContextConfig#Profiling| profilers]] or disable the output handlers that draw charts.  For example, you might use the following configuration for the profilers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Profiling&amp;gt;&lt;br /&gt;
	&amp;lt;Profiler name=&amp;quot;.*share.*|.*ensemble.*|.*Level.*&amp;quot; enabled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toImage&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toFile&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Profiler&amp;gt;&lt;br /&gt;
			&lt;br /&gt;
	&amp;lt;Profiler name=&amp;quot;.*&amp;quot; enabled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toFile&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Profiler&amp;gt;&lt;br /&gt;
&amp;lt;/Profiling&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;.*&amp;quot; means match any one or more characters ([http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html see here for the full list of supported wildcards]).  Thus in this example all the profilers that have &amp;quot;share&amp;quot;, &amp;quot;ensemble&amp;quot;, or &amp;quot;Level&amp;quot; in their name shoud be enabled and should be saved as a text file (toFile) AND as an image file (toImage).  All the other profilers should be saved just to file. The idea is to only save to image what you want as an image since image generation is expensive.  If you do this or switch off image generation completely you will see everything run much faster.&lt;br /&gt;
&lt;br /&gt;
* Decrease the logging granularity, a log level of FINE (the default is FINEST or ALL) is more then granular enough.  Setting it to FINE, INFO, or even WARNING should speed things up.&lt;br /&gt;
&lt;br /&gt;
* If you have a multi-core/multi-cpu machine:&lt;br /&gt;
** if you have the Matlab Parallel Computing Toolbox, try setting the parallelMode option to true in [[Config:ContextConfig]].  Now all model training occurs in parallel.  This may give unexpected errors in some cases so beware when using.&lt;br /&gt;
** if you are using a native executable or script as the sample evaluator set the threadCount variable in [[Config:SampleEvaluator#LocalSampleEvaluator| LocalSampleEvaluator]] equal to the number of cores/CPUs (only do this if it is ok to start multiple instances of your simulation script in parallel!)&lt;br /&gt;
&lt;br /&gt;
* Dont use the Min-Max measure, it can slow things down. See also [[FAQ#How_do_I_force_the_output_of_the_model_to_lie_in_a_certain_range]]&lt;br /&gt;
&lt;br /&gt;
* If you are using neural networks see [[FAQ#Why_are_the_Neural_Networks_so_slow.3F]]&lt;br /&gt;
&lt;br /&gt;
* If you are having problems with very slow or seemingly hanging runs:&lt;br /&gt;
** Do a run inside the [http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/matlab_env/f9-17018.html&amp;amp;http://www.google.be/search?client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;channel=s&amp;amp;hl=nl&amp;amp;q=matlab+profiler&amp;amp;meta=&amp;amp;btnG=Google+zoeken Matlab profiler] and see where most time is spent.&lt;br /&gt;
&lt;br /&gt;
** Monitor CPU and physical/virtual memory usage while the SUMO toolbox is running and see if you notice anything strange.  &lt;br /&gt;
&lt;br /&gt;
* Also note that by default Matlab only allocates about 117 MB memory space for the Java Virtual Machine. If you would like to increase this limit (which you should) please follow the instructions [http://www.mathworks.com/support/solutions/data/1-18I2C.html?solution=1-18I2C here]. See also the general memory instructions [http://www.mathworks.com/support/tech-notes/1100/1106.html here].&lt;br /&gt;
&lt;br /&gt;
To check if your SUMO run has hanged, monitor your log file (with the level set at least to FINE).  If you see no changes for about 30 minutes the toolbox will probably have stalled.  [[Reporting problems| report the problems here]].&lt;br /&gt;
&lt;br /&gt;
Such problems are hard to identify and fix so it is best to work towards a reproducible test case if you think you found a performance or scalability issue.&lt;br /&gt;
&lt;br /&gt;
=== How do I build models with more than one output ===&lt;br /&gt;
&lt;br /&gt;
Sometimes you have multiple responses that you want to model at once.  See [[Running#Models_with_multiple_outputs]]&lt;br /&gt;
&lt;br /&gt;
=== How do I turn off adaptive sampling (run the toolbox for a fixed set of samples)? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Adaptive Modeling Mode]].&lt;br /&gt;
&lt;br /&gt;
=== How do I change the error function (relative error, RMSE, ...)? ===&lt;br /&gt;
&lt;br /&gt;
The [[Measures| &amp;lt;Measure&amp;gt;]] tag specifies the algorithm to use to assign models a score, e.g., [[Measures#CrossValidation| CrossValidation]].  It is also possible to specify which &#039;&#039;&#039;error function&#039;&#039;&#039; to  use, in the measure.  The default error function is &#039;&amp;lt;code&amp;gt;rootRelativeSquareError&amp;lt;/code&amp;gt;&#039;.&lt;br /&gt;
&lt;br /&gt;
Say you want to use [[Measures#CrossValidation| CrossValidation]] with the maximum absolute error, then you would put:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type=&amp;quot;CrossValidation&amp;quot; target=&amp;quot;0.001&amp;quot; errorFcn=&amp;quot;maxAbsoluteError&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the other hand, if you wanted to use the [[Measures#ValidationSet| ValidationSet]] measure with a relative root-mean-square error you would put:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type=&amp;quot;ValidationSet&amp;quot; target=&amp;quot;0.001&amp;quot; errorFcn=&amp;quot;relativeRms&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default error function is &#039;&amp;lt;code&amp;gt;rootRelativeSquareError&amp;lt;/code&amp;gt;&#039;.  These error functions can be found in the &amp;lt;code&amp;gt;src/matlab/tools/errorFunctions&amp;lt;/code&amp;gt; directory.  You are free to modify them and add your own.  Remember that the choice of error function is very important! Make sure you think well about it.  Also see [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
=== How do I enable more profilers? ===&lt;br /&gt;
&lt;br /&gt;
Go to the [[Config:ContextConfig#Profiling| &amp;lt;Profiling&amp;gt;]] tag and put &amp;lt;code&amp;gt;&amp;quot;&amp;lt;nowiki&amp;gt;.*&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; as the regular expression.  See also the next question.&lt;br /&gt;
&lt;br /&gt;
=== What regular expressions can I use to filter profilers? ===&lt;br /&gt;
&lt;br /&gt;
See the syntax [http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html here].&lt;br /&gt;
&lt;br /&gt;
=== How can I ensure deterministic results? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Random state]].&lt;br /&gt;
&lt;br /&gt;
=== How do I get a simple closed-form model (symbolic expression)? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Using a model]].&lt;br /&gt;
&lt;br /&gt;
=== How do I enable the Heterogenous evolution to automatically select the best model type? ===&lt;br /&gt;
&lt;br /&gt;
Simply use the [[Config:AdaptiveModelBuilder#heterogenetic| heterogenetic modelbuilder]] as you would any other.&lt;br /&gt;
&lt;br /&gt;
=== What is the combineOutputs option? ===&lt;br /&gt;
&lt;br /&gt;
See [[Running#Models_with_multiple_outputs]]&lt;br /&gt;
&lt;br /&gt;
=== What error function should I use? ===&lt;br /&gt;
&lt;br /&gt;
The default error function is the Root Relative Square Error (RRSE).  On the other hand meanRelativeError may be more intuitive but in that case you have to be careful if you have function values close to zero since in that case the relative error explodes or even gives infinity.  You could also use one of the combined relative error functions (contain a +1 in the denominator to account for small values) but then you get something between a relative and absolute error (=&amp;gt; hard to interpret).&lt;br /&gt;
&lt;br /&gt;
So to be sure an absolute error seems the safest bet (like the RMSE), however in that case you have to come up with sensible accuracy targets and realize that you will build models that try to fit the regions of high absolute value better than the low ones.&lt;br /&gt;
&lt;br /&gt;
Picking an error function is a very tricky business and many people do not realize this.  Which one is best for you and what targets you use ultimately depends on your application and on what kind of model you want.  There is no general answer.&lt;br /&gt;
&lt;br /&gt;
A recommended read is [http://www.springerlink.com/content/24104526223221u3/ is this paper].  See also the page on [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
=== I just want to generate an initial design (no sampling, no modeling) ===&lt;br /&gt;
&lt;br /&gt;
Do a regular SUMO run, except set the &#039;maxModelingIterations&#039; in the SUMO tag to 0.  The resulting run will only generate (and evaluate) the initial design and save it to samples.txt in the output directory.&lt;br /&gt;
&lt;br /&gt;
=== How do I start a run with the samples of of a previous run, or with a custom initial design? ===&lt;br /&gt;
&lt;br /&gt;
Use a Dataset design component, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;InitialDesign type=&amp;quot;DatasetDesign&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;file&amp;quot; value=&amp;quot;/path/to/the/file/containing/the/points.txt&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/InitialDesign&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The points of a previous run can be found in the samples.txt file in the output directory of the run you want to continue.&lt;br /&gt;
&lt;br /&gt;
As a sidenote, remark you can start the toolbox with *data points* of a previous run, but not with the *models* of a previous run.&lt;br /&gt;
&lt;br /&gt;
=== What is a level plot? ===&lt;br /&gt;
&lt;br /&gt;
A level plot is a plot that shows how the error histogram changes as the best model improves. An example is:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:levelplot.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Level plots only work if you have a separate dataset (test set) that the model can be checked against.  See the comments in default.xml for how to enable level plots.&lt;br /&gt;
&lt;br /&gt;
===I am getting a java out of memory error, what happened?===&lt;br /&gt;
Datasets are loaded through java. This means that the java heap space is used for storing the data. If you try to load a huge dataset (&amp;gt; 50MB), you might experience problems with the maximum heap size. You can solve this by raising the heap size as described on the following webpage:&lt;br /&gt;
[http://www.mathworks.com/support/solutions/data/1-18I2C.html]&lt;br /&gt;
&lt;br /&gt;
=== How do I force the output of the model to lie in a certain range ===&lt;br /&gt;
&lt;br /&gt;
See [[Measures#MinMax]].&lt;br /&gt;
&lt;br /&gt;
=== My problem is high dimensional and has a lot of input parameters (more than 10).  Can I use SUMO? ===&lt;br /&gt;
&lt;br /&gt;
That depends.  Remember that the main focus of SUMO is to generate accurate &#039;global&#039; models. If you want to do sampling the practical dimensionality is limited to around 6-8 (though it depends on the problem and how cheap the simulations are!).  Since the more dimensions the more space you need to fill.  At that point you need to see if you can extend the models with domain specific knowledge (to improve performance) or apply a dimensionality reduction method ([[FAQ#Can_the_toolbox_tell_me_which_are_the_most_important_inputs_.28.3D_variable_selection.29.3F|see the next question]]).  On the other hand, if you don&#039;t need to do sample selection but you have a fixed dataset which you want to model.  Then the performance on high dimensional data just depends on the model type.  For examples SVM type models are independent of the dimension and thus can always be applied.  Though things like feature selection are always recommended.&lt;br /&gt;
&lt;br /&gt;
=== Can the toolbox tell me which are the most important inputs (= variable selection)? ===&lt;br /&gt;
&lt;br /&gt;
When tackling high dimensional problems a crucial question is &amp;quot;Are all my input parameters relevant?&amp;quot;.  Normally domain knowledge would answer this question but this is not always straightforward. In those cases a whole set of algorithms exist for doing dimensionality reduction (= feature selection).  Support for some of these algorithms may eventually make it into the toolbox but are not currently implemented.  That is a whole PhD thesis on its own.  However, if a model type provides functions for input relevance determination the toolbox can leverage this.  For example, the LS-SVM model available in the toolbox supports Automatic Relevance Determination (ARD).  This means that if you use the SUMO Toolbox to generate an LS-SVM model, you can call the function &#039;&#039;ARD()&#039;&#039; on the model and it will give you a list of the inputs it thinks are most important.&lt;br /&gt;
&lt;br /&gt;
=== Should I use a Matlab script or a shell script for interfacing with my simulation code? ===&lt;br /&gt;
&lt;br /&gt;
When you want to link SUMO with an external simulation engine (ADS Momentum, SPECTRE, FEBIO, SWAT, ...) you need a [http://en.wikipedia.org/wiki/Shell_script shell script] (or executable) that can take the requested points from SUMO, setup the simulation engine (e.g., set necessary input files), calls the simulator for all the requested points, reads the output (e.g., one or more output files), and returns the results to SUMO (see [[Interfacing with the toolbox]]).&lt;br /&gt;
&lt;br /&gt;
Which one you choose (matlab script + [[Config:SampleEvaluator#matlab|Matlab Sample Evaluator]], or shell script/executable with [[Config:SampleEvaluator#local|Local Sample Evaluator]] is basically a matter of preference, take whatever is easiest for you.&lt;br /&gt;
&lt;br /&gt;
HOWEVER, there is one important consideration: Matlab does not support threads so this means that if you use a matlab script to interface with the simulation engine, simulations and modeling will happen sequentially, NOT in parallel.  This means the modeling code will sit around waiting, doing nothing, until the simulation(s) have finished.  If your simulation code takes a long time to run this is not very efficient.&lt;br /&gt;
&lt;br /&gt;
On the other hand, using a shell script/executable, does allow the modeling and simulation to occur in parallel (at least if you wrote your interface script in such a way that it can be run multiple times in parallel, i.e., no shared global directories or variables that can cause [http://en.wikipedia.org/wiki/Race_condition race conditions]).&lt;br /&gt;
&lt;br /&gt;
As a sidenote, note that if you already put work into a Matlab script, it is still possible to use a shell script, by writing a shell script that starts Matlab (using -nodisplay or -nojvm options), executes your script (using the -r option), and exits Matlab again.  Of course it is not very elegant and adds some overhead but depending on your situation it may be worth it.&lt;br /&gt;
&lt;br /&gt;
=== Does SUMO support discrete inputs/outputs ===&lt;br /&gt;
&lt;br /&gt;
Not, if you mean in a smart way.  There is a way to flag an input/output as discrete but it is not used anywhere.  It is on the wishlist but we have not been able to get to it yet.  Discrete inputs are just handled as if they were continuous.  Depending on how many levels there are and if there is an ordering this may work ok or not work at all.  You could of course add your own model type that can handle these :)  As for discrete outputs see [[FAQ#What_about_classification_problems.3F]].&lt;br /&gt;
&lt;br /&gt;
=== How can I look at the internal structure of a SUMO model ===&lt;br /&gt;
&lt;br /&gt;
See [[Using_a_model#Available_methods]].&lt;br /&gt;
&lt;br /&gt;
=== Is there any design documentation available? ===&lt;br /&gt;
&lt;br /&gt;
An in depth overview of the rationale and philosophy, including a treatment of the software architecture underlying the SUMO Toolbox is available in the form of a PhD dissertation.  A copy of this dissertation [http://www.sumo.intec.ugent.be/?q=system/files/2010_04_PhD_DirkGorissen.pdf is available here].&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== I have a problem and I want to report it ===&lt;br /&gt;
&lt;br /&gt;
See : [[Reporting problems]].&lt;br /&gt;
&lt;br /&gt;
=== I sometimes get flat models when using rational functions ===&lt;br /&gt;
&lt;br /&gt;
First make sure the model is indeed flat, and does not just appear so on the plot. You can verify this by looking at the output axis range and making sure it is within reasonable bounds. When there are poles in the model, the axis range is sometimes stretched to make it possible to plot the high values around the pole, causing the rest of the model to appear flat. If the model contains poles, refer to the next question for the solution.&lt;br /&gt;
&lt;br /&gt;
The [[Config:AdaptiveModelBuilder#rational| RationalModel]] tries to do a least squares fit, based on which monomials are allowed in numerator and denominator. We have experienced that some models just find a flat model as the best least squares fit. There are two causes for this:&lt;br /&gt;
&lt;br /&gt;
* The number of sample points is few, and the model parameters (as explained [[Model types explained#PolynomialModel|here]]) force the model to use only a very small set of degrees of freedom.  The solution in this case is to increase the minimum percentage bound in the RationalFactory section of your configuration file: change the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option to &amp;lt;code&amp;gt;&amp;quot;60,100&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;80,100&amp;quot;&amp;lt;/code&amp;gt;,  or even &amp;lt;code&amp;gt;&amp;quot;100,100&amp;quot;&amp;lt;/code&amp;gt;.  A setting of &amp;lt;code&amp;gt;&amp;quot;100,100&amp;quot;&amp;lt;/code&amp;gt; will force the polynomial models to always exactly interpolate.  However, note that this does not scale very well with the number of samples (to counter this you can set &amp;lt;code&amp;gt;&amp;quot;maxDegrees&amp;quot;&amp;lt;/code&amp;gt;). If, after increasing the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; you still get weird, spiky, models you simply need more samples or you should switch to a different model type.&lt;br /&gt;
* Another possibility is that given a set of monomial degrees, the flat function is just the best possible least squares fit. In that case you simply need to wait for more samples.&lt;br /&gt;
* The measure you are using is not accurately estimating the true error, try a different measure or error function.  Note that a maximum relative error is dangerous to use since a the 0-function (= a flat model) has a lower maximum relative error than a function which overshoots the true behavior in some places but is otherwise correct.&lt;br /&gt;
&lt;br /&gt;
=== When using rational functions I sometimes get &#039;spikes&#039; (poles) in my model ===&lt;br /&gt;
&lt;br /&gt;
When the denominator polynomial of a rational model has zeros inside the domain, the model will tend to infinity near these points. In most cases these models will only be recognized as being `the best&#039; for a short period of time. As more samples get selected these models get replaced by better ones and the spikes should disappear.&lt;br /&gt;
&lt;br /&gt;
So, it is possible that a rational model with &#039;spikes&#039; (caused by poles inside the domain) will be selected as best model. This may or may not be an issue, depending on what you want to use the model for. If it doesn&#039;t matter that the model is very inaccurate at one particular, small spot (near the pole), you can use the model with the pole and it should perform properly.&lt;br /&gt;
&lt;br /&gt;
However, if the model should have a reasonable error on the entire domain, several methods are available to reduce the chance of getting poles or remove the possibility altogether. The possible solutions are:&lt;br /&gt;
&lt;br /&gt;
* Simply wait for more data, usually spikes disappear (but not always).&lt;br /&gt;
* Lower the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option in the RationalFactory section of your configuration file.  For example, say you have 500 data points and if the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option is set to 100 percent it means the degrees of the polynomials in the rational function can go up to 500.  If you set the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option to 10, on the other hand, the maximum degree is set at 50 (= 10 percent of 500).  You can also use the &amp;lt;code&amp;gt;&amp;quot;maxDegrees&amp;quot;&amp;lt;/code&amp;gt; option to set an absolute bound.&lt;br /&gt;
* If you roughly know the output range your data should have, an easy way to eliminate poles is to use the [[Measures#MinMax| MinMax]] [[Measures| Measure]] together with your current measure ([[Measures#CrossValidation| CrossValidation]] by default).  This will cause models whose response falls outside the min-max bounds to be penalized extra, thus spikes should disappear.&lt;br /&gt;
* Use a different model type (RBF, ANN, SVM,...), as spikes are a typical problem of rational functions.&lt;br /&gt;
* Increase the population size if using the genetic version&lt;br /&gt;
* Try using the [[SampleSelector#RationalPoleSuppressionSampleSelector| RationalPoleSuppressionSampleSelector]], it was designed to get rid of this problem more quickly, but it only selects one sample at the time.&lt;br /&gt;
&lt;br /&gt;
However, these solutions may not still not suffice in some cases.  The underlying reason is that the order selection algorithm contains quite a lot of randomness, making it prone to over-fitting.  This issue is being worked on but will take some time.  Automatic order selection is not an easy problem&lt;br /&gt;
&lt;br /&gt;
=== There is no noise in my data yet the rational functions don&#039;t interpolate ===&lt;br /&gt;
&lt;br /&gt;
[[FAQ#I sometimes get flat models when using rational functions |see this question]].&lt;br /&gt;
&lt;br /&gt;
=== When loading a model from disk I get &amp;quot;Warning: Class &#039;:all:&#039; is an unknown object class.  Object &#039;model&#039; of this class has been converted to a structure.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You are trying to load a model file without the SUMO Toolbox in your Matlab path.  Make sure the toolbox is in your Matlab path. &lt;br /&gt;
&lt;br /&gt;
In short: Start Matlab, run &amp;lt;code&amp;gt;&amp;lt;SUMO-Toolbox-directory&amp;gt;/startup.m&amp;lt;/code&amp;gt; (to ensure the toolbox is in your path) and then try to load your model.&lt;br /&gt;
&lt;br /&gt;
=== When running the SUMO Toolbox you get an error like &amp;quot;No component with id &#039;annpso&#039; of type &#039;adaptive model builder&#039; found in config file.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This means you have specified to use a component with a certain id (in this case an AdaptiveModelBuilder component with id &#039;annpso&#039;) but a component with that id does not exist further down in the configuration file (in this particular case &#039;annpso&#039; does not exist but &#039;anngenetic&#039; or &#039;ann&#039; does, as a quick search through the configuration file will show).  So make sure you only declare components which have a definition lower down.  So see which components are available, simply scroll down the configuration file and see which id&#039;s are specified.  Please also refer to the [[Toolbox configuration#Declarations and Definitions | Declarations and Definitions]] page.&lt;br /&gt;
&lt;br /&gt;
=== When using NANN models I sometimes get &amp;quot;Runtime error in matrix library, Choldc failed. Matrix not positive definite&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This is a problem in the mex implementation of the [http://www.iau.dtu.dk/research/control/nnsysid.html NNSYSID] toolbox.  Simply delete the mex files, the Matlab implementation will be used and this will not cause any problems.&lt;br /&gt;
&lt;br /&gt;
=== When using FANN models I sometimes get &amp;quot;Invalid MEX-file createFann.mexa64, libfann.so.2: cannot open shared object file: No such file or directory.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This means Matlab cannot find the [http://leenissen.dk/fann/ FANN] library itself to link to dynamically.  Make sure the FANN libraries (stored in src/matlab/contrib/fann/src/.libs/) are in your library path, e.g., on unix systems, make sure they are included in LD_LIBRARY_PATH.&lt;br /&gt;
&lt;br /&gt;
=== Undeﬁned function or method ’createFann’ for input arguments of type ’double’. ===&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#When_using_FANN_models_I_sometimes_get_.22Invalid_MEX-file_createFann.mexa64.2C_libfann.so.2:_cannot_open_shared_object_file:_No_such_file_or_directory..22]]&lt;br /&gt;
&lt;br /&gt;
=== When trying to use SVM models I get &#039;Error during fitness evaluation: Error using ==&amp;gt; svmtrain at 170, Group must be a vector&#039; ===&lt;br /&gt;
&lt;br /&gt;
You forgot to build the SVM mex files for your platform.  For windows they are pre-compiled for you, on other systems you have to compile them yourself with the makefile.&lt;br /&gt;
&lt;br /&gt;
=== When running the toolbox you get something like &#039;??? Undefined variable &amp;quot;ibbt&amp;quot; or class &amp;quot;ibbt.sumo.config.ContextConfig.setRootDirectory&amp;quot;&#039; ===&lt;br /&gt;
&lt;br /&gt;
First see [[FAQ#What_is_the_relationship_between_Matlab_and_Java.3F | this FAQ entry]].&lt;br /&gt;
&lt;br /&gt;
This means Matlab cannot find the needed Java classes.  This typically means that you forgot to run &#039;startup&#039; (to set the path correctly) before running the toolbox (using &#039;go&#039;).  So make sure you always run &#039;startup&#039; before running &#039;go&#039; and that both commands are always executed in the toolbox root directory.&lt;br /&gt;
&lt;br /&gt;
If you did run &#039;startup&#039; correctly and you are still getting an error, check that Java is properly enabled:&lt;br /&gt;
&lt;br /&gt;
# typing &#039;usejava jvm&#039; should return 1 &lt;br /&gt;
# typing &#039;s = java.lang.String&#039;, this should &#039;&#039;not&#039;&#039; give an error&lt;br /&gt;
# typing &#039;version(&#039;-java&#039;)&#039; should return at least version 1.5.0&lt;br /&gt;
&lt;br /&gt;
If (1) returns 0, then the jvm of your Matlab installation is not enabled.  Check your Matlab installation or startup parameters (did you start Matlab with -nojvm?)&lt;br /&gt;
If (2) fails but (1) is ok, there is a very weird problem, check the Matlab documentation.&lt;br /&gt;
If (3) returns a version before 1.5.0 you will have to upgrade Matlab to a newer version or force Matlab to use a custom, newer, jvm (See the Matlab docs for how to do this).&lt;br /&gt;
&lt;br /&gt;
=== You get errors related to &#039;&#039;gaoptimset&#039;&#039;,&#039;&#039;psoptimset&#039;&#039;,&#039;&#039;saoptimset&#039;&#039;,&#039;&#039;newff&#039;&#039; not being found or unknown ===&lt;br /&gt;
&lt;br /&gt;
You are trying to use a component of the SUMO toolbox that requires a Matlab toolbox that you do not have.  See the [[System requirements]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== After upgrading I get all kinds of weird errors or warnings when I run my XML files ===&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#How_do_I_upgrade_to_a_newer_version.3F]]&lt;br /&gt;
&lt;br /&gt;
=== I get a warning about duplicate samples being selected, why is this? ===&lt;br /&gt;
&lt;br /&gt;
Sometimes, in special circumstances, multiple sample selectors may select the same sample at the same time. Even though in most cases this is detected and avoided, it can still happen when multiple outputs are modelled in one run, and each output is sampled by a different sample selector. These sample selectors may then accidentally choose the same new sample location.&lt;br /&gt;
&lt;br /&gt;
=== I sometimes see the error of the best model go up, shouldn&#039;t it decrease monotonically? ===&lt;br /&gt;
&lt;br /&gt;
There is no short answer here, it depends on the situation.  Below &#039;single objective&#039; refers to the case where during the hyperparameter optimization (= the modeling iteration) combineOutputs=false, and there is only a single measure set to &#039;on&#039;.  The other cases are classified as &#039;multi objective&#039;.  See also [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Sampling off&#039;&#039;&#039;&lt;br /&gt;
## &#039;&#039;Single objective&#039;&#039;: the error should always decrease monotonically, you should never see it rise. If it does [[reporting problems|report it as a bug]]&lt;br /&gt;
## &#039;&#039;Multi objective&#039;&#039;: There is a very small chance the error can temporarily decrease but it should be safe to ignore.  In this case it is best to use a multi objective enabled modeling algorithm&lt;br /&gt;
# &#039;&#039;&#039;Sampling on&#039;&#039;&#039;&lt;br /&gt;
## &#039;&#039;Single objective&#039;&#039;: inside each modeling iteration the error should always monotonically decrease.  At each sampling iteration the best models are updated (to reflect the new data), thus there the best model score may increase, this is normal behavior(*).  It is possible that the error increases for a short while, but as more samples come in it should decrease again.  If this does not happen you are using a poor measure or poor hyperparameter optimization algorithm, or there is a problem with the modeling technique itself (e.g., clustering in the datapoints is causing numerical problems).&lt;br /&gt;
## &#039;&#039;Multi objective&#039;&#039;: Combination of 1.2 and 2.1.&lt;br /&gt;
&lt;br /&gt;
(*) This is normal if you are using a measure like cross validation that is less reliable on little data than on more data.  However, in some cases you may wish to override this behavior if you are using a measure that is independent of the number of samples the model is trained with (e.g., a dense, external validation set).  In this case you can force a monotonic decrease by setting the &#039;keepOldModels&#039; option in the SUMO tag to true.  Use with caution!&lt;br /&gt;
&lt;br /&gt;
=== At the end of a run I get Undefined variable &amp;quot;ibbt&amp;quot; or class &amp;quot;ibbt.sumo.util.JpegImagesToMovie.createMovie&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This is normal, the warning printed out before the error explains why:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[WARNING] jmf.jar not found in the java classpath, movie creation may not work! Did you install the SUMO extension pack? Alternatively you can install the java media framwork from java.sun.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By default, at the end of a run, the toolbox will try to generate a movie of all the intermediate model plots.  To do this it requires the extension pack to be installed (you can download it from the SUMO lab website).  So install the extension pack and you will no longer get the error.  Alternatively you can simply set the &amp;quot;createMovie&amp;quot; option in the &amp;lt;SUMO&amp;gt; tag to &amp;quot;false&amp;quot;.&lt;br /&gt;
So note that there is nothing to worry about, everything has run correctly, it is just the movie creation that is failing.&lt;br /&gt;
&lt;br /&gt;
=== On startup I get the error &amp;quot;java.io.IOException: Couldn&#039;t get lock for output/SUMO-Toolbox.%g.%u.log&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This error means that SUMO is unable to create the log file.  Check the output directory exists and has the correct permissions.  If  your output directory is on a shared (network) drive this could also cause problems.  Also make sure you are running the toolbox (calling &#039;go&#039;) from the toolbox root directory, and not in some toolbox sub directory! This is very important.&lt;br /&gt;
&lt;br /&gt;
If you still have problems you can override the default logfile name and location as follows:&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;FileHandler&amp;gt; tag inside the &amp;lt;Logging&amp;gt; tag add the following option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;Option key=&amp;quot;Pattern&amp;quot; value=&amp;quot;My_SUMO_Log_file.log&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This means that from now on the sumo log file will be saved as the file &amp;quot;My_SUMO_Log_file.log&amp;quot; in the SUMO root directory.  You can use any path you like.&lt;br /&gt;
For more information about this option see [http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/FileHandler.html the FileHandler Javadoc].&lt;br /&gt;
&lt;br /&gt;
=== The Toolbox crashes with &amp;quot;Too many open files&amp;quot; what should I do? ===&lt;br /&gt;
&lt;br /&gt;
This is a known bug, see [[Known_bugs#Version_6.1]].&lt;br /&gt;
&lt;br /&gt;
If this does not fix your problem then do the following:&lt;br /&gt;
&lt;br /&gt;
On Windows try increasing the limit in windows as dictated by the error message.  Also, when you get the error, use the fopen(&amp;quot;all&amp;quot;) command to see which files are open and send us the list of filenames.  Then we can maybe further help you debug the problem.  Even better would be to use the Process Explorer utility [http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx available here]. When you get the error, dont shut down Matlab but start Process explorer and see which SUMO-Toolbox related files are open.  If you then [[Reporting_problems|let us know]] we can further debug the problem.&lt;br /&gt;
&lt;br /&gt;
On Linux again don&#039;t shut down Matlab but:&lt;br /&gt;
&lt;br /&gt;
* open a new terminal window&lt;br /&gt;
* type:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsof &amp;gt; openFiles.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Then [[Contact|send us]] the following information:&lt;br /&gt;
** the file openFiles.txt &lt;br /&gt;
** the exact Linux distribution you are using (Red Hat 10, CentOS 5, SUSE 11, etc).&lt;br /&gt;
** the output of&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
uname -a ; df -T ; mount&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a temporary workaround you can try increasing the maximum number of open files ([http://www.linuxforums.org/forum/redhat-fedora-linux-help/64716-where-chnage-file-max-permanently.html see for example here]).  We are currently debugging this issue.&lt;br /&gt;
&lt;br /&gt;
In general: to be safe it is always best to do a SUMO run from a clean Matlab startup, especially if the run is important or may take a long time.&lt;br /&gt;
&lt;br /&gt;
=== When using the LS-SVM models I get lots of warnings: &amp;quot;make sure lssvmFILE.x (lssvmFILE.exe) is in the current directory, change now to MATLAB implementation...&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
The LS-SVMs have a C implementation and a Matlab implementation.  If you dont have the compiled mex files it will use the matlab implementation and give a warning.  But everything will work properly.  To get rid of the warnings, compile the mex files [[Installation#Windows|as described here]], this can be done very easily.  Or simply comment out the lines that produce the output in the lssvmlab directory in src/matlab/contrib.&lt;br /&gt;
&lt;br /&gt;
=== I get an error &amp;quot;Undefined function or method &#039;trainlssvm&#039; for input arguments of type &#039;cell&#039;&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You most likely forgot to [[Installation#Extension_pack|install the extension pack]].&lt;br /&gt;
&lt;br /&gt;
=== When running the SUMO-Toolbox under Linux, the [http://en.wikipedia.org/wiki/X_Window_System X server] suddenly restarts and I am logged out of my session ===&lt;br /&gt;
&lt;br /&gt;
Note that in Linux there is an explicit difference between the [http://en.wikipedia.org/wiki/Linux_kernel kernel] and the [http://en.wikipedia.org/wiki/X_Window_System X display server].  If the kernel crashes or panics your system completely freezes (you have to reset manually) or your computer does a full reboot.  Luckily this is very rare.  However, if you display server (X) crashes or restarts it means your operating system is still running fine, its just that you have to log in again since your graphical session has terminated.  The FAQ entry is only for the latter.  If you find your kernel is panicing or freezing, that is a more fundamental problem and you should contact your system admin.&lt;br /&gt;
&lt;br /&gt;
So what happens is that after a few seconds when the toolbox wants to plot the first model [http://en.wikipedia.org/wiki/X_Window_System X] crashes and you are suddenly presented with a login screen.  The problem is not due to SUMO but rather to the Matlab - Display server interaction.&lt;br /&gt;
&lt;br /&gt;
What you should first do is set plotModels to false in the [[Config:ContextConfig]] tag, run again and see if the problem occurs again.  If it does please [[Reporting_problems| report it]].  If the problem does not occur you can then try the following:&lt;br /&gt;
&lt;br /&gt;
* Log in as root (or use [http://en.wikipedia.org/wiki/Sudo sudo])&lt;br /&gt;
* Edit the following configuration file using a text editor (pico, nano, vi, kwrite, gedit,...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/etc/X11/xorg.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: the exact location of the xorg.conf file may vary on your system.&lt;br /&gt;
&lt;br /&gt;
* Look for the following line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  Load         &amp;quot;glx&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Comment it out by replacing it by:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#  Load         &amp;quot;glx&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then save the file, restart your X server (if you do not know how to do this simply reboot your computer)&lt;br /&gt;
* Log in again, and try running the toolbox (making sure plotModels is set to true again).  It should now work.  If it still does not please [[Reporting_problems| report it]].&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* this is just an empirical workaround, if you have a better idea please [[Contact|let us know]]&lt;br /&gt;
* if you wish to debug further yourself please check the Xorg log files and those in /var/log&lt;br /&gt;
* another possible workaround is to start matlab with the &amp;quot;-nodisplay&amp;quot; option.  That could work as well.&lt;br /&gt;
&lt;br /&gt;
=== I get the error &amp;quot;Failed to close Matlab pool cleanly, error is Too many output arguments&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This happens if you run the toolbox on Matlab version 2008a and you have the parallel computing toolbox installed.  You can simply ignore this error message, it does not cause any problems. If you want to use SUMO with the parallel computing toolbox you will need Matlab 2008b.&lt;br /&gt;
&lt;br /&gt;
=== The toolbox seems to keep on running forever, when or how will it stop? ===&lt;br /&gt;
&lt;br /&gt;
The toolbox will keep on generating models and selecting data until one of the termination criteria has been reached. It is up to &#039;&#039;you&#039;&#039; to choose these targets carefully, so how low the toolbox runs simply depends on what targets you choose.  Please see [[Running#Understanding_the_control_flow]].&lt;br /&gt;
&lt;br /&gt;
Of course choosing a-priori targets up front is not always easy and there is no real solution for this, except thinking well about what type of model you want (see [[FAQ#I_dont_like_the_final_model_generated_by_SUMO_how_do_I_improve_it.3F]]).  In doubt you can always use a small value (or 0) and then simply quit the running toolbox using Ctrl-C when you think its been enough.&lt;br /&gt;
&lt;br /&gt;
While one could implement fancy, automatic stopping algorithms, their actual benefit is questionable.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=FAQ&amp;diff=5556</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=FAQ&amp;diff=5556"/>
		<updated>2011-07-07T08:42:45Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Using */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
=== What is a global surrogate model? ===&lt;br /&gt;
&lt;br /&gt;
A global [http://en.wikipedia.org/wiki/Surrogate_model surrogate model] is a mathematical model that mimics the behavior of a computationally expensive simulation code over &#039;&#039;&#039;the complete parameter space&#039;&#039;&#039; as accurately as possible, using as little data points as possible. So note that optimization is not the primary goal, although it can be done as a post-processing step. Global surrogate models are useful for:&lt;br /&gt;
&lt;br /&gt;
* design space exploration, to get a &#039;&#039;feel&#039;&#039; of how the different parameters behave&lt;br /&gt;
* sensitivity analysis&lt;br /&gt;
* &#039;&#039;what-if&#039;&#039; analysis&lt;br /&gt;
* prototyping&lt;br /&gt;
* visualization&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
In addition they are a cheap way to model large scale systems, multiple global surrogate models can be chained together in a model cascade.&lt;br /&gt;
&lt;br /&gt;
See also the [[About]] page.&lt;br /&gt;
&lt;br /&gt;
=== What about surrogate driven optimization? ===&lt;br /&gt;
&lt;br /&gt;
When coining the term &#039;&#039;&#039;surrogate driven optimization&#039;&#039;&#039; most people associate it with trust-region strategies and simple polynomial models. These frameworks first construct a local surrogate which is optimized to find an optimum. Afterwards, a move limit strategy decides how the local surrogate is scaled and/or moved through the input space. Subsequently the surrogate is rebuild and optimized. I.e. the surrogate zooms in to the global optimum. For instance the [http://www.cs.sandia.gov/DAKOTA/ DAKOTA] Toolbox implements such strategies where the surrogate construction is separated from optimization.&lt;br /&gt;
&lt;br /&gt;
Such a framework was earlier implemented in the SUMO Toolbox but was deprecated as it didn&#039;t fit the philosophy and design of the toolbox. &lt;br /&gt;
&lt;br /&gt;
Instead another, equally powerful, approach was taken. The current optimization framework is in fact a sampling selection strategy that balances local and global search. In other words, it balances between exploring the input space and exploiting the information the surrogate gives us.&lt;br /&gt;
&lt;br /&gt;
A configuration example can be found [[Config:SampleSelector#expectedImprovement|here]].&lt;br /&gt;
&lt;br /&gt;
=== What is (adaptive) sampling? Why is it used? ===&lt;br /&gt;
&lt;br /&gt;
In classical Design of Experiments you need to specify the design of your experiment up-front. Or in other words, you have to say up-front how many data points you need and how they should be distributed.  Two examples are Central Composite Designs and Latin Hypercube designs.  However, if your data is expensive to generate (e.g., an expensive simulation code) it is not clear how many points are needed up-front.  Instead data points are selected adaptively, only a couple at a time.  This process of incrementally selecting new data points in regions that are the most interesting is called adaptive sampling, sequential design, or active learning.  Of course the sampling process needs to start from somewhere so the very first set of points is selected based on a fixed, classic experimental design.  See also [[Running#Understanding_the_control_flow]].&lt;br /&gt;
SUMO provides a number of different sampling algorithms: [[SampleSelector]]&lt;br /&gt;
&lt;br /&gt;
Of course sometimes you dont want to do sampling.  For example if you have a fixed dataset you just want to load all the data in one go and model that.  For how to do this see [[FAQ#How_do_I_turn_off_adaptive_sampling_.28run_the_toolbox_for_a_fixed_set_of_samples.29.3F]].&lt;br /&gt;
&lt;br /&gt;
=== What about dynamical, time dependent data? ===&lt;br /&gt;
&lt;br /&gt;
The original design and purpose was to tackle static input-output systems, where there is no memory. Just a complex mapping that must be learnt and approximated. Of course you can take a fixed time interval and apply the toolbox but that typically is not a desired solution.  Usually you are interested in time series prediction, e.g., given a set of output values from time t=0 to t=k, predict what happens at time t=k+1,k+2,...&lt;br /&gt;
&lt;br /&gt;
The toolbox was originally not intended for this purpose.  However, it is quite easy to add support for recurrent models.  Automatic generation of dynamical models would involve adding a new model type (just like you would add a new regression technique) or require adapting an existing one.  For example it would not be too much work to adapt the ANN or SVM models to support dynamic problems.  The only extra work besides that would be to add a new [[Measures|Measure]] that can evaluate the fidelity of the models&#039; prediction.&lt;br /&gt;
&lt;br /&gt;
Naturally though, you would be unable to use sample selection (since it makes no sense in those problems).  Unless of course there is a specialized need for it.  In that case you would add a new [[SampleSelector]].&lt;br /&gt;
&lt;br /&gt;
For more information on this topic [[Contact]] us.&lt;br /&gt;
&lt;br /&gt;
=== What about classification problems? ===&lt;br /&gt;
&lt;br /&gt;
The main focus of the SUMO Toolbox is on regression/function approximation.  However, the framework for hyperparameter optimization, model selection, etc.  can also be used for classification.  Starting from version 6.3 a demo file is included in the distribution that shows how this works on the well known two spiral test problem.&lt;br /&gt;
&lt;br /&gt;
=== Can the toolbox drive my simulation code directly? ===&lt;br /&gt;
&lt;br /&gt;
Yes it can.  See the [[Interfacing with the toolbox]] page.&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between the M3-Toolbox and the SUMO-Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
The SUMO toolbox is a complete, feature-full framework for automatically generating approximation models and performing adaptive sampling. In contrast, the M3-Toolbox was more of a proof-of-principle.&lt;br /&gt;
&lt;br /&gt;
=== What happened to the M3-Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
The M3 Toolbox project has been discontinued (Fall 2007) and superseded by the SUMO Toolbox. Please contact tom.dhaene@ua.ac.be for any inquiries and requests about the M3 Toolbox.&lt;br /&gt;
&lt;br /&gt;
=== How can I stay up to date with the latest news? ===&lt;br /&gt;
&lt;br /&gt;
To stay up to date with the latest news and releases, we also recommend subscribing to our newsletter [http://www.sumo.intec.ugent.be here].  Traffic will be kept to a minimum (1 message every 2-3 months) and you can unsubscribe at any time.&lt;br /&gt;
&lt;br /&gt;
You can also follow our blog: [http://sumolab.blogspot.com/ http://sumolab.blogspot.com/].&lt;br /&gt;
&lt;br /&gt;
=== What is the roadmap for the future? ===&lt;br /&gt;
&lt;br /&gt;
There is no explicit roadmap since much depends on where our research leads us, what feedback we get, which problems we are working on, etc.  However, to get an idea of features to come you can always check the [[Whats new]] page.&lt;br /&gt;
&lt;br /&gt;
You can also follow our blog: [http://sumolab.blogspot.com/ http://sumolab.blogspot.com/].&lt;br /&gt;
&lt;br /&gt;
=== Will there be an R/Scilab/Octave/Sage/.. version? ===&lt;br /&gt;
&lt;br /&gt;
At the start of the project we considered moving from Matlab to one of the available open source alternatives.  However, after much discussion we decided against this for several reasons, including:&lt;br /&gt;
&lt;br /&gt;
* Existing experience and know-how of the development team&lt;br /&gt;
* The widespread use of the Matlab platform in the target application domains&lt;br /&gt;
* The quality and amount of available Matlab documentation&lt;br /&gt;
* The quality and number of Matlab toolboxes&lt;br /&gt;
* Support for object orientation (inheritance, polymorphism, etc.)&lt;br /&gt;
* Many well documented interfacing options (especially the seamless integration with Java)&lt;br /&gt;
&lt;br /&gt;
Matlab, as a proprietary platform, definitely has its problems and deficiencies but the number of advanced algorithms and available toolboxes make it a very attractive platform.  Equally important is the fact that every function is properly documented, tested, and includes examples, tutorials, and in some cases GUI tools.  A lot of things would have been a lot harder and/or time consuming to implement on one of the other platforms.  Add to that the fact that many engineers (particularly in aerospace) already use Matlab quite heavily.  Thus given our situation, goals, and resources at the time, Matlab was the best choice for us.  &lt;br /&gt;
&lt;br /&gt;
The other platforms remain on our radar however, and we do look into them from time to time.  Though, with our limited resources porting to one of those platforms is not (yet) cost effective.&lt;br /&gt;
&lt;br /&gt;
=== What are collaboration options? ===&lt;br /&gt;
&lt;br /&gt;
We will gladly help out with any SUMO-Toolbox related questions or problems. However, since we are a university research group the most interesting goal for us is to work towards some joint publication (e.g., we can help with the modeling of your problem).  Alternatively, it is always nice if we could use your data/problem (fully referenced and/or anonymized if necessary of course) as an example application during a conference presentation or in a PhD thesis.&lt;br /&gt;
&lt;br /&gt;
The most interesting case is if your problem involves sample selection and modeling.  This means you have some simulation code or script to drive and you want an accurate model while minimizing the number of data points.  In this case, in order for us to optimally help you it would be easiest if we could run your simulation code (or script) locally or access it remotely.  Else its difficult to give good recommendations about what settings to use.&lt;br /&gt;
&lt;br /&gt;
If this is not possible (e.g., expensive, proprietary or secret modeling code) or if your problem does not involve sample selection, you can send us a fixed data set that is representative of your problem. Again, this may be fully anonymized and will be kept confidential of course.&lt;br /&gt;
&lt;br /&gt;
In either case (code or dataset) remember:&lt;br /&gt;
&lt;br /&gt;
* the data file should be an ASCII file in column format (each row containing one data point) (see also [[Interfacing_with_the_toolbox]])&lt;br /&gt;
* include a short description of your data:&lt;br /&gt;
** number of inputs and number of outputs&lt;br /&gt;
** the range of each input (or scaled to [-1 1] if you do not wish to disclose this)&lt;br /&gt;
** if the outputs are real or complex valued&lt;br /&gt;
** how noisy the data is or if it is completely deterministic (computer simulation) (please also see: [[FAQ#My_data_contains_noise_can_the_SUMO-Toolbox_help_me.3F]]).&lt;br /&gt;
** if possible the expected range of each output (or scaled if you do not wish to disclose this)&lt;br /&gt;
** if possible the names of each input/output + a short description of what they mean&lt;br /&gt;
** any further insight you have about the data, expected behavior, expected importance of each input, etc.&lt;br /&gt;
&lt;br /&gt;
If you have any further questions or comments related to this please [[Contact]] us.&lt;br /&gt;
&lt;br /&gt;
=== Can you help me model my problem? ===&lt;br /&gt;
&lt;br /&gt;
Please see the previous question: [[FAQ#What_are_collaboration_options.3F]]&lt;br /&gt;
&lt;br /&gt;
== Installation and Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== What is the relationship between Matlab and Java? ===&lt;br /&gt;
&lt;br /&gt;
Many people do not know this, but your Matlab installation automatically includes a Java virtual machine.  By default, Matlab seamlessly integrates with Java, allowing you to create Java objects from the command line (e.g., &#039;s = java.lang.String&#039;).  It is possible to disable java support but in order to use the SUMO Toolbox it should not be.  To check if Java is enabled you can use the &#039;usejava&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== What is Java, why do I need it, do I have to install it, etc. ? ===&lt;br /&gt;
&lt;br /&gt;
The short answer is: no, dont worry about it.  The long answer is: Some of the code of the SUMO Toolbox is written in [http://en.wikipedia.org/wiki/Java_(programming_language) Java], since it makes a lot more sense in many situations and is a proper programming language instead of a scripting language like Matlab.  Since Matlab automatically includes a JVM to run Java code there is nothing you need to do or worry about (see the previous FAQ entry).  Unless its not working of course, in that case see [[FAQ#When_running_the_toolbox_you_get_something_like_.27.3F.3F.3F_Undefined_variable_.22ibbt.22_or_class_.22ibbt.sumo.config.ContextConfig.setRootDirectory.22.27]].&lt;br /&gt;
&lt;br /&gt;
=== What is XML? ===&lt;br /&gt;
&lt;br /&gt;
XML stands for eXtensible Markup Language and is related to HTML (= the stuff web pages are written in).  The first thing you have to understand is that &#039;&#039;&#039;does not do anything&#039;&#039;&#039;. Honest. Many engineers are not used to it and think it is some complicated computer programming language-stuff-thingy.  This is of course not the case (we ignore some of the fancy stuff you can do with it for now).  XML is a markup language meaning, it provides some rules how you can annotate or structure existing text.&lt;br /&gt;
&lt;br /&gt;
The way SUMO uses XML is really simple and there is not much to understand.  First some simple terminology.  Take the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Foo attr=&amp;quot;bar&amp;quot;&amp;gt;bla bla bla&amp;lt;/Foo&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here we have &#039;&#039;&#039;a tag&#039;&#039;&#039; called &#039;&#039;Foo&#039;&#039; containing text &#039;&#039;bla bla bla&#039;&#039;.  The tag Foo also has an &#039;&#039;&#039;attribute&#039;&#039;&#039; &#039;&#039;attr&#039;&#039; with value &#039;&#039;bar&#039;&#039;.  &#039;&amp;lt;Foo&amp;gt;&#039; is what we call the &#039;&#039;&#039;opening tag&#039;&#039;&#039;, and &#039;&amp;lt;/Foo&amp;gt;&#039; is the &#039;&#039;&#039;closing tag&#039;&#039;&#039;.  Each time you open a tag you must close it again.  How you name the tags or attributes it totally up to you, you choose :)&lt;br /&gt;
&lt;br /&gt;
Lets take a more interesting example.  Here we have used XML to represent information about a receipe for pancakes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;recipe category=&amp;quot;dessert&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;Pancakes&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;sumo@intec.ugent.be&amp;lt;/author&amp;gt;&lt;br /&gt;
  &amp;lt;date&amp;gt;Wed, 14 Jun 95&amp;lt;/date&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
    Good old fashioned pancakes.&lt;br /&gt;
  &amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;ingredients&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
        &amp;lt;amount&amp;gt;3&amp;lt;/amount&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;eggs&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
         &amp;lt;amount&amp;gt;0.5 tablespoon&amp;lt;/amount&amp;gt;&lt;br /&gt;
         &amp;lt;type&amp;gt;salt&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
  &amp;lt;/ingredients&amp;gt;&lt;br /&gt;
  &amp;lt;preparation&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/preparation&amp;gt;&lt;br /&gt;
 &amp;lt;/recipe&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So basically, you see that XML is just a way to structure, order, and group information.  Thats it!  So SUMO basically uses it to store and structure configuration options.  And this works well due to the nice hierarchical nature of XML.&lt;br /&gt;
&lt;br /&gt;
If you understand this there is nothing else to it in order to be able to understand the SUMO configuration files.  If you need more information see the tutorial here: [http://www.w3schools.com/XML/xml_whatis.asp http://www.w3schools.com/XML/xml_whatis.asp].  You can also have a look at the wikipedia page here: [http://en.wikipedia.org/wiki/XML http://en.wikipedia.org/wiki/XML]&lt;br /&gt;
&lt;br /&gt;
=== Why does SUMO use XML? ===&lt;br /&gt;
&lt;br /&gt;
XML is the defacto standard way of structuring information. This ranges from spreadsheet files (Microsoft Excel for example), to configuration data, to scientific data, ...  There are even whole database systems based solely on XML.  So basically, its an intuitive way to structure data and it is used everywhere.  This makes that there are a very large number of libraries and programming languages available that can parse, and handle XML easily.  That means less work for the programmer.  Then of course there is stuff like XSLT, XQuery, etc that makes life even easier.&lt;br /&gt;
So basically, it would not make sense for SUMO to use any other format :)&lt;br /&gt;
&lt;br /&gt;
=== I get an error that SUMO is not yet activated ===&lt;br /&gt;
&lt;br /&gt;
Make sure you installed the activation file that was mailed to you as is explained in the [[Installation]] instructions.  Also double check your system meets the [[System requirements]] and that [http://www.sumowiki.intec.ugent.be/index.php/FAQ#When_running_the_toolbox_you_get_something_like_.27.3F.3F.3F_Undefined_variable_.22ibbt.22_or_class_.22ibbt.sumo.config.ContextConfig.setRootDirectory.22.27|java java is enabled].  To fully verify that the activation file installation is correct ensure that the file ContextConfig.class is present in the directory &#039;&#039;&amp;lt;SUMO installation directory&amp;gt;/bin/java/ibbt/sumo/config&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Please note that more flexible research licenses are available if it is possible to [[FAQ#What_are_collaboration_options.3F|collaborate in any way]].&lt;br /&gt;
&lt;br /&gt;
== Upgrading ==&lt;br /&gt;
&lt;br /&gt;
=== How do I upgrade to a newer version? ===&lt;br /&gt;
&lt;br /&gt;
Delete your old &amp;lt;code&amp;gt;&amp;lt;SUMO-Toolbox-directory&amp;gt;&amp;lt;/code&amp;gt; completely and replace it by the new one.  Install the new activation file / extension pack as  before (see [[Installation]]), start Matlab and make sure the default run works.  To port your old configuration files to the new version: make a copy of default.xml (from the new version) and copy over your custom changes (from the old version) one by one.  This should prevent any weirdness if the XML structure has changed between releases.&lt;br /&gt;
&lt;br /&gt;
If you had a valid activation file for the previous version, just [[Contact]] us (giving your SUMOlab website username) and we will send you a new activation file.  Note that to update an activation file you must first unzip a copy of the toolbox to a new directory and install the activation file as if it was the very first time.  Upgrading of an activation file without performing a new toolbox install is (unfortunately) not (yet) supported.&lt;br /&gt;
&lt;br /&gt;
== Using ==&lt;br /&gt;
&lt;br /&gt;
=== I have no idea how to use the toolbox, what should I do? ===&lt;br /&gt;
&lt;br /&gt;
See: [[Running#Getting_started]]&lt;br /&gt;
&lt;br /&gt;
=== I want to try one of the different examples ===&lt;br /&gt;
&lt;br /&gt;
See [[Running#Running_different_examples]].&lt;br /&gt;
&lt;br /&gt;
=== I want to model my own problem ===&lt;br /&gt;
&lt;br /&gt;
See : [[Adding an example]].&lt;br /&gt;
&lt;br /&gt;
=== I want to contribute some data/patch/documentation/... ===&lt;br /&gt;
&lt;br /&gt;
See : [[Contributing]].&lt;br /&gt;
&lt;br /&gt;
=== How do I interface with the SUMO Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Interfacing with the toolbox]].&lt;br /&gt;
&lt;br /&gt;
=== What configuration options (model type, sample selection algorithm, ...) should I use for my problem? ===&lt;br /&gt;
&lt;br /&gt;
See [[General_guidelines]].&lt;br /&gt;
&lt;br /&gt;
=== Ok, I generated a model, what can I do with it? ===&lt;br /&gt;
&lt;br /&gt;
See: [[Using a model]].&lt;br /&gt;
&lt;br /&gt;
=== How can I share a model created by the SUMO Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Using a model#Model_portability| Model portability]].&lt;br /&gt;
&lt;br /&gt;
=== I dont like the final model generated by SUMO how do I improve it? ===&lt;br /&gt;
&lt;br /&gt;
Before you start the modeling you should really ask youself this question: &#039;&#039;What properties do I want to see in the final model?&#039;&#039;  You have to think about what for you constitutes a good model and what constitutes a poor model. Then you should rank those properties depending on how important you find them.  Examples are:&lt;br /&gt;
&lt;br /&gt;
* accuracy in the training data&lt;br /&gt;
** is it important that the error in the training data is exactly 0, or do you prefer some smoothing&lt;br /&gt;
* accuracy outside the training data&lt;br /&gt;
** this is the validation or test error, how important is proper generalization (usually this is very important)&lt;br /&gt;
* what does accuracy mean to you? a low maximum error, a low average error, both, ...&lt;br /&gt;
* smoothness&lt;br /&gt;
** should your model be perfectly smooth or is it acceptable that you have a few small ripples here and there for example&lt;br /&gt;
* are some regions of the response more important than others?&lt;br /&gt;
** for example you may want to be certain that the minima/maxima are captured very accurately but everything in between is less important&lt;br /&gt;
* are there particular special features that your model should have&lt;br /&gt;
** for example, capture underlying poles or discontinuities correctly&lt;br /&gt;
* extrapolation capability&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
It is important to note that often these criteria may be conflicting.  The classical example is fitting noisy data: the lower your training error the higher your testing error.  A natural approach is to combine multiple criteria, see [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
Once you have decided on a set of requirements the question is then, can the SUMO-Toolbox produce a model that meets them? In SUMO model generation is driven by one or more [[Measures]].  So you should choose the combination of [[Measures]] that most closely match your requirements.  Of course we can not provide a Measure for every single property, but it is very straightforward to [[Add_Measure|add your own Measure]].&lt;br /&gt;
&lt;br /&gt;
Now, lets say you have chosen what you think are the best Measures but you are still not happy with the final model.  Reasons could be:&lt;br /&gt;
&lt;br /&gt;
* you need more modeling iterations or you need to build more models per iteration (see [[Running#Understanding_the_control_flow]]). This will result in a more extensive search of the model parameter space, but will take longer to run.&lt;br /&gt;
* you should switch to a different model parameter optimization algorithm (e.g., for example instead of the Pattern Search variant, try the Genetic Algorithm variant of your AdaptiveModelBuilder.)&lt;br /&gt;
* the model type you are using is not ideally suited to your data&lt;br /&gt;
* there simply is not enough data, use a larger initial design or perform more sampling iterations to get more information per dimension&lt;br /&gt;
* maybe the sample distribution is causing troubles for your model (e.g., Kriging can have problems with clustered data).  In that case it could be worthwhile to choose a different sample selection algorithm.&lt;br /&gt;
* the range of your response variable is not ideal (for example, neural networks have trouble modeling data if the range of the outputs is very very small)&lt;br /&gt;
&lt;br /&gt;
You may also refer to the following [[General_guidelines]].  Finally, of course it may be that your problem is simply a very difficult one and does not approximate well.  But, still you should at least get something satisfactory.&lt;br /&gt;
&lt;br /&gt;
If you are having these kinds of problems, please [[Reporting_problems|let us know]] and we will gladly help out.&lt;br /&gt;
&lt;br /&gt;
=== My data contains noise can the SUMO-Toolbox help me? ===&lt;br /&gt;
&lt;br /&gt;
The original purpose of the SUMO-Toolbox was for it to be used in conjunction with computer simulations.  Since these are fully deterministic you do not have to worry about noise in the data and all the problems it causes.  However, the methods in the toolbox are general fitting methods that work on noisy data as well.  So yes, the toolbox can be used with noisy data, but you will just have to be more careful about how you apply the methods and how you perform model selection.  Its only when you use the toolbox with a noisy simulation engine that a few special  options may need to be set.  In that case [[Contact]] us for more information.&lt;br /&gt;
&lt;br /&gt;
Note though, that the toolbox is not a statistical package, if you have noisy data and you need noise estimation algorithms, kernel smoothing algorithms, etc.  you should look towards other tools.&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between a ModelBuilder and a ModelFactory? ===&lt;br /&gt;
&lt;br /&gt;
See [[Add Model Type]].&lt;br /&gt;
&lt;br /&gt;
=== Why are the Neural Networks so slow? ===&lt;br /&gt;
&lt;br /&gt;
The ANN models are an extremely powerful model type that give very good results in many problems.  However, they are quite slow to use.  There are some things you can do:&lt;br /&gt;
&lt;br /&gt;
* use trainlm or trainscg instead of the default training function trainbr.  trainbr gives very good, smooth results but is slower to use.  If results with trainlm are not good enough, try using msereg as a performance function.&lt;br /&gt;
* try setting the training goal (= the SSE to reach during training) to a small positive number (e.g., 1e-5) instead of 0.&lt;br /&gt;
* check that the output range of your problem is not very small.  If your response data lies between 10e-5 and 10e-9 for example it will be very hard for the neural net to learn it.  In that case rescale your data to a more sane range.&lt;br /&gt;
* switch from ANN to one of the other neural network modelers: fanngenetic or nanngenetic. These are a lot faster than the default backend based on the [http://www.mathworks.com/products/neuralnet/ Matlab Neural Network Toolbox].  However, the accuracy is usually not as good.&lt;br /&gt;
* If you are using [[Measures#CrossValidation| CrossValidation]] try to switch to a different measure since CrossValidation is very expensive to use. CrossValidation is used by default if you have not defined a [[Measures| measure]] yourself.  When using one of the neural network model types, try to use a different measure if you can.  For example, our tests have shown that minimizing the sum of [[Measures#SampleError| SampleError]] and [[Measures#LRMMeasure| LRMMeasure]] can give equal or even better results than CrossValidation, while being much cheaper (see [[Multi-Objective Modeling]] for how to combine multiple measures).  See also the comments in &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; for examples.&lt;br /&gt;
* Finally, as with any model type things will slow down if you have many dimensions or very large amounts of data.  If that is the case, try some dimensionality reduction or subsampling techniques.&lt;br /&gt;
&lt;br /&gt;
See also [[FAQ#How_can_I_make_the_toolbox_run_faster.3F]]&lt;br /&gt;
&lt;br /&gt;
=== How can I make the toolbox run faster? ===&lt;br /&gt;
&lt;br /&gt;
There are a number of things you can do to speed things up.  These are listed below.  Remember though that the main reason the toolbox may seem to be slow is due to the many models being built as part of the hyperparameter optimization.  Please make sure you fully understand the [[Running#Understanding_the_control_flow|control flow described here]] before trying more advanced options.&lt;br /&gt;
&lt;br /&gt;
* First of all check that your virus scanner is not interfering with Matlab. If McAfee or any other program wants to scan every file SUMO generates this really slows things down and your computer becomes unusable.&lt;br /&gt;
&lt;br /&gt;
* Turn off the plotting of models in [[Config:ContextConfig#PlotOptions| ContextConfig]], you can always generate plots from the saved mat files&lt;br /&gt;
&lt;br /&gt;
* This is an important one.  For most model builders there is an option &amp;quot;maxFunEals&amp;quot;, &amp;quot;maxIterations&amp;quot;, or equivalent.  Change this value to change the maximum number of models built between 2 sampling iterations.  The higher this number, the slower, but the better the models &#039;&#039;may&#039;&#039; be.  Equivalently, for the Genetic model builders reduce the population size and the number of generations.&lt;br /&gt;
&lt;br /&gt;
* If you are using [[Measures#CrossValidation]] see if you can avoid it and use one of the other measures or a combination of measures (see [[Multi-Objective Modeling]]&lt;br /&gt;
&lt;br /&gt;
* If you are using a very dense [[Measures#ValidationSet]] as your Measure, this means that every single model will be evaluated on that data set.  For some models like RBF, Kriging, SVM, this can slow things down.&lt;br /&gt;
&lt;br /&gt;
* Disable some, or even all of the [[Config:ContextConfig#Profiling| profilers]] or disable the output handlers that draw charts.  For example, you might use the following configuration for the profilers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Profiling&amp;gt;&lt;br /&gt;
	&amp;lt;Profiler name=&amp;quot;.*share.*|.*ensemble.*|.*Level.*&amp;quot; enabled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toImage&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toFile&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Profiler&amp;gt;&lt;br /&gt;
			&lt;br /&gt;
	&amp;lt;Profiler name=&amp;quot;.*&amp;quot; enabled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toFile&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Profiler&amp;gt;&lt;br /&gt;
&amp;lt;/Profiling&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;.*&amp;quot; means match any one or more characters ([http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html see here for the full list of supported wildcards]).  Thus in this example all the profilers that have &amp;quot;share&amp;quot;, &amp;quot;ensemble&amp;quot;, or &amp;quot;Level&amp;quot; in their name shoud be enabled and should be saved as a text file (toFile) AND as an image file (toImage).  All the other profilers should be saved just to file. The idea is to only save to image what you want as an image since image generation is expensive.  If you do this or switch off image generation completely you will see everything run much faster.&lt;br /&gt;
&lt;br /&gt;
* Decrease the logging granularity, a log level of FINE (the default is FINEST or ALL) is more then granular enough.  Setting it to FINE, INFO, or even WARNING should speed things up.&lt;br /&gt;
&lt;br /&gt;
* If you have a multi-core/multi-cpu machine:&lt;br /&gt;
** if you have the Matlab Parallel Computing Toolbox, try setting the parallelMode option to true in [[Config:ContextConfig]].  Now all model training occurs in parallel.  This may give unexpected errors in some cases so beware when using.&lt;br /&gt;
** if you are using a native executable or script as the sample evaluator set the threadCount variable in [[Config:SampleEvaluator#LocalSampleEvaluator| LocalSampleEvaluator]] equal to the number of cores/CPUs (only do this if it is ok to start multiple instances of your simulation script in parallel!)&lt;br /&gt;
&lt;br /&gt;
* Dont use the Min-Max measure, it can slow things down. See also [[FAQ#How_do_I_force_the_output_of_the_model_to_lie_in_a_certain_range]]&lt;br /&gt;
&lt;br /&gt;
* If you are using neural networks see [[FAQ#Why_are_the_Neural_Networks_so_slow.3F]]&lt;br /&gt;
&lt;br /&gt;
* If you are having problems with very slow or seemingly hanging runs:&lt;br /&gt;
** Do a run inside the [http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/matlab_env/f9-17018.html&amp;amp;http://www.google.be/search?client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;channel=s&amp;amp;hl=nl&amp;amp;q=matlab+profiler&amp;amp;meta=&amp;amp;btnG=Google+zoeken Matlab profiler] and see where most time is spent.&lt;br /&gt;
&lt;br /&gt;
** Monitor CPU and physical/virtual memory usage while the SUMO toolbox is running and see if you notice anything strange.  &lt;br /&gt;
&lt;br /&gt;
* Also note that by default Matlab only allocates about 117 MB memory space for the Java Virtual Machine. If you would like to increase this limit (which you should) please follow the instructions [http://www.mathworks.com/support/solutions/data/1-18I2C.html?solution=1-18I2C here]. See also the general memory instructions [http://www.mathworks.com/support/tech-notes/1100/1106.html here].&lt;br /&gt;
&lt;br /&gt;
To check if your SUMO run has hanged, monitor your log file (with the level set at least to FINE).  If you see no changes for about 30 minutes the toolbox will probably have stalled.  [[Reporting problems| report the problems here]].&lt;br /&gt;
&lt;br /&gt;
Such problems are hard to identify and fix so it is best to work towards a reproducible test case if you think you found a performance or scalability issue.&lt;br /&gt;
&lt;br /&gt;
=== How do I build models with more than one output ===&lt;br /&gt;
&lt;br /&gt;
Sometimes you have multiple responses that you want to model at once.  See [[Running#Models_with_multiple_outputs]]&lt;br /&gt;
&lt;br /&gt;
=== How do I turn off adaptive sampling (run the toolbox for a fixed set of samples)? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Adaptive Modeling Mode]].&lt;br /&gt;
&lt;br /&gt;
=== How do I change the error function (relative error, RMSE, ...)? ===&lt;br /&gt;
&lt;br /&gt;
The [[Measures| &amp;lt;Measure&amp;gt;]] tag specifies the algorithm to use to assign models a score, e.g., [[Measures#CrossValidation| CrossValidation]].  It is also possible to specify which &#039;&#039;&#039;error function&#039;&#039;&#039; to  use, in the measure.  The default error function is &#039;&amp;lt;code&amp;gt;rootRelativeSquareError&amp;lt;/code&amp;gt;&#039;.&lt;br /&gt;
&lt;br /&gt;
Say you want to use [[Measures#CrossValidation| CrossValidation]] with the maximum absolute error, then you would put:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type=&amp;quot;CrossValidation&amp;quot; target=&amp;quot;0.001&amp;quot; errorFcn=&amp;quot;maxAbsoluteError&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the other hand, if you wanted to use the [[Measures#ValidationSet| ValidationSet]] measure with a relative root-mean-square error you would put:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type=&amp;quot;ValidationSet&amp;quot; target=&amp;quot;0.001&amp;quot; errorFcn=&amp;quot;relativeRms&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default error function is &#039;&amp;lt;code&amp;gt;rootRelativeSquareError&amp;lt;/code&amp;gt;&#039;.  These error functions can be found in the &amp;lt;code&amp;gt;src/matlab/tools/errorFunctions&amp;lt;/code&amp;gt; directory.  You are free to modify them and add your own.  Remember that the choice of error function is very important! Make sure you think well about it.  Also see [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
=== How do I enable more profilers? ===&lt;br /&gt;
&lt;br /&gt;
Go to the [[Config:ContextConfig#Profiling| &amp;lt;Profiling&amp;gt;]] tag and put &amp;lt;code&amp;gt;&amp;quot;&amp;lt;nowiki&amp;gt;.*&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; as the regular expression.  See also the next question.&lt;br /&gt;
&lt;br /&gt;
=== What regular expressions can I use to filter profilers? ===&lt;br /&gt;
&lt;br /&gt;
See the syntax [http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html here].&lt;br /&gt;
&lt;br /&gt;
=== How can I ensure deterministic results? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Random state]].&lt;br /&gt;
&lt;br /&gt;
=== How do I get a simple closed-form model (symbolic expression)? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Using a model]].&lt;br /&gt;
&lt;br /&gt;
=== How do I enable the Heterogenous evolution to automatically select the best model type? ===&lt;br /&gt;
&lt;br /&gt;
Simply use the [[Config:AdaptiveModelBuilder#heterogenetic| heterogenetic modelbuilder]] as you would any other.&lt;br /&gt;
&lt;br /&gt;
=== What is the combineOutputs option? ===&lt;br /&gt;
&lt;br /&gt;
See [[Running#Models_with_multiple_outputs]]&lt;br /&gt;
&lt;br /&gt;
=== What error function should I use? ===&lt;br /&gt;
&lt;br /&gt;
The default error function is the Root Relative Square Error (RRSE).  On the other hand meanRelativeError may be more intuitive but in that case you have to be careful if you have function values close to zero since in that case the relative error explodes or even gives infinity.  You could also use one of the combined relative error functions (contain a +1 in the denominator to account for small values) but then you get something between a relative and absolute error (=&amp;gt; hard to interpret).&lt;br /&gt;
&lt;br /&gt;
So to be sure an absolute error seems the safest bet (like the RMSE), however in that case you have to come up with sensible accuracy targets and realize that you will build models that try to fit the regions of high absolute value better than the low ones.&lt;br /&gt;
&lt;br /&gt;
Picking an error function is a very tricky business and many people do not realize this.  Which one is best for you and what targets you use ultimately depends on your application and on what kind of model you want.  There is no general answer.&lt;br /&gt;
&lt;br /&gt;
A recommended read is [http://www.springerlink.com/content/24104526223221u3/ is this paper].  See also the page on [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
=== I just want to generate an initial design (no sampling, no modeling) ===&lt;br /&gt;
&lt;br /&gt;
Do a regular SUMO run, except set the &#039;maxModelingIterations&#039; in the SUMO tag to 0.  The resulting run will only generate (and evaluate) the initial design and save it to samples.txt in the output directory.&lt;br /&gt;
&lt;br /&gt;
=== How do I start a run with the samples of of a previous run, or with a custom initial design? ===&lt;br /&gt;
&lt;br /&gt;
Use a Dataset design component, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;InitialDesign type=&amp;quot;DatasetDesign&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;file&amp;quot; value=&amp;quot;/path/to/the/file/containing/the/points.txt&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/InitialDesign&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The points of a previous run can be found in the samples.txt file in the output directory of the run you want to continue.&lt;br /&gt;
&lt;br /&gt;
As a sidenote, remark you can start the toolbox with *data points* of a previous run, but not with the *models* of a previous run.&lt;br /&gt;
&lt;br /&gt;
=== What is a level plot? ===&lt;br /&gt;
&lt;br /&gt;
A level plot is a plot that shows how the error histogram changes as the best model improves. An example is:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:levelplot.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Level plots only work if you have a separate dataset (test set) that the model can be checked against.  See the comments in default.xml for how to enable level plots.&lt;br /&gt;
&lt;br /&gt;
===I am getting a java out of memory error, what happened?===&lt;br /&gt;
Datasets are loaded through java. This means that the java heap space is used for storing the data. If you try to load a huge dataset (&amp;gt; 50MB), you might experience problems with the maximum heap size. You can solve this by raising the heap size as described on the following webpage:&lt;br /&gt;
[http://www.mathworks.com/support/solutions/data/1-18I2C.html]&lt;br /&gt;
&lt;br /&gt;
=== How do I force the output of the model to lie in a certain range ===&lt;br /&gt;
&lt;br /&gt;
See [[Measures#MinMax]].&lt;br /&gt;
&lt;br /&gt;
=== My problem is high dimensional and has a lot of input parameters (more than 10).  Can I use SUMO? ===&lt;br /&gt;
&lt;br /&gt;
That depends.  Remember that the main focus of SUMO is to generate accurate &#039;global&#039; models. If you want to do sampling the practical dimensionality is limited to around 6-8 (though it depends on the problem and how cheap the simulations are!).  Since the more dimensions the more space you need to fill.  At that point you need to see if you can extend the models with domain specific knowledge (to improve performance) or apply a dimensionality reduction method ([[FAQ#Can_the_toolbox_tell_me_which_are_the_most_important_inputs_.28.3D_variable_selection.29.3F|see the next question]]).  On the other hand, if you don&#039;t need to do sample selection but you have a fixed dataset which you want to model.  Then the performance on high dimensional data just depends on the model type.  For examples SVM type models are independent of the dimension and thus can always be applied.  Though things like feature selection are always recommended.&lt;br /&gt;
&lt;br /&gt;
=== Can the toolbox tell me which are the most important inputs (= variable selection)? ===&lt;br /&gt;
&lt;br /&gt;
When tackling high dimensional problems a crucial question is &amp;quot;Are all my input parameters relevant?&amp;quot;.  Normally domain knowledge would answer this question but this is not always straightforward. In those cases a whole set of algorithms exist for doing dimensionality reduction (= feature selection).  Support for some of these algorithms may eventually make it into the toolbox but are not currently implemented.  That is a whole PhD thesis on its own.  However, if a model type provides functions for input relevance determination the toolbox can leverage this.  For example, the LS-SVM model available in the toolbox supports Automatic Relevance Determination (ARD).  This means that if you use the SUMO Toolbox to generate an LS-SVM model, you can call the function &#039;&#039;ARD()&#039;&#039; on the model and it will give you a list of the inputs it thinks are most important.&lt;br /&gt;
&lt;br /&gt;
=== Should I use a Matlab script or a shell script for interfacing with my simulation code? ===&lt;br /&gt;
&lt;br /&gt;
When you want to link SUMO with an external simulation engine (ADS Momentum, SPECTRE, FEBIO, SWAT, ...) you need a [http://en.wikipedia.org/wiki/Shell_script shell script] (or executable) that can take the requested points from SUMO, setup the simulation engine (e.g., set necessary input files), calls the simulator for all the requested points, reads the output (e.g., one or more output files), and returns the results to SUMO (see [[Interfacing with the toolbox]]).&lt;br /&gt;
&lt;br /&gt;
Which one you choose (matlab script + [[Config:SampleEvaluator#matlab|Matlab Sample Evaluator]], or shell script/executable with [[Config:SampleEvaluator#local|Local Sample Evaluator]] is basically a matter of preference, take whatever is easiest for you.&lt;br /&gt;
&lt;br /&gt;
HOWEVER, there is one important consideration: Matlab does not support threads so this means that if you use a matlab script to interface with the simulation engine, simulations and modeling will happen sequentially, NOT in parallel.  This means the modeling code will sit around waiting, doing nothing, until the simulation(s) have finished.  If your simulation code takes a long time to run this is not very efficient.&lt;br /&gt;
&lt;br /&gt;
On the other hand, using a shell script/executable, does allow the modeling and simulation to occur in parallel (at least if you wrote your interface script in such a way that it can be run multiple times in parallel, i.e., no shared global directories or variables that can cause [http://en.wikipedia.org/wiki/Race_condition race conditions]).&lt;br /&gt;
&lt;br /&gt;
As a sidenote, note that if you already put work into a Matlab script, it is still possible to use a shell script, by writing a shell script that starts Matlab (using -nodisplay or -nojvm options), executes your script (using the -r option), and exits Matlab again.  Of course it is not very elegant and adds some overhead but depending on your situation it may be worth it.&lt;br /&gt;
&lt;br /&gt;
=== Does SUMO support discrete inputs/outputs ===&lt;br /&gt;
&lt;br /&gt;
Not, if you mean in a smart way.  There is a way to flag an input/output as discrete but it is not used anywhere.  It is on the wishlist but we have not been able to get to it yet.  Discrete inputs are just handled as if they were continuous.  Depending on how many levels there are and if there is an ordering this may work ok or not work at all.  You could of course add your own model type that can handle these :)  As for discrete outputs see [[FAQ#What_about_classification_problems]].&lt;br /&gt;
&lt;br /&gt;
=== How can I look at the internal structure of a SUMO model ===&lt;br /&gt;
&lt;br /&gt;
See [[Using_a_model#Available_methods]].&lt;br /&gt;
&lt;br /&gt;
=== Is there any design documentation available? ===&lt;br /&gt;
&lt;br /&gt;
An in depth overview of the rationale and philosophy, including a treatment of the software architecture underlying the SUMO Toolbox is available in the form of a PhD dissertation.  A copy of this dissertation [http://www.sumo.intec.ugent.be/?q=system/files/2010_04_PhD_DirkGorissen.pdf is available here].&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== I have a problem and I want to report it ===&lt;br /&gt;
&lt;br /&gt;
See : [[Reporting problems]].&lt;br /&gt;
&lt;br /&gt;
=== I sometimes get flat models when using rational functions ===&lt;br /&gt;
&lt;br /&gt;
First make sure the model is indeed flat, and does not just appear so on the plot. You can verify this by looking at the output axis range and making sure it is within reasonable bounds. When there are poles in the model, the axis range is sometimes stretched to make it possible to plot the high values around the pole, causing the rest of the model to appear flat. If the model contains poles, refer to the next question for the solution.&lt;br /&gt;
&lt;br /&gt;
The [[Config:AdaptiveModelBuilder#rational| RationalModel]] tries to do a least squares fit, based on which monomials are allowed in numerator and denominator. We have experienced that some models just find a flat model as the best least squares fit. There are two causes for this:&lt;br /&gt;
&lt;br /&gt;
* The number of sample points is few, and the model parameters (as explained [[Model types explained#PolynomialModel|here]]) force the model to use only a very small set of degrees of freedom.  The solution in this case is to increase the minimum percentage bound in the RationalFactory section of your configuration file: change the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option to &amp;lt;code&amp;gt;&amp;quot;60,100&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;80,100&amp;quot;&amp;lt;/code&amp;gt;,  or even &amp;lt;code&amp;gt;&amp;quot;100,100&amp;quot;&amp;lt;/code&amp;gt;.  A setting of &amp;lt;code&amp;gt;&amp;quot;100,100&amp;quot;&amp;lt;/code&amp;gt; will force the polynomial models to always exactly interpolate.  However, note that this does not scale very well with the number of samples (to counter this you can set &amp;lt;code&amp;gt;&amp;quot;maxDegrees&amp;quot;&amp;lt;/code&amp;gt;). If, after increasing the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; you still get weird, spiky, models you simply need more samples or you should switch to a different model type.&lt;br /&gt;
* Another possibility is that given a set of monomial degrees, the flat function is just the best possible least squares fit. In that case you simply need to wait for more samples.&lt;br /&gt;
* The measure you are using is not accurately estimating the true error, try a different measure or error function.  Note that a maximum relative error is dangerous to use since a the 0-function (= a flat model) has a lower maximum relative error than a function which overshoots the true behavior in some places but is otherwise correct.&lt;br /&gt;
&lt;br /&gt;
=== When using rational functions I sometimes get &#039;spikes&#039; (poles) in my model ===&lt;br /&gt;
&lt;br /&gt;
When the denominator polynomial of a rational model has zeros inside the domain, the model will tend to infinity near these points. In most cases these models will only be recognized as being `the best&#039; for a short period of time. As more samples get selected these models get replaced by better ones and the spikes should disappear.&lt;br /&gt;
&lt;br /&gt;
So, it is possible that a rational model with &#039;spikes&#039; (caused by poles inside the domain) will be selected as best model. This may or may not be an issue, depending on what you want to use the model for. If it doesn&#039;t matter that the model is very inaccurate at one particular, small spot (near the pole), you can use the model with the pole and it should perform properly.&lt;br /&gt;
&lt;br /&gt;
However, if the model should have a reasonable error on the entire domain, several methods are available to reduce the chance of getting poles or remove the possibility altogether. The possible solutions are:&lt;br /&gt;
&lt;br /&gt;
* Simply wait for more data, usually spikes disappear (but not always).&lt;br /&gt;
* Lower the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option in the RationalFactory section of your configuration file.  For example, say you have 500 data points and if the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option is set to 100 percent it means the degrees of the polynomials in the rational function can go up to 500.  If you set the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option to 10, on the other hand, the maximum degree is set at 50 (= 10 percent of 500).  You can also use the &amp;lt;code&amp;gt;&amp;quot;maxDegrees&amp;quot;&amp;lt;/code&amp;gt; option to set an absolute bound.&lt;br /&gt;
* If you roughly know the output range your data should have, an easy way to eliminate poles is to use the [[Measures#MinMax| MinMax]] [[Measures| Measure]] together with your current measure ([[Measures#CrossValidation| CrossValidation]] by default).  This will cause models whose response falls outside the min-max bounds to be penalized extra, thus spikes should disappear.&lt;br /&gt;
* Use a different model type (RBF, ANN, SVM,...), as spikes are a typical problem of rational functions.&lt;br /&gt;
* Increase the population size if using the genetic version&lt;br /&gt;
* Try using the [[SampleSelector#RationalPoleSuppressionSampleSelector| RationalPoleSuppressionSampleSelector]], it was designed to get rid of this problem more quickly, but it only selects one sample at the time.&lt;br /&gt;
&lt;br /&gt;
However, these solutions may not still not suffice in some cases.  The underlying reason is that the order selection algorithm contains quite a lot of randomness, making it prone to over-fitting.  This issue is being worked on but will take some time.  Automatic order selection is not an easy problem&lt;br /&gt;
&lt;br /&gt;
=== There is no noise in my data yet the rational functions don&#039;t interpolate ===&lt;br /&gt;
&lt;br /&gt;
[[FAQ#I sometimes get flat models when using rational functions |see this question]].&lt;br /&gt;
&lt;br /&gt;
=== When loading a model from disk I get &amp;quot;Warning: Class &#039;:all:&#039; is an unknown object class.  Object &#039;model&#039; of this class has been converted to a structure.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You are trying to load a model file without the SUMO Toolbox in your Matlab path.  Make sure the toolbox is in your Matlab path. &lt;br /&gt;
&lt;br /&gt;
In short: Start Matlab, run &amp;lt;code&amp;gt;&amp;lt;SUMO-Toolbox-directory&amp;gt;/startup.m&amp;lt;/code&amp;gt; (to ensure the toolbox is in your path) and then try to load your model.&lt;br /&gt;
&lt;br /&gt;
=== When running the SUMO Toolbox you get an error like &amp;quot;No component with id &#039;annpso&#039; of type &#039;adaptive model builder&#039; found in config file.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This means you have specified to use a component with a certain id (in this case an AdaptiveModelBuilder component with id &#039;annpso&#039;) but a component with that id does not exist further down in the configuration file (in this particular case &#039;annpso&#039; does not exist but &#039;anngenetic&#039; or &#039;ann&#039; does, as a quick search through the configuration file will show).  So make sure you only declare components which have a definition lower down.  So see which components are available, simply scroll down the configuration file and see which id&#039;s are specified.  Please also refer to the [[Toolbox configuration#Declarations and Definitions | Declarations and Definitions]] page.&lt;br /&gt;
&lt;br /&gt;
=== When using NANN models I sometimes get &amp;quot;Runtime error in matrix library, Choldc failed. Matrix not positive definite&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This is a problem in the mex implementation of the [http://www.iau.dtu.dk/research/control/nnsysid.html NNSYSID] toolbox.  Simply delete the mex files, the Matlab implementation will be used and this will not cause any problems.&lt;br /&gt;
&lt;br /&gt;
=== When using FANN models I sometimes get &amp;quot;Invalid MEX-file createFann.mexa64, libfann.so.2: cannot open shared object file: No such file or directory.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This means Matlab cannot find the [http://leenissen.dk/fann/ FANN] library itself to link to dynamically.  Make sure the FANN libraries (stored in src/matlab/contrib/fann/src/.libs/) are in your library path, e.g., on unix systems, make sure they are included in LD_LIBRARY_PATH.&lt;br /&gt;
&lt;br /&gt;
=== Undeﬁned function or method ’createFann’ for input arguments of type ’double’. ===&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#When_using_FANN_models_I_sometimes_get_.22Invalid_MEX-file_createFann.mexa64.2C_libfann.so.2:_cannot_open_shared_object_file:_No_such_file_or_directory..22]]&lt;br /&gt;
&lt;br /&gt;
=== When trying to use SVM models I get &#039;Error during fitness evaluation: Error using ==&amp;gt; svmtrain at 170, Group must be a vector&#039; ===&lt;br /&gt;
&lt;br /&gt;
You forgot to build the SVM mex files for your platform.  For windows they are pre-compiled for you, on other systems you have to compile them yourself with the makefile.&lt;br /&gt;
&lt;br /&gt;
=== When running the toolbox you get something like &#039;??? Undefined variable &amp;quot;ibbt&amp;quot; or class &amp;quot;ibbt.sumo.config.ContextConfig.setRootDirectory&amp;quot;&#039; ===&lt;br /&gt;
&lt;br /&gt;
First see [[FAQ#What_is_the_relationship_between_Matlab_and_Java.3F | this FAQ entry]].&lt;br /&gt;
&lt;br /&gt;
This means Matlab cannot find the needed Java classes.  This typically means that you forgot to run &#039;startup&#039; (to set the path correctly) before running the toolbox (using &#039;go&#039;).  So make sure you always run &#039;startup&#039; before running &#039;go&#039; and that both commands are always executed in the toolbox root directory.&lt;br /&gt;
&lt;br /&gt;
If you did run &#039;startup&#039; correctly and you are still getting an error, check that Java is properly enabled:&lt;br /&gt;
&lt;br /&gt;
# typing &#039;usejava jvm&#039; should return 1 &lt;br /&gt;
# typing &#039;s = java.lang.String&#039;, this should &#039;&#039;not&#039;&#039; give an error&lt;br /&gt;
# typing &#039;version(&#039;-java&#039;)&#039; should return at least version 1.5.0&lt;br /&gt;
&lt;br /&gt;
If (1) returns 0, then the jvm of your Matlab installation is not enabled.  Check your Matlab installation or startup parameters (did you start Matlab with -nojvm?)&lt;br /&gt;
If (2) fails but (1) is ok, there is a very weird problem, check the Matlab documentation.&lt;br /&gt;
If (3) returns a version before 1.5.0 you will have to upgrade Matlab to a newer version or force Matlab to use a custom, newer, jvm (See the Matlab docs for how to do this).&lt;br /&gt;
&lt;br /&gt;
=== You get errors related to &#039;&#039;gaoptimset&#039;&#039;,&#039;&#039;psoptimset&#039;&#039;,&#039;&#039;saoptimset&#039;&#039;,&#039;&#039;newff&#039;&#039; not being found or unknown ===&lt;br /&gt;
&lt;br /&gt;
You are trying to use a component of the SUMO toolbox that requires a Matlab toolbox that you do not have.  See the [[System requirements]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== After upgrading I get all kinds of weird errors or warnings when I run my XML files ===&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#How_do_I_upgrade_to_a_newer_version.3F]]&lt;br /&gt;
&lt;br /&gt;
=== I get a warning about duplicate samples being selected, why is this? ===&lt;br /&gt;
&lt;br /&gt;
Sometimes, in special circumstances, multiple sample selectors may select the same sample at the same time. Even though in most cases this is detected and avoided, it can still happen when multiple outputs are modelled in one run, and each output is sampled by a different sample selector. These sample selectors may then accidentally choose the same new sample location.&lt;br /&gt;
&lt;br /&gt;
=== I sometimes see the error of the best model go up, shouldn&#039;t it decrease monotonically? ===&lt;br /&gt;
&lt;br /&gt;
There is no short answer here, it depends on the situation.  Below &#039;single objective&#039; refers to the case where during the hyperparameter optimization (= the modeling iteration) combineOutputs=false, and there is only a single measure set to &#039;on&#039;.  The other cases are classified as &#039;multi objective&#039;.  See also [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Sampling off&#039;&#039;&#039;&lt;br /&gt;
## &#039;&#039;Single objective&#039;&#039;: the error should always decrease monotonically, you should never see it rise. If it does [[reporting problems|report it as a bug]]&lt;br /&gt;
## &#039;&#039;Multi objective&#039;&#039;: There is a very small chance the error can temporarily decrease but it should be safe to ignore.  In this case it is best to use a multi objective enabled modeling algorithm&lt;br /&gt;
# &#039;&#039;&#039;Sampling on&#039;&#039;&#039;&lt;br /&gt;
## &#039;&#039;Single objective&#039;&#039;: inside each modeling iteration the error should always monotonically decrease.  At each sampling iteration the best models are updated (to reflect the new data), thus there the best model score may increase, this is normal behavior(*).  It is possible that the error increases for a short while, but as more samples come in it should decrease again.  If this does not happen you are using a poor measure or poor hyperparameter optimization algorithm, or there is a problem with the modeling technique itself (e.g., clustering in the datapoints is causing numerical problems).&lt;br /&gt;
## &#039;&#039;Multi objective&#039;&#039;: Combination of 1.2 and 2.1.&lt;br /&gt;
&lt;br /&gt;
(*) This is normal if you are using a measure like cross validation that is less reliable on little data than on more data.  However, in some cases you may wish to override this behavior if you are using a measure that is independent of the number of samples the model is trained with (e.g., a dense, external validation set).  In this case you can force a monotonic decrease by setting the &#039;keepOldModels&#039; option in the SUMO tag to true.  Use with caution!&lt;br /&gt;
&lt;br /&gt;
=== At the end of a run I get Undefined variable &amp;quot;ibbt&amp;quot; or class &amp;quot;ibbt.sumo.util.JpegImagesToMovie.createMovie&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This is normal, the warning printed out before the error explains why:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[WARNING] jmf.jar not found in the java classpath, movie creation may not work! Did you install the SUMO extension pack? Alternatively you can install the java media framwork from java.sun.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By default, at the end of a run, the toolbox will try to generate a movie of all the intermediate model plots.  To do this it requires the extension pack to be installed (you can download it from the SUMO lab website).  So install the extension pack and you will no longer get the error.  Alternatively you can simply set the &amp;quot;createMovie&amp;quot; option in the &amp;lt;SUMO&amp;gt; tag to &amp;quot;false&amp;quot;.&lt;br /&gt;
So note that there is nothing to worry about, everything has run correctly, it is just the movie creation that is failing.&lt;br /&gt;
&lt;br /&gt;
=== On startup I get the error &amp;quot;java.io.IOException: Couldn&#039;t get lock for output/SUMO-Toolbox.%g.%u.log&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This error means that SUMO is unable to create the log file.  Check the output directory exists and has the correct permissions.  If  your output directory is on a shared (network) drive this could also cause problems.  Also make sure you are running the toolbox (calling &#039;go&#039;) from the toolbox root directory, and not in some toolbox sub directory! This is very important.&lt;br /&gt;
&lt;br /&gt;
If you still have problems you can override the default logfile name and location as follows:&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;FileHandler&amp;gt; tag inside the &amp;lt;Logging&amp;gt; tag add the following option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;Option key=&amp;quot;Pattern&amp;quot; value=&amp;quot;My_SUMO_Log_file.log&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This means that from now on the sumo log file will be saved as the file &amp;quot;My_SUMO_Log_file.log&amp;quot; in the SUMO root directory.  You can use any path you like.&lt;br /&gt;
For more information about this option see [http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/FileHandler.html the FileHandler Javadoc].&lt;br /&gt;
&lt;br /&gt;
=== The Toolbox crashes with &amp;quot;Too many open files&amp;quot; what should I do? ===&lt;br /&gt;
&lt;br /&gt;
This is a known bug, see [[Known_bugs#Version_6.1]].&lt;br /&gt;
&lt;br /&gt;
If this does not fix your problem then do the following:&lt;br /&gt;
&lt;br /&gt;
On Windows try increasing the limit in windows as dictated by the error message.  Also, when you get the error, use the fopen(&amp;quot;all&amp;quot;) command to see which files are open and send us the list of filenames.  Then we can maybe further help you debug the problem.  Even better would be to use the Process Explorer utility [http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx available here]. When you get the error, dont shut down Matlab but start Process explorer and see which SUMO-Toolbox related files are open.  If you then [[Reporting_problems|let us know]] we can further debug the problem.&lt;br /&gt;
&lt;br /&gt;
On Linux again don&#039;t shut down Matlab but:&lt;br /&gt;
&lt;br /&gt;
* open a new terminal window&lt;br /&gt;
* type:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsof &amp;gt; openFiles.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Then [[Contact|send us]] the following information:&lt;br /&gt;
** the file openFiles.txt &lt;br /&gt;
** the exact Linux distribution you are using (Red Hat 10, CentOS 5, SUSE 11, etc).&lt;br /&gt;
** the output of&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
uname -a ; df -T ; mount&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a temporary workaround you can try increasing the maximum number of open files ([http://www.linuxforums.org/forum/redhat-fedora-linux-help/64716-where-chnage-file-max-permanently.html see for example here]).  We are currently debugging this issue.&lt;br /&gt;
&lt;br /&gt;
In general: to be safe it is always best to do a SUMO run from a clean Matlab startup, especially if the run is important or may take a long time.&lt;br /&gt;
&lt;br /&gt;
=== When using the LS-SVM models I get lots of warnings: &amp;quot;make sure lssvmFILE.x (lssvmFILE.exe) is in the current directory, change now to MATLAB implementation...&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
The LS-SVMs have a C implementation and a Matlab implementation.  If you dont have the compiled mex files it will use the matlab implementation and give a warning.  But everything will work properly.  To get rid of the warnings, compile the mex files [[Installation#Windows|as described here]], this can be done very easily.  Or simply comment out the lines that produce the output in the lssvmlab directory in src/matlab/contrib.&lt;br /&gt;
&lt;br /&gt;
=== I get an error &amp;quot;Undefined function or method &#039;trainlssvm&#039; for input arguments of type &#039;cell&#039;&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You most likely forgot to [[Installation#Extension_pack|install the extension pack]].&lt;br /&gt;
&lt;br /&gt;
=== When running the SUMO-Toolbox under Linux, the [http://en.wikipedia.org/wiki/X_Window_System X server] suddenly restarts and I am logged out of my session ===&lt;br /&gt;
&lt;br /&gt;
Note that in Linux there is an explicit difference between the [http://en.wikipedia.org/wiki/Linux_kernel kernel] and the [http://en.wikipedia.org/wiki/X_Window_System X display server].  If the kernel crashes or panics your system completely freezes (you have to reset manually) or your computer does a full reboot.  Luckily this is very rare.  However, if you display server (X) crashes or restarts it means your operating system is still running fine, its just that you have to log in again since your graphical session has terminated.  The FAQ entry is only for the latter.  If you find your kernel is panicing or freezing, that is a more fundamental problem and you should contact your system admin.&lt;br /&gt;
&lt;br /&gt;
So what happens is that after a few seconds when the toolbox wants to plot the first model [http://en.wikipedia.org/wiki/X_Window_System X] crashes and you are suddenly presented with a login screen.  The problem is not due to SUMO but rather to the Matlab - Display server interaction.&lt;br /&gt;
&lt;br /&gt;
What you should first do is set plotModels to false in the [[Config:ContextConfig]] tag, run again and see if the problem occurs again.  If it does please [[Reporting_problems| report it]].  If the problem does not occur you can then try the following:&lt;br /&gt;
&lt;br /&gt;
* Log in as root (or use [http://en.wikipedia.org/wiki/Sudo sudo])&lt;br /&gt;
* Edit the following configuration file using a text editor (pico, nano, vi, kwrite, gedit,...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/etc/X11/xorg.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: the exact location of the xorg.conf file may vary on your system.&lt;br /&gt;
&lt;br /&gt;
* Look for the following line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  Load         &amp;quot;glx&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Comment it out by replacing it by:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#  Load         &amp;quot;glx&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then save the file, restart your X server (if you do not know how to do this simply reboot your computer)&lt;br /&gt;
* Log in again, and try running the toolbox (making sure plotModels is set to true again).  It should now work.  If it still does not please [[Reporting_problems| report it]].&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* this is just an empirical workaround, if you have a better idea please [[Contact|let us know]]&lt;br /&gt;
* if you wish to debug further yourself please check the Xorg log files and those in /var/log&lt;br /&gt;
* another possible workaround is to start matlab with the &amp;quot;-nodisplay&amp;quot; option.  That could work as well.&lt;br /&gt;
&lt;br /&gt;
=== I get the error &amp;quot;Failed to close Matlab pool cleanly, error is Too many output arguments&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This happens if you run the toolbox on Matlab version 2008a and you have the parallel computing toolbox installed.  You can simply ignore this error message, it does not cause any problems. If you want to use SUMO with the parallel computing toolbox you will need Matlab 2008b.&lt;br /&gt;
&lt;br /&gt;
=== The toolbox seems to keep on running forever, when or how will it stop? ===&lt;br /&gt;
&lt;br /&gt;
The toolbox will keep on generating models and selecting data until one of the termination criteria has been reached. It is up to &#039;&#039;you&#039;&#039; to choose these targets carefully, so how low the toolbox runs simply depends on what targets you choose.  Please see [[Running#Understanding_the_control_flow]].&lt;br /&gt;
&lt;br /&gt;
Of course choosing a-priori targets up front is not always easy and there is no real solution for this, except thinking well about what type of model you want (see [[FAQ#I_dont_like_the_final_model_generated_by_SUMO_how_do_I_improve_it.3F]]).  In doubt you can always use a small value (or 0) and then simply quit the running toolbox using Ctrl-C when you think its been enough.&lt;br /&gt;
&lt;br /&gt;
While one could implement fancy, automatic stopping algorithms, their actual benefit is questionable.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=FAQ&amp;diff=5555</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=FAQ&amp;diff=5555"/>
		<updated>2011-07-07T08:42:19Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* What about classification problems? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
=== What is a global surrogate model? ===&lt;br /&gt;
&lt;br /&gt;
A global [http://en.wikipedia.org/wiki/Surrogate_model surrogate model] is a mathematical model that mimics the behavior of a computationally expensive simulation code over &#039;&#039;&#039;the complete parameter space&#039;&#039;&#039; as accurately as possible, using as little data points as possible. So note that optimization is not the primary goal, although it can be done as a post-processing step. Global surrogate models are useful for:&lt;br /&gt;
&lt;br /&gt;
* design space exploration, to get a &#039;&#039;feel&#039;&#039; of how the different parameters behave&lt;br /&gt;
* sensitivity analysis&lt;br /&gt;
* &#039;&#039;what-if&#039;&#039; analysis&lt;br /&gt;
* prototyping&lt;br /&gt;
* visualization&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
In addition they are a cheap way to model large scale systems, multiple global surrogate models can be chained together in a model cascade.&lt;br /&gt;
&lt;br /&gt;
See also the [[About]] page.&lt;br /&gt;
&lt;br /&gt;
=== What about surrogate driven optimization? ===&lt;br /&gt;
&lt;br /&gt;
When coining the term &#039;&#039;&#039;surrogate driven optimization&#039;&#039;&#039; most people associate it with trust-region strategies and simple polynomial models. These frameworks first construct a local surrogate which is optimized to find an optimum. Afterwards, a move limit strategy decides how the local surrogate is scaled and/or moved through the input space. Subsequently the surrogate is rebuild and optimized. I.e. the surrogate zooms in to the global optimum. For instance the [http://www.cs.sandia.gov/DAKOTA/ DAKOTA] Toolbox implements such strategies where the surrogate construction is separated from optimization.&lt;br /&gt;
&lt;br /&gt;
Such a framework was earlier implemented in the SUMO Toolbox but was deprecated as it didn&#039;t fit the philosophy and design of the toolbox. &lt;br /&gt;
&lt;br /&gt;
Instead another, equally powerful, approach was taken. The current optimization framework is in fact a sampling selection strategy that balances local and global search. In other words, it balances between exploring the input space and exploiting the information the surrogate gives us.&lt;br /&gt;
&lt;br /&gt;
A configuration example can be found [[Config:SampleSelector#expectedImprovement|here]].&lt;br /&gt;
&lt;br /&gt;
=== What is (adaptive) sampling? Why is it used? ===&lt;br /&gt;
&lt;br /&gt;
In classical Design of Experiments you need to specify the design of your experiment up-front. Or in other words, you have to say up-front how many data points you need and how they should be distributed.  Two examples are Central Composite Designs and Latin Hypercube designs.  However, if your data is expensive to generate (e.g., an expensive simulation code) it is not clear how many points are needed up-front.  Instead data points are selected adaptively, only a couple at a time.  This process of incrementally selecting new data points in regions that are the most interesting is called adaptive sampling, sequential design, or active learning.  Of course the sampling process needs to start from somewhere so the very first set of points is selected based on a fixed, classic experimental design.  See also [[Running#Understanding_the_control_flow]].&lt;br /&gt;
SUMO provides a number of different sampling algorithms: [[SampleSelector]]&lt;br /&gt;
&lt;br /&gt;
Of course sometimes you dont want to do sampling.  For example if you have a fixed dataset you just want to load all the data in one go and model that.  For how to do this see [[FAQ#How_do_I_turn_off_adaptive_sampling_.28run_the_toolbox_for_a_fixed_set_of_samples.29.3F]].&lt;br /&gt;
&lt;br /&gt;
=== What about dynamical, time dependent data? ===&lt;br /&gt;
&lt;br /&gt;
The original design and purpose was to tackle static input-output systems, where there is no memory. Just a complex mapping that must be learnt and approximated. Of course you can take a fixed time interval and apply the toolbox but that typically is not a desired solution.  Usually you are interested in time series prediction, e.g., given a set of output values from time t=0 to t=k, predict what happens at time t=k+1,k+2,...&lt;br /&gt;
&lt;br /&gt;
The toolbox was originally not intended for this purpose.  However, it is quite easy to add support for recurrent models.  Automatic generation of dynamical models would involve adding a new model type (just like you would add a new regression technique) or require adapting an existing one.  For example it would not be too much work to adapt the ANN or SVM models to support dynamic problems.  The only extra work besides that would be to add a new [[Measures|Measure]] that can evaluate the fidelity of the models&#039; prediction.&lt;br /&gt;
&lt;br /&gt;
Naturally though, you would be unable to use sample selection (since it makes no sense in those problems).  Unless of course there is a specialized need for it.  In that case you would add a new [[SampleSelector]].&lt;br /&gt;
&lt;br /&gt;
For more information on this topic [[Contact]] us.&lt;br /&gt;
&lt;br /&gt;
=== What about classification problems? ===&lt;br /&gt;
&lt;br /&gt;
The main focus of the SUMO Toolbox is on regression/function approximation.  However, the framework for hyperparameter optimization, model selection, etc.  can also be used for classification.  Starting from version 6.3 a demo file is included in the distribution that shows how this works on the well known two spiral test problem.&lt;br /&gt;
&lt;br /&gt;
=== Can the toolbox drive my simulation code directly? ===&lt;br /&gt;
&lt;br /&gt;
Yes it can.  See the [[Interfacing with the toolbox]] page.&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between the M3-Toolbox and the SUMO-Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
The SUMO toolbox is a complete, feature-full framework for automatically generating approximation models and performing adaptive sampling. In contrast, the M3-Toolbox was more of a proof-of-principle.&lt;br /&gt;
&lt;br /&gt;
=== What happened to the M3-Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
The M3 Toolbox project has been discontinued (Fall 2007) and superseded by the SUMO Toolbox. Please contact tom.dhaene@ua.ac.be for any inquiries and requests about the M3 Toolbox.&lt;br /&gt;
&lt;br /&gt;
=== How can I stay up to date with the latest news? ===&lt;br /&gt;
&lt;br /&gt;
To stay up to date with the latest news and releases, we also recommend subscribing to our newsletter [http://www.sumo.intec.ugent.be here].  Traffic will be kept to a minimum (1 message every 2-3 months) and you can unsubscribe at any time.&lt;br /&gt;
&lt;br /&gt;
You can also follow our blog: [http://sumolab.blogspot.com/ http://sumolab.blogspot.com/].&lt;br /&gt;
&lt;br /&gt;
=== What is the roadmap for the future? ===&lt;br /&gt;
&lt;br /&gt;
There is no explicit roadmap since much depends on where our research leads us, what feedback we get, which problems we are working on, etc.  However, to get an idea of features to come you can always check the [[Whats new]] page.&lt;br /&gt;
&lt;br /&gt;
You can also follow our blog: [http://sumolab.blogspot.com/ http://sumolab.blogspot.com/].&lt;br /&gt;
&lt;br /&gt;
=== Will there be an R/Scilab/Octave/Sage/.. version? ===&lt;br /&gt;
&lt;br /&gt;
At the start of the project we considered moving from Matlab to one of the available open source alternatives.  However, after much discussion we decided against this for several reasons, including:&lt;br /&gt;
&lt;br /&gt;
* Existing experience and know-how of the development team&lt;br /&gt;
* The widespread use of the Matlab platform in the target application domains&lt;br /&gt;
* The quality and amount of available Matlab documentation&lt;br /&gt;
* The quality and number of Matlab toolboxes&lt;br /&gt;
* Support for object orientation (inheritance, polymorphism, etc.)&lt;br /&gt;
* Many well documented interfacing options (especially the seamless integration with Java)&lt;br /&gt;
&lt;br /&gt;
Matlab, as a proprietary platform, definitely has its problems and deficiencies but the number of advanced algorithms and available toolboxes make it a very attractive platform.  Equally important is the fact that every function is properly documented, tested, and includes examples, tutorials, and in some cases GUI tools.  A lot of things would have been a lot harder and/or time consuming to implement on one of the other platforms.  Add to that the fact that many engineers (particularly in aerospace) already use Matlab quite heavily.  Thus given our situation, goals, and resources at the time, Matlab was the best choice for us.  &lt;br /&gt;
&lt;br /&gt;
The other platforms remain on our radar however, and we do look into them from time to time.  Though, with our limited resources porting to one of those platforms is not (yet) cost effective.&lt;br /&gt;
&lt;br /&gt;
=== What are collaboration options? ===&lt;br /&gt;
&lt;br /&gt;
We will gladly help out with any SUMO-Toolbox related questions or problems. However, since we are a university research group the most interesting goal for us is to work towards some joint publication (e.g., we can help with the modeling of your problem).  Alternatively, it is always nice if we could use your data/problem (fully referenced and/or anonymized if necessary of course) as an example application during a conference presentation or in a PhD thesis.&lt;br /&gt;
&lt;br /&gt;
The most interesting case is if your problem involves sample selection and modeling.  This means you have some simulation code or script to drive and you want an accurate model while minimizing the number of data points.  In this case, in order for us to optimally help you it would be easiest if we could run your simulation code (or script) locally or access it remotely.  Else its difficult to give good recommendations about what settings to use.&lt;br /&gt;
&lt;br /&gt;
If this is not possible (e.g., expensive, proprietary or secret modeling code) or if your problem does not involve sample selection, you can send us a fixed data set that is representative of your problem. Again, this may be fully anonymized and will be kept confidential of course.&lt;br /&gt;
&lt;br /&gt;
In either case (code or dataset) remember:&lt;br /&gt;
&lt;br /&gt;
* the data file should be an ASCII file in column format (each row containing one data point) (see also [[Interfacing_with_the_toolbox]])&lt;br /&gt;
* include a short description of your data:&lt;br /&gt;
** number of inputs and number of outputs&lt;br /&gt;
** the range of each input (or scaled to [-1 1] if you do not wish to disclose this)&lt;br /&gt;
** if the outputs are real or complex valued&lt;br /&gt;
** how noisy the data is or if it is completely deterministic (computer simulation) (please also see: [[FAQ#My_data_contains_noise_can_the_SUMO-Toolbox_help_me.3F]]).&lt;br /&gt;
** if possible the expected range of each output (or scaled if you do not wish to disclose this)&lt;br /&gt;
** if possible the names of each input/output + a short description of what they mean&lt;br /&gt;
** any further insight you have about the data, expected behavior, expected importance of each input, etc.&lt;br /&gt;
&lt;br /&gt;
If you have any further questions or comments related to this please [[Contact]] us.&lt;br /&gt;
&lt;br /&gt;
=== Can you help me model my problem? ===&lt;br /&gt;
&lt;br /&gt;
Please see the previous question: [[FAQ#What_are_collaboration_options.3F]]&lt;br /&gt;
&lt;br /&gt;
== Installation and Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== What is the relationship between Matlab and Java? ===&lt;br /&gt;
&lt;br /&gt;
Many people do not know this, but your Matlab installation automatically includes a Java virtual machine.  By default, Matlab seamlessly integrates with Java, allowing you to create Java objects from the command line (e.g., &#039;s = java.lang.String&#039;).  It is possible to disable java support but in order to use the SUMO Toolbox it should not be.  To check if Java is enabled you can use the &#039;usejava&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== What is Java, why do I need it, do I have to install it, etc. ? ===&lt;br /&gt;
&lt;br /&gt;
The short answer is: no, dont worry about it.  The long answer is: Some of the code of the SUMO Toolbox is written in [http://en.wikipedia.org/wiki/Java_(programming_language) Java], since it makes a lot more sense in many situations and is a proper programming language instead of a scripting language like Matlab.  Since Matlab automatically includes a JVM to run Java code there is nothing you need to do or worry about (see the previous FAQ entry).  Unless its not working of course, in that case see [[FAQ#When_running_the_toolbox_you_get_something_like_.27.3F.3F.3F_Undefined_variable_.22ibbt.22_or_class_.22ibbt.sumo.config.ContextConfig.setRootDirectory.22.27]].&lt;br /&gt;
&lt;br /&gt;
=== What is XML? ===&lt;br /&gt;
&lt;br /&gt;
XML stands for eXtensible Markup Language and is related to HTML (= the stuff web pages are written in).  The first thing you have to understand is that &#039;&#039;&#039;does not do anything&#039;&#039;&#039;. Honest. Many engineers are not used to it and think it is some complicated computer programming language-stuff-thingy.  This is of course not the case (we ignore some of the fancy stuff you can do with it for now).  XML is a markup language meaning, it provides some rules how you can annotate or structure existing text.&lt;br /&gt;
&lt;br /&gt;
The way SUMO uses XML is really simple and there is not much to understand.  First some simple terminology.  Take the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Foo attr=&amp;quot;bar&amp;quot;&amp;gt;bla bla bla&amp;lt;/Foo&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here we have &#039;&#039;&#039;a tag&#039;&#039;&#039; called &#039;&#039;Foo&#039;&#039; containing text &#039;&#039;bla bla bla&#039;&#039;.  The tag Foo also has an &#039;&#039;&#039;attribute&#039;&#039;&#039; &#039;&#039;attr&#039;&#039; with value &#039;&#039;bar&#039;&#039;.  &#039;&amp;lt;Foo&amp;gt;&#039; is what we call the &#039;&#039;&#039;opening tag&#039;&#039;&#039;, and &#039;&amp;lt;/Foo&amp;gt;&#039; is the &#039;&#039;&#039;closing tag&#039;&#039;&#039;.  Each time you open a tag you must close it again.  How you name the tags or attributes it totally up to you, you choose :)&lt;br /&gt;
&lt;br /&gt;
Lets take a more interesting example.  Here we have used XML to represent information about a receipe for pancakes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;recipe category=&amp;quot;dessert&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;Pancakes&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;sumo@intec.ugent.be&amp;lt;/author&amp;gt;&lt;br /&gt;
  &amp;lt;date&amp;gt;Wed, 14 Jun 95&amp;lt;/date&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
    Good old fashioned pancakes.&lt;br /&gt;
  &amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;ingredients&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
        &amp;lt;amount&amp;gt;3&amp;lt;/amount&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;eggs&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
         &amp;lt;amount&amp;gt;0.5 tablespoon&amp;lt;/amount&amp;gt;&lt;br /&gt;
         &amp;lt;type&amp;gt;salt&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
  &amp;lt;/ingredients&amp;gt;&lt;br /&gt;
  &amp;lt;preparation&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/preparation&amp;gt;&lt;br /&gt;
 &amp;lt;/recipe&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So basically, you see that XML is just a way to structure, order, and group information.  Thats it!  So SUMO basically uses it to store and structure configuration options.  And this works well due to the nice hierarchical nature of XML.&lt;br /&gt;
&lt;br /&gt;
If you understand this there is nothing else to it in order to be able to understand the SUMO configuration files.  If you need more information see the tutorial here: [http://www.w3schools.com/XML/xml_whatis.asp http://www.w3schools.com/XML/xml_whatis.asp].  You can also have a look at the wikipedia page here: [http://en.wikipedia.org/wiki/XML http://en.wikipedia.org/wiki/XML]&lt;br /&gt;
&lt;br /&gt;
=== Why does SUMO use XML? ===&lt;br /&gt;
&lt;br /&gt;
XML is the defacto standard way of structuring information. This ranges from spreadsheet files (Microsoft Excel for example), to configuration data, to scientific data, ...  There are even whole database systems based solely on XML.  So basically, its an intuitive way to structure data and it is used everywhere.  This makes that there are a very large number of libraries and programming languages available that can parse, and handle XML easily.  That means less work for the programmer.  Then of course there is stuff like XSLT, XQuery, etc that makes life even easier.&lt;br /&gt;
So basically, it would not make sense for SUMO to use any other format :)&lt;br /&gt;
&lt;br /&gt;
=== I get an error that SUMO is not yet activated ===&lt;br /&gt;
&lt;br /&gt;
Make sure you installed the activation file that was mailed to you as is explained in the [[Installation]] instructions.  Also double check your system meets the [[System requirements]] and that [http://www.sumowiki.intec.ugent.be/index.php/FAQ#When_running_the_toolbox_you_get_something_like_.27.3F.3F.3F_Undefined_variable_.22ibbt.22_or_class_.22ibbt.sumo.config.ContextConfig.setRootDirectory.22.27|java java is enabled].  To fully verify that the activation file installation is correct ensure that the file ContextConfig.class is present in the directory &#039;&#039;&amp;lt;SUMO installation directory&amp;gt;/bin/java/ibbt/sumo/config&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Please note that more flexible research licenses are available if it is possible to [[FAQ#What_are_collaboration_options.3F|collaborate in any way]].&lt;br /&gt;
&lt;br /&gt;
== Upgrading ==&lt;br /&gt;
&lt;br /&gt;
=== How do I upgrade to a newer version? ===&lt;br /&gt;
&lt;br /&gt;
Delete your old &amp;lt;code&amp;gt;&amp;lt;SUMO-Toolbox-directory&amp;gt;&amp;lt;/code&amp;gt; completely and replace it by the new one.  Install the new activation file / extension pack as  before (see [[Installation]]), start Matlab and make sure the default run works.  To port your old configuration files to the new version: make a copy of default.xml (from the new version) and copy over your custom changes (from the old version) one by one.  This should prevent any weirdness if the XML structure has changed between releases.&lt;br /&gt;
&lt;br /&gt;
If you had a valid activation file for the previous version, just [[Contact]] us (giving your SUMOlab website username) and we will send you a new activation file.  Note that to update an activation file you must first unzip a copy of the toolbox to a new directory and install the activation file as if it was the very first time.  Upgrading of an activation file without performing a new toolbox install is (unfortunately) not (yet) supported.&lt;br /&gt;
&lt;br /&gt;
== Using ==&lt;br /&gt;
&lt;br /&gt;
=== I have no idea how to use the toolbox, what should I do? ===&lt;br /&gt;
&lt;br /&gt;
See: [[Running#Getting_started]]&lt;br /&gt;
&lt;br /&gt;
=== I want to try one of the different examples ===&lt;br /&gt;
&lt;br /&gt;
See [[Running#Running_different_examples]].&lt;br /&gt;
&lt;br /&gt;
=== I want to model my own problem ===&lt;br /&gt;
&lt;br /&gt;
See : [[Adding an example]].&lt;br /&gt;
&lt;br /&gt;
=== I want to contribute some data/patch/documentation/... ===&lt;br /&gt;
&lt;br /&gt;
See : [[Contributing]].&lt;br /&gt;
&lt;br /&gt;
=== How do I interface with the SUMO Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Interfacing with the toolbox]].&lt;br /&gt;
&lt;br /&gt;
=== What configuration options (model type, sample selection algorithm, ...) should I use for my problem? ===&lt;br /&gt;
&lt;br /&gt;
See [[General_guidelines]].&lt;br /&gt;
&lt;br /&gt;
=== Ok, I generated a model, what can I do with it? ===&lt;br /&gt;
&lt;br /&gt;
See: [[Using a model]].&lt;br /&gt;
&lt;br /&gt;
=== How can I share a model created by the SUMO Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Using a model#Model_portability| Model portability]].&lt;br /&gt;
&lt;br /&gt;
=== I dont like the final model generated by SUMO how do I improve it? ===&lt;br /&gt;
&lt;br /&gt;
Before you start the modeling you should really ask youself this question: &#039;&#039;What properties do I want to see in the final model?&#039;&#039;  You have to think about what for you constitutes a good model and what constitutes a poor model. Then you should rank those properties depending on how important you find them.  Examples are:&lt;br /&gt;
&lt;br /&gt;
* accuracy in the training data&lt;br /&gt;
** is it important that the error in the training data is exactly 0, or do you prefer some smoothing&lt;br /&gt;
* accuracy outside the training data&lt;br /&gt;
** this is the validation or test error, how important is proper generalization (usually this is very important)&lt;br /&gt;
* what does accuracy mean to you? a low maximum error, a low average error, both, ...&lt;br /&gt;
* smoothness&lt;br /&gt;
** should your model be perfectly smooth or is it acceptable that you have a few small ripples here and there for example&lt;br /&gt;
* are some regions of the response more important than others?&lt;br /&gt;
** for example you may want to be certain that the minima/maxima are captured very accurately but everything in between is less important&lt;br /&gt;
* are there particular special features that your model should have&lt;br /&gt;
** for example, capture underlying poles or discontinuities correctly&lt;br /&gt;
* extrapolation capability&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
It is important to note that often these criteria may be conflicting.  The classical example is fitting noisy data: the lower your training error the higher your testing error.  A natural approach is to combine multiple criteria, see [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
Once you have decided on a set of requirements the question is then, can the SUMO-Toolbox produce a model that meets them? In SUMO model generation is driven by one or more [[Measures]].  So you should choose the combination of [[Measures]] that most closely match your requirements.  Of course we can not provide a Measure for every single property, but it is very straightforward to [[Add_Measure|add your own Measure]].&lt;br /&gt;
&lt;br /&gt;
Now, lets say you have chosen what you think are the best Measures but you are still not happy with the final model.  Reasons could be:&lt;br /&gt;
&lt;br /&gt;
* you need more modeling iterations or you need to build more models per iteration (see [[Running#Understanding_the_control_flow]]). This will result in a more extensive search of the model parameter space, but will take longer to run.&lt;br /&gt;
* you should switch to a different model parameter optimization algorithm (e.g., for example instead of the Pattern Search variant, try the Genetic Algorithm variant of your AdaptiveModelBuilder.)&lt;br /&gt;
* the model type you are using is not ideally suited to your data&lt;br /&gt;
* there simply is not enough data, use a larger initial design or perform more sampling iterations to get more information per dimension&lt;br /&gt;
* maybe the sample distribution is causing troubles for your model (e.g., Kriging can have problems with clustered data).  In that case it could be worthwhile to choose a different sample selection algorithm.&lt;br /&gt;
* the range of your response variable is not ideal (for example, neural networks have trouble modeling data if the range of the outputs is very very small)&lt;br /&gt;
&lt;br /&gt;
You may also refer to the following [[General_guidelines]].  Finally, of course it may be that your problem is simply a very difficult one and does not approximate well.  But, still you should at least get something satisfactory.&lt;br /&gt;
&lt;br /&gt;
If you are having these kinds of problems, please [[Reporting_problems|let us know]] and we will gladly help out.&lt;br /&gt;
&lt;br /&gt;
=== My data contains noise can the SUMO-Toolbox help me? ===&lt;br /&gt;
&lt;br /&gt;
The original purpose of the SUMO-Toolbox was for it to be used in conjunction with computer simulations.  Since these are fully deterministic you do not have to worry about noise in the data and all the problems it causes.  However, the methods in the toolbox are general fitting methods that work on noisy data as well.  So yes, the toolbox can be used with noisy data, but you will just have to be more careful about how you apply the methods and how you perform model selection.  Its only when you use the toolbox with a noisy simulation engine that a few special  options may need to be set.  In that case [[Contact]] us for more information.&lt;br /&gt;
&lt;br /&gt;
Note though, that the toolbox is not a statistical package, if you have noisy data and you need noise estimation algorithms, kernel smoothing algorithms, etc.  you should look towards other tools.&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between a ModelBuilder and a ModelFactory? ===&lt;br /&gt;
&lt;br /&gt;
See [[Add Model Type]].&lt;br /&gt;
&lt;br /&gt;
=== Why are the Neural Networks so slow? ===&lt;br /&gt;
&lt;br /&gt;
The ANN models are an extremely powerful model type that give very good results in many problems.  However, they are quite slow to use.  There are some things you can do:&lt;br /&gt;
&lt;br /&gt;
* use trainlm or trainscg instead of the default training function trainbr.  trainbr gives very good, smooth results but is slower to use.  If results with trainlm are not good enough, try using msereg as a performance function.&lt;br /&gt;
* try setting the training goal (= the SSE to reach during training) to a small positive number (e.g., 1e-5) instead of 0.&lt;br /&gt;
* check that the output range of your problem is not very small.  If your response data lies between 10e-5 and 10e-9 for example it will be very hard for the neural net to learn it.  In that case rescale your data to a more sane range.&lt;br /&gt;
* switch from ANN to one of the other neural network modelers: fanngenetic or nanngenetic. These are a lot faster than the default backend based on the [http://www.mathworks.com/products/neuralnet/ Matlab Neural Network Toolbox].  However, the accuracy is usually not as good.&lt;br /&gt;
* If you are using [[Measures#CrossValidation| CrossValidation]] try to switch to a different measure since CrossValidation is very expensive to use. CrossValidation is used by default if you have not defined a [[Measures| measure]] yourself.  When using one of the neural network model types, try to use a different measure if you can.  For example, our tests have shown that minimizing the sum of [[Measures#SampleError| SampleError]] and [[Measures#LRMMeasure| LRMMeasure]] can give equal or even better results than CrossValidation, while being much cheaper (see [[Multi-Objective Modeling]] for how to combine multiple measures).  See also the comments in &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; for examples.&lt;br /&gt;
* Finally, as with any model type things will slow down if you have many dimensions or very large amounts of data.  If that is the case, try some dimensionality reduction or subsampling techniques.&lt;br /&gt;
&lt;br /&gt;
See also [[FAQ#How_can_I_make_the_toolbox_run_faster.3F]]&lt;br /&gt;
&lt;br /&gt;
=== How can I make the toolbox run faster? ===&lt;br /&gt;
&lt;br /&gt;
There are a number of things you can do to speed things up.  These are listed below.  Remember though that the main reason the toolbox may seem to be slow is due to the many models being built as part of the hyperparameter optimization.  Please make sure you fully understand the [[Running#Understanding_the_control_flow|control flow described here]] before trying more advanced options.&lt;br /&gt;
&lt;br /&gt;
* First of all check that your virus scanner is not interfering with Matlab. If McAfee or any other program wants to scan every file SUMO generates this really slows things down and your computer becomes unusable.&lt;br /&gt;
&lt;br /&gt;
* Turn off the plotting of models in [[Config:ContextConfig#PlotOptions| ContextConfig]], you can always generate plots from the saved mat files&lt;br /&gt;
&lt;br /&gt;
* This is an important one.  For most model builders there is an option &amp;quot;maxFunEals&amp;quot;, &amp;quot;maxIterations&amp;quot;, or equivalent.  Change this value to change the maximum number of models built between 2 sampling iterations.  The higher this number, the slower, but the better the models &#039;&#039;may&#039;&#039; be.  Equivalently, for the Genetic model builders reduce the population size and the number of generations.&lt;br /&gt;
&lt;br /&gt;
* If you are using [[Measures#CrossValidation]] see if you can avoid it and use one of the other measures or a combination of measures (see [[Multi-Objective Modeling]]&lt;br /&gt;
&lt;br /&gt;
* If you are using a very dense [[Measures#ValidationSet]] as your Measure, this means that every single model will be evaluated on that data set.  For some models like RBF, Kriging, SVM, this can slow things down.&lt;br /&gt;
&lt;br /&gt;
* Disable some, or even all of the [[Config:ContextConfig#Profiling| profilers]] or disable the output handlers that draw charts.  For example, you might use the following configuration for the profilers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Profiling&amp;gt;&lt;br /&gt;
	&amp;lt;Profiler name=&amp;quot;.*share.*|.*ensemble.*|.*Level.*&amp;quot; enabled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toImage&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toFile&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Profiler&amp;gt;&lt;br /&gt;
			&lt;br /&gt;
	&amp;lt;Profiler name=&amp;quot;.*&amp;quot; enabled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toFile&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Profiler&amp;gt;&lt;br /&gt;
&amp;lt;/Profiling&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;.*&amp;quot; means match any one or more characters ([http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html see here for the full list of supported wildcards]).  Thus in this example all the profilers that have &amp;quot;share&amp;quot;, &amp;quot;ensemble&amp;quot;, or &amp;quot;Level&amp;quot; in their name shoud be enabled and should be saved as a text file (toFile) AND as an image file (toImage).  All the other profilers should be saved just to file. The idea is to only save to image what you want as an image since image generation is expensive.  If you do this or switch off image generation completely you will see everything run much faster.&lt;br /&gt;
&lt;br /&gt;
* Decrease the logging granularity, a log level of FINE (the default is FINEST or ALL) is more then granular enough.  Setting it to FINE, INFO, or even WARNING should speed things up.&lt;br /&gt;
&lt;br /&gt;
* If you have a multi-core/multi-cpu machine:&lt;br /&gt;
** if you have the Matlab Parallel Computing Toolbox, try setting the parallelMode option to true in [[Config:ContextConfig]].  Now all model training occurs in parallel.  This may give unexpected errors in some cases so beware when using.&lt;br /&gt;
** if you are using a native executable or script as the sample evaluator set the threadCount variable in [[Config:SampleEvaluator#LocalSampleEvaluator| LocalSampleEvaluator]] equal to the number of cores/CPUs (only do this if it is ok to start multiple instances of your simulation script in parallel!)&lt;br /&gt;
&lt;br /&gt;
* Dont use the Min-Max measure, it can slow things down. See also [[FAQ#How_do_I_force_the_output_of_the_model_to_lie_in_a_certain_range]]&lt;br /&gt;
&lt;br /&gt;
* If you are using neural networks see [[FAQ#Why_are_the_Neural_Networks_so_slow.3F]]&lt;br /&gt;
&lt;br /&gt;
* If you are having problems with very slow or seemingly hanging runs:&lt;br /&gt;
** Do a run inside the [http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/matlab_env/f9-17018.html&amp;amp;http://www.google.be/search?client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;channel=s&amp;amp;hl=nl&amp;amp;q=matlab+profiler&amp;amp;meta=&amp;amp;btnG=Google+zoeken Matlab profiler] and see where most time is spent.&lt;br /&gt;
&lt;br /&gt;
** Monitor CPU and physical/virtual memory usage while the SUMO toolbox is running and see if you notice anything strange.  &lt;br /&gt;
&lt;br /&gt;
* Also note that by default Matlab only allocates about 117 MB memory space for the Java Virtual Machine. If you would like to increase this limit (which you should) please follow the instructions [http://www.mathworks.com/support/solutions/data/1-18I2C.html?solution=1-18I2C here]. See also the general memory instructions [http://www.mathworks.com/support/tech-notes/1100/1106.html here].&lt;br /&gt;
&lt;br /&gt;
To check if your SUMO run has hanged, monitor your log file (with the level set at least to FINE).  If you see no changes for about 30 minutes the toolbox will probably have stalled.  [[Reporting problems| report the problems here]].&lt;br /&gt;
&lt;br /&gt;
Such problems are hard to identify and fix so it is best to work towards a reproducible test case if you think you found a performance or scalability issue.&lt;br /&gt;
&lt;br /&gt;
=== How do I build models with more than one output ===&lt;br /&gt;
&lt;br /&gt;
Sometimes you have multiple responses that you want to model at once.  See [[Running#Models_with_multiple_outputs]]&lt;br /&gt;
&lt;br /&gt;
=== How do I turn off adaptive sampling (run the toolbox for a fixed set of samples)? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Adaptive Modeling Mode]].&lt;br /&gt;
&lt;br /&gt;
=== How do I change the error function (relative error, RMSE, ...)? ===&lt;br /&gt;
&lt;br /&gt;
The [[Measures| &amp;lt;Measure&amp;gt;]] tag specifies the algorithm to use to assign models a score, e.g., [[Measures#CrossValidation| CrossValidation]].  It is also possible to specify which &#039;&#039;&#039;error function&#039;&#039;&#039; to  use, in the measure.  The default error function is &#039;&amp;lt;code&amp;gt;rootRelativeSquareError&amp;lt;/code&amp;gt;&#039;.&lt;br /&gt;
&lt;br /&gt;
Say you want to use [[Measures#CrossValidation| CrossValidation]] with the maximum absolute error, then you would put:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type=&amp;quot;CrossValidation&amp;quot; target=&amp;quot;0.001&amp;quot; errorFcn=&amp;quot;maxAbsoluteError&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the other hand, if you wanted to use the [[Measures#ValidationSet| ValidationSet]] measure with a relative root-mean-square error you would put:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type=&amp;quot;ValidationSet&amp;quot; target=&amp;quot;0.001&amp;quot; errorFcn=&amp;quot;relativeRms&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default error function is &#039;&amp;lt;code&amp;gt;rootRelativeSquareError&amp;lt;/code&amp;gt;&#039;.  These error functions can be found in the &amp;lt;code&amp;gt;src/matlab/tools/errorFunctions&amp;lt;/code&amp;gt; directory.  You are free to modify them and add your own.  Remember that the choice of error function is very important! Make sure you think well about it.  Also see [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
=== How do I enable more profilers? ===&lt;br /&gt;
&lt;br /&gt;
Go to the [[Config:ContextConfig#Profiling| &amp;lt;Profiling&amp;gt;]] tag and put &amp;lt;code&amp;gt;&amp;quot;&amp;lt;nowiki&amp;gt;.*&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; as the regular expression.  See also the next question.&lt;br /&gt;
&lt;br /&gt;
=== What regular expressions can I use to filter profilers? ===&lt;br /&gt;
&lt;br /&gt;
See the syntax [http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html here].&lt;br /&gt;
&lt;br /&gt;
=== How can I ensure deterministic results? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Random state]].&lt;br /&gt;
&lt;br /&gt;
=== How do I get a simple closed-form model (symbolic expression)? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Using a model]].&lt;br /&gt;
&lt;br /&gt;
=== How do I enable the Heterogenous evolution to automatically select the best model type? ===&lt;br /&gt;
&lt;br /&gt;
Simply use the [[Config:AdaptiveModelBuilder#heterogenetic| heterogenetic modelbuilder]] as you would any other.&lt;br /&gt;
&lt;br /&gt;
=== What is the combineOutputs option? ===&lt;br /&gt;
&lt;br /&gt;
See [[Running#Models_with_multiple_outputs]]&lt;br /&gt;
&lt;br /&gt;
=== What error function should I use? ===&lt;br /&gt;
&lt;br /&gt;
The default error function is the Root Relative Square Error (RRSE).  On the other hand meanRelativeError may be more intuitive but in that case you have to be careful if you have function values close to zero since in that case the relative error explodes or even gives infinity.  You could also use one of the combined relative error functions (contain a +1 in the denominator to account for small values) but then you get something between a relative and absolute error (=&amp;gt; hard to interpret).&lt;br /&gt;
&lt;br /&gt;
So to be sure an absolute error seems the safest bet (like the RMSE), however in that case you have to come up with sensible accuracy targets and realize that you will build models that try to fit the regions of high absolute value better than the low ones.&lt;br /&gt;
&lt;br /&gt;
Picking an error function is a very tricky business and many people do not realize this.  Which one is best for you and what targets you use ultimately depends on your application and on what kind of model you want.  There is no general answer.&lt;br /&gt;
&lt;br /&gt;
A recommended read is [http://www.springerlink.com/content/24104526223221u3/ is this paper].  See also the page on [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
=== I just want to generate an initial design (no sampling, no modeling) ===&lt;br /&gt;
&lt;br /&gt;
Do a regular SUMO run, except set the &#039;maxModelingIterations&#039; in the SUMO tag to 0.  The resulting run will only generate (and evaluate) the initial design and save it to samples.txt in the output directory.&lt;br /&gt;
&lt;br /&gt;
=== How do I start a run with the samples of of a previous run, or with a custom initial design? ===&lt;br /&gt;
&lt;br /&gt;
Use a Dataset design component, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;InitialDesign type=&amp;quot;DatasetDesign&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;file&amp;quot; value=&amp;quot;/path/to/the/file/containing/the/points.txt&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/InitialDesign&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The points of a previous run can be found in the samples.txt file in the output directory of the run you want to continue.&lt;br /&gt;
&lt;br /&gt;
As a sidenote, remark you can start the toolbox with *data points* of a previous run, but not with the *models* of a previous run.&lt;br /&gt;
&lt;br /&gt;
=== What is a level plot? ===&lt;br /&gt;
&lt;br /&gt;
A level plot is a plot that shows how the error histogram changes as the best model improves. An example is:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:levelplot.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Level plots only work if you have a separate dataset (test set) that the model can be checked against.  See the comments in default.xml for how to enable level plots.&lt;br /&gt;
&lt;br /&gt;
===I am getting a java out of memory error, what happened?===&lt;br /&gt;
Datasets are loaded through java. This means that the java heap space is used for storing the data. If you try to load a huge dataset (&amp;gt; 50MB), you might experience problems with the maximum heap size. You can solve this by raising the heap size as described on the following webpage:&lt;br /&gt;
[http://www.mathworks.com/support/solutions/data/1-18I2C.html]&lt;br /&gt;
&lt;br /&gt;
=== How do I force the output of the model to lie in a certain range ===&lt;br /&gt;
&lt;br /&gt;
See [[Measures#MinMax]].&lt;br /&gt;
&lt;br /&gt;
=== My problem is high dimensional and has a lot of input parameters (more than 10).  Can I use SUMO? ===&lt;br /&gt;
&lt;br /&gt;
That depends.  Remember that the main focus of SUMO is to generate accurate &#039;global&#039; models. If you want to do sampling the practical dimensionality is limited to around 6-8 (though it depends on the problem and how cheap the simulations are!).  Since the more dimensions the more space you need to fill.  At that point you need to see if you can extend the models with domain specific knowledge (to improve performance) or apply a dimensionality reduction method ([[FAQ#Can_the_toolbox_tell_me_which_are_the_most_important_inputs_.28.3D_variable_selection.29.3F|see the next question]]).  On the other hand, if you don&#039;t need to do sample selection but you have a fixed dataset which you want to model.  Then the performance on high dimensional data just depends on the model type.  For examples SVM type models are independent of the dimension and thus can always be applied.  Though things like feature selection are always recommended.&lt;br /&gt;
&lt;br /&gt;
=== Can the toolbox tell me which are the most important inputs (= variable selection)? ===&lt;br /&gt;
&lt;br /&gt;
When tackling high dimensional problems a crucial question is &amp;quot;Are all my input parameters relevant?&amp;quot;.  Normally domain knowledge would answer this question but this is not always straightforward. In those cases a whole set of algorithms exist for doing dimensionality reduction (= feature selection).  Support for some of these algorithms may eventually make it into the toolbox but are not currently implemented.  That is a whole PhD thesis on its own.  However, if a model type provides functions for input relevance determination the toolbox can leverage this.  For example, the LS-SVM model available in the toolbox supports Automatic Relevance Determination (ARD).  This means that if you use the SUMO Toolbox to generate an LS-SVM model, you can call the function &#039;&#039;ARD()&#039;&#039; on the model and it will give you a list of the inputs it thinks are most important.&lt;br /&gt;
&lt;br /&gt;
=== Should I use a Matlab script or a shell script for interfacing with my simulation code? ===&lt;br /&gt;
&lt;br /&gt;
When you want to link SUMO with an external simulation engine (ADS Momentum, SPECTRE, FEBIO, SWAT, ...) you need a [http://en.wikipedia.org/wiki/Shell_script shell script] (or executable) that can take the requested points from SUMO, setup the simulation engine (e.g., set necessary input files), calls the simulator for all the requested points, reads the output (e.g., one or more output files), and returns the results to SUMO (see [[Interfacing with the toolbox]]).&lt;br /&gt;
&lt;br /&gt;
Which one you choose (matlab script + [[Config:SampleEvaluator#matlab|Matlab Sample Evaluator]], or shell script/executable with [[Config:SampleEvaluator#local|Local Sample Evaluator]] is basically a matter of preference, take whatever is easiest for you.&lt;br /&gt;
&lt;br /&gt;
HOWEVER, there is one important consideration: Matlab does not support threads so this means that if you use a matlab script to interface with the simulation engine, simulations and modeling will happen sequentially, NOT in parallel.  This means the modeling code will sit around waiting, doing nothing, until the simulation(s) have finished.  If your simulation code takes a long time to run this is not very efficient.&lt;br /&gt;
&lt;br /&gt;
On the other hand, using a shell script/executable, does allow the modeling and simulation to occur in parallel (at least if you wrote your interface script in such a way that it can be run multiple times in parallel, i.e., no shared global directories or variables that can cause [http://en.wikipedia.org/wiki/Race_condition race conditions]).&lt;br /&gt;
&lt;br /&gt;
As a sidenote, note that if you already put work into a Matlab script, it is still possible to use a shell script, by writing a shell script that starts Matlab (using -nodisplay or -nojvm options), executes your script (using the -r option), and exits Matlab again.  Of course it is not very elegant and adds some overhead but depending on your situation it may be worth it.&lt;br /&gt;
&lt;br /&gt;
=== How can I look at the internal structure of a SUMO model ===&lt;br /&gt;
&lt;br /&gt;
See [[Using_a_model#Available_methods]].&lt;br /&gt;
&lt;br /&gt;
=== Is there any design documentation available? ===&lt;br /&gt;
&lt;br /&gt;
An in depth overview of the rationale and philosophy, including a treatment of the software architecture underlying the SUMO Toolbox is available in the form of a PhD dissertation.  A copy of this dissertation [http://www.sumo.intec.ugent.be/?q=system/files/2010_04_PhD_DirkGorissen.pdf is available here].&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== I have a problem and I want to report it ===&lt;br /&gt;
&lt;br /&gt;
See : [[Reporting problems]].&lt;br /&gt;
&lt;br /&gt;
=== I sometimes get flat models when using rational functions ===&lt;br /&gt;
&lt;br /&gt;
First make sure the model is indeed flat, and does not just appear so on the plot. You can verify this by looking at the output axis range and making sure it is within reasonable bounds. When there are poles in the model, the axis range is sometimes stretched to make it possible to plot the high values around the pole, causing the rest of the model to appear flat. If the model contains poles, refer to the next question for the solution.&lt;br /&gt;
&lt;br /&gt;
The [[Config:AdaptiveModelBuilder#rational| RationalModel]] tries to do a least squares fit, based on which monomials are allowed in numerator and denominator. We have experienced that some models just find a flat model as the best least squares fit. There are two causes for this:&lt;br /&gt;
&lt;br /&gt;
* The number of sample points is few, and the model parameters (as explained [[Model types explained#PolynomialModel|here]]) force the model to use only a very small set of degrees of freedom.  The solution in this case is to increase the minimum percentage bound in the RationalFactory section of your configuration file: change the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option to &amp;lt;code&amp;gt;&amp;quot;60,100&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;80,100&amp;quot;&amp;lt;/code&amp;gt;,  or even &amp;lt;code&amp;gt;&amp;quot;100,100&amp;quot;&amp;lt;/code&amp;gt;.  A setting of &amp;lt;code&amp;gt;&amp;quot;100,100&amp;quot;&amp;lt;/code&amp;gt; will force the polynomial models to always exactly interpolate.  However, note that this does not scale very well with the number of samples (to counter this you can set &amp;lt;code&amp;gt;&amp;quot;maxDegrees&amp;quot;&amp;lt;/code&amp;gt;). If, after increasing the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; you still get weird, spiky, models you simply need more samples or you should switch to a different model type.&lt;br /&gt;
* Another possibility is that given a set of monomial degrees, the flat function is just the best possible least squares fit. In that case you simply need to wait for more samples.&lt;br /&gt;
* The measure you are using is not accurately estimating the true error, try a different measure or error function.  Note that a maximum relative error is dangerous to use since a the 0-function (= a flat model) has a lower maximum relative error than a function which overshoots the true behavior in some places but is otherwise correct.&lt;br /&gt;
&lt;br /&gt;
=== When using rational functions I sometimes get &#039;spikes&#039; (poles) in my model ===&lt;br /&gt;
&lt;br /&gt;
When the denominator polynomial of a rational model has zeros inside the domain, the model will tend to infinity near these points. In most cases these models will only be recognized as being `the best&#039; for a short period of time. As more samples get selected these models get replaced by better ones and the spikes should disappear.&lt;br /&gt;
&lt;br /&gt;
So, it is possible that a rational model with &#039;spikes&#039; (caused by poles inside the domain) will be selected as best model. This may or may not be an issue, depending on what you want to use the model for. If it doesn&#039;t matter that the model is very inaccurate at one particular, small spot (near the pole), you can use the model with the pole and it should perform properly.&lt;br /&gt;
&lt;br /&gt;
However, if the model should have a reasonable error on the entire domain, several methods are available to reduce the chance of getting poles or remove the possibility altogether. The possible solutions are:&lt;br /&gt;
&lt;br /&gt;
* Simply wait for more data, usually spikes disappear (but not always).&lt;br /&gt;
* Lower the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option in the RationalFactory section of your configuration file.  For example, say you have 500 data points and if the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option is set to 100 percent it means the degrees of the polynomials in the rational function can go up to 500.  If you set the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option to 10, on the other hand, the maximum degree is set at 50 (= 10 percent of 500).  You can also use the &amp;lt;code&amp;gt;&amp;quot;maxDegrees&amp;quot;&amp;lt;/code&amp;gt; option to set an absolute bound.&lt;br /&gt;
* If you roughly know the output range your data should have, an easy way to eliminate poles is to use the [[Measures#MinMax| MinMax]] [[Measures| Measure]] together with your current measure ([[Measures#CrossValidation| CrossValidation]] by default).  This will cause models whose response falls outside the min-max bounds to be penalized extra, thus spikes should disappear.&lt;br /&gt;
* Use a different model type (RBF, ANN, SVM,...), as spikes are a typical problem of rational functions.&lt;br /&gt;
* Increase the population size if using the genetic version&lt;br /&gt;
* Try using the [[SampleSelector#RationalPoleSuppressionSampleSelector| RationalPoleSuppressionSampleSelector]], it was designed to get rid of this problem more quickly, but it only selects one sample at the time.&lt;br /&gt;
&lt;br /&gt;
However, these solutions may not still not suffice in some cases.  The underlying reason is that the order selection algorithm contains quite a lot of randomness, making it prone to over-fitting.  This issue is being worked on but will take some time.  Automatic order selection is not an easy problem&lt;br /&gt;
&lt;br /&gt;
=== There is no noise in my data yet the rational functions don&#039;t interpolate ===&lt;br /&gt;
&lt;br /&gt;
[[FAQ#I sometimes get flat models when using rational functions |see this question]].&lt;br /&gt;
&lt;br /&gt;
=== When loading a model from disk I get &amp;quot;Warning: Class &#039;:all:&#039; is an unknown object class.  Object &#039;model&#039; of this class has been converted to a structure.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You are trying to load a model file without the SUMO Toolbox in your Matlab path.  Make sure the toolbox is in your Matlab path. &lt;br /&gt;
&lt;br /&gt;
In short: Start Matlab, run &amp;lt;code&amp;gt;&amp;lt;SUMO-Toolbox-directory&amp;gt;/startup.m&amp;lt;/code&amp;gt; (to ensure the toolbox is in your path) and then try to load your model.&lt;br /&gt;
&lt;br /&gt;
=== When running the SUMO Toolbox you get an error like &amp;quot;No component with id &#039;annpso&#039; of type &#039;adaptive model builder&#039; found in config file.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This means you have specified to use a component with a certain id (in this case an AdaptiveModelBuilder component with id &#039;annpso&#039;) but a component with that id does not exist further down in the configuration file (in this particular case &#039;annpso&#039; does not exist but &#039;anngenetic&#039; or &#039;ann&#039; does, as a quick search through the configuration file will show).  So make sure you only declare components which have a definition lower down.  So see which components are available, simply scroll down the configuration file and see which id&#039;s are specified.  Please also refer to the [[Toolbox configuration#Declarations and Definitions | Declarations and Definitions]] page.&lt;br /&gt;
&lt;br /&gt;
=== When using NANN models I sometimes get &amp;quot;Runtime error in matrix library, Choldc failed. Matrix not positive definite&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This is a problem in the mex implementation of the [http://www.iau.dtu.dk/research/control/nnsysid.html NNSYSID] toolbox.  Simply delete the mex files, the Matlab implementation will be used and this will not cause any problems.&lt;br /&gt;
&lt;br /&gt;
=== When using FANN models I sometimes get &amp;quot;Invalid MEX-file createFann.mexa64, libfann.so.2: cannot open shared object file: No such file or directory.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This means Matlab cannot find the [http://leenissen.dk/fann/ FANN] library itself to link to dynamically.  Make sure the FANN libraries (stored in src/matlab/contrib/fann/src/.libs/) are in your library path, e.g., on unix systems, make sure they are included in LD_LIBRARY_PATH.&lt;br /&gt;
&lt;br /&gt;
=== Undeﬁned function or method ’createFann’ for input arguments of type ’double’. ===&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#When_using_FANN_models_I_sometimes_get_.22Invalid_MEX-file_createFann.mexa64.2C_libfann.so.2:_cannot_open_shared_object_file:_No_such_file_or_directory..22]]&lt;br /&gt;
&lt;br /&gt;
=== When trying to use SVM models I get &#039;Error during fitness evaluation: Error using ==&amp;gt; svmtrain at 170, Group must be a vector&#039; ===&lt;br /&gt;
&lt;br /&gt;
You forgot to build the SVM mex files for your platform.  For windows they are pre-compiled for you, on other systems you have to compile them yourself with the makefile.&lt;br /&gt;
&lt;br /&gt;
=== When running the toolbox you get something like &#039;??? Undefined variable &amp;quot;ibbt&amp;quot; or class &amp;quot;ibbt.sumo.config.ContextConfig.setRootDirectory&amp;quot;&#039; ===&lt;br /&gt;
&lt;br /&gt;
First see [[FAQ#What_is_the_relationship_between_Matlab_and_Java.3F | this FAQ entry]].&lt;br /&gt;
&lt;br /&gt;
This means Matlab cannot find the needed Java classes.  This typically means that you forgot to run &#039;startup&#039; (to set the path correctly) before running the toolbox (using &#039;go&#039;).  So make sure you always run &#039;startup&#039; before running &#039;go&#039; and that both commands are always executed in the toolbox root directory.&lt;br /&gt;
&lt;br /&gt;
If you did run &#039;startup&#039; correctly and you are still getting an error, check that Java is properly enabled:&lt;br /&gt;
&lt;br /&gt;
# typing &#039;usejava jvm&#039; should return 1 &lt;br /&gt;
# typing &#039;s = java.lang.String&#039;, this should &#039;&#039;not&#039;&#039; give an error&lt;br /&gt;
# typing &#039;version(&#039;-java&#039;)&#039; should return at least version 1.5.0&lt;br /&gt;
&lt;br /&gt;
If (1) returns 0, then the jvm of your Matlab installation is not enabled.  Check your Matlab installation or startup parameters (did you start Matlab with -nojvm?)&lt;br /&gt;
If (2) fails but (1) is ok, there is a very weird problem, check the Matlab documentation.&lt;br /&gt;
If (3) returns a version before 1.5.0 you will have to upgrade Matlab to a newer version or force Matlab to use a custom, newer, jvm (See the Matlab docs for how to do this).&lt;br /&gt;
&lt;br /&gt;
=== You get errors related to &#039;&#039;gaoptimset&#039;&#039;,&#039;&#039;psoptimset&#039;&#039;,&#039;&#039;saoptimset&#039;&#039;,&#039;&#039;newff&#039;&#039; not being found or unknown ===&lt;br /&gt;
&lt;br /&gt;
You are trying to use a component of the SUMO toolbox that requires a Matlab toolbox that you do not have.  See the [[System requirements]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== After upgrading I get all kinds of weird errors or warnings when I run my XML files ===&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#How_do_I_upgrade_to_a_newer_version.3F]]&lt;br /&gt;
&lt;br /&gt;
=== I get a warning about duplicate samples being selected, why is this? ===&lt;br /&gt;
&lt;br /&gt;
Sometimes, in special circumstances, multiple sample selectors may select the same sample at the same time. Even though in most cases this is detected and avoided, it can still happen when multiple outputs are modelled in one run, and each output is sampled by a different sample selector. These sample selectors may then accidentally choose the same new sample location.&lt;br /&gt;
&lt;br /&gt;
=== I sometimes see the error of the best model go up, shouldn&#039;t it decrease monotonically? ===&lt;br /&gt;
&lt;br /&gt;
There is no short answer here, it depends on the situation.  Below &#039;single objective&#039; refers to the case where during the hyperparameter optimization (= the modeling iteration) combineOutputs=false, and there is only a single measure set to &#039;on&#039;.  The other cases are classified as &#039;multi objective&#039;.  See also [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Sampling off&#039;&#039;&#039;&lt;br /&gt;
## &#039;&#039;Single objective&#039;&#039;: the error should always decrease monotonically, you should never see it rise. If it does [[reporting problems|report it as a bug]]&lt;br /&gt;
## &#039;&#039;Multi objective&#039;&#039;: There is a very small chance the error can temporarily decrease but it should be safe to ignore.  In this case it is best to use a multi objective enabled modeling algorithm&lt;br /&gt;
# &#039;&#039;&#039;Sampling on&#039;&#039;&#039;&lt;br /&gt;
## &#039;&#039;Single objective&#039;&#039;: inside each modeling iteration the error should always monotonically decrease.  At each sampling iteration the best models are updated (to reflect the new data), thus there the best model score may increase, this is normal behavior(*).  It is possible that the error increases for a short while, but as more samples come in it should decrease again.  If this does not happen you are using a poor measure or poor hyperparameter optimization algorithm, or there is a problem with the modeling technique itself (e.g., clustering in the datapoints is causing numerical problems).&lt;br /&gt;
## &#039;&#039;Multi objective&#039;&#039;: Combination of 1.2 and 2.1.&lt;br /&gt;
&lt;br /&gt;
(*) This is normal if you are using a measure like cross validation that is less reliable on little data than on more data.  However, in some cases you may wish to override this behavior if you are using a measure that is independent of the number of samples the model is trained with (e.g., a dense, external validation set).  In this case you can force a monotonic decrease by setting the &#039;keepOldModels&#039; option in the SUMO tag to true.  Use with caution!&lt;br /&gt;
&lt;br /&gt;
=== At the end of a run I get Undefined variable &amp;quot;ibbt&amp;quot; or class &amp;quot;ibbt.sumo.util.JpegImagesToMovie.createMovie&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This is normal, the warning printed out before the error explains why:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[WARNING] jmf.jar not found in the java classpath, movie creation may not work! Did you install the SUMO extension pack? Alternatively you can install the java media framwork from java.sun.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By default, at the end of a run, the toolbox will try to generate a movie of all the intermediate model plots.  To do this it requires the extension pack to be installed (you can download it from the SUMO lab website).  So install the extension pack and you will no longer get the error.  Alternatively you can simply set the &amp;quot;createMovie&amp;quot; option in the &amp;lt;SUMO&amp;gt; tag to &amp;quot;false&amp;quot;.&lt;br /&gt;
So note that there is nothing to worry about, everything has run correctly, it is just the movie creation that is failing.&lt;br /&gt;
&lt;br /&gt;
=== On startup I get the error &amp;quot;java.io.IOException: Couldn&#039;t get lock for output/SUMO-Toolbox.%g.%u.log&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This error means that SUMO is unable to create the log file.  Check the output directory exists and has the correct permissions.  If  your output directory is on a shared (network) drive this could also cause problems.  Also make sure you are running the toolbox (calling &#039;go&#039;) from the toolbox root directory, and not in some toolbox sub directory! This is very important.&lt;br /&gt;
&lt;br /&gt;
If you still have problems you can override the default logfile name and location as follows:&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;FileHandler&amp;gt; tag inside the &amp;lt;Logging&amp;gt; tag add the following option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;Option key=&amp;quot;Pattern&amp;quot; value=&amp;quot;My_SUMO_Log_file.log&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This means that from now on the sumo log file will be saved as the file &amp;quot;My_SUMO_Log_file.log&amp;quot; in the SUMO root directory.  You can use any path you like.&lt;br /&gt;
For more information about this option see [http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/FileHandler.html the FileHandler Javadoc].&lt;br /&gt;
&lt;br /&gt;
=== The Toolbox crashes with &amp;quot;Too many open files&amp;quot; what should I do? ===&lt;br /&gt;
&lt;br /&gt;
This is a known bug, see [[Known_bugs#Version_6.1]].&lt;br /&gt;
&lt;br /&gt;
If this does not fix your problem then do the following:&lt;br /&gt;
&lt;br /&gt;
On Windows try increasing the limit in windows as dictated by the error message.  Also, when you get the error, use the fopen(&amp;quot;all&amp;quot;) command to see which files are open and send us the list of filenames.  Then we can maybe further help you debug the problem.  Even better would be to use the Process Explorer utility [http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx available here]. When you get the error, dont shut down Matlab but start Process explorer and see which SUMO-Toolbox related files are open.  If you then [[Reporting_problems|let us know]] we can further debug the problem.&lt;br /&gt;
&lt;br /&gt;
On Linux again don&#039;t shut down Matlab but:&lt;br /&gt;
&lt;br /&gt;
* open a new terminal window&lt;br /&gt;
* type:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsof &amp;gt; openFiles.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Then [[Contact|send us]] the following information:&lt;br /&gt;
** the file openFiles.txt &lt;br /&gt;
** the exact Linux distribution you are using (Red Hat 10, CentOS 5, SUSE 11, etc).&lt;br /&gt;
** the output of&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
uname -a ; df -T ; mount&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a temporary workaround you can try increasing the maximum number of open files ([http://www.linuxforums.org/forum/redhat-fedora-linux-help/64716-where-chnage-file-max-permanently.html see for example here]).  We are currently debugging this issue.&lt;br /&gt;
&lt;br /&gt;
In general: to be safe it is always best to do a SUMO run from a clean Matlab startup, especially if the run is important or may take a long time.&lt;br /&gt;
&lt;br /&gt;
=== When using the LS-SVM models I get lots of warnings: &amp;quot;make sure lssvmFILE.x (lssvmFILE.exe) is in the current directory, change now to MATLAB implementation...&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
The LS-SVMs have a C implementation and a Matlab implementation.  If you dont have the compiled mex files it will use the matlab implementation and give a warning.  But everything will work properly.  To get rid of the warnings, compile the mex files [[Installation#Windows|as described here]], this can be done very easily.  Or simply comment out the lines that produce the output in the lssvmlab directory in src/matlab/contrib.&lt;br /&gt;
&lt;br /&gt;
=== I get an error &amp;quot;Undefined function or method &#039;trainlssvm&#039; for input arguments of type &#039;cell&#039;&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You most likely forgot to [[Installation#Extension_pack|install the extension pack]].&lt;br /&gt;
&lt;br /&gt;
=== When running the SUMO-Toolbox under Linux, the [http://en.wikipedia.org/wiki/X_Window_System X server] suddenly restarts and I am logged out of my session ===&lt;br /&gt;
&lt;br /&gt;
Note that in Linux there is an explicit difference between the [http://en.wikipedia.org/wiki/Linux_kernel kernel] and the [http://en.wikipedia.org/wiki/X_Window_System X display server].  If the kernel crashes or panics your system completely freezes (you have to reset manually) or your computer does a full reboot.  Luckily this is very rare.  However, if you display server (X) crashes or restarts it means your operating system is still running fine, its just that you have to log in again since your graphical session has terminated.  The FAQ entry is only for the latter.  If you find your kernel is panicing or freezing, that is a more fundamental problem and you should contact your system admin.&lt;br /&gt;
&lt;br /&gt;
So what happens is that after a few seconds when the toolbox wants to plot the first model [http://en.wikipedia.org/wiki/X_Window_System X] crashes and you are suddenly presented with a login screen.  The problem is not due to SUMO but rather to the Matlab - Display server interaction.&lt;br /&gt;
&lt;br /&gt;
What you should first do is set plotModels to false in the [[Config:ContextConfig]] tag, run again and see if the problem occurs again.  If it does please [[Reporting_problems| report it]].  If the problem does not occur you can then try the following:&lt;br /&gt;
&lt;br /&gt;
* Log in as root (or use [http://en.wikipedia.org/wiki/Sudo sudo])&lt;br /&gt;
* Edit the following configuration file using a text editor (pico, nano, vi, kwrite, gedit,...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/etc/X11/xorg.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: the exact location of the xorg.conf file may vary on your system.&lt;br /&gt;
&lt;br /&gt;
* Look for the following line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  Load         &amp;quot;glx&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Comment it out by replacing it by:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#  Load         &amp;quot;glx&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then save the file, restart your X server (if you do not know how to do this simply reboot your computer)&lt;br /&gt;
* Log in again, and try running the toolbox (making sure plotModels is set to true again).  It should now work.  If it still does not please [[Reporting_problems| report it]].&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* this is just an empirical workaround, if you have a better idea please [[Contact|let us know]]&lt;br /&gt;
* if you wish to debug further yourself please check the Xorg log files and those in /var/log&lt;br /&gt;
* another possible workaround is to start matlab with the &amp;quot;-nodisplay&amp;quot; option.  That could work as well.&lt;br /&gt;
&lt;br /&gt;
=== I get the error &amp;quot;Failed to close Matlab pool cleanly, error is Too many output arguments&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This happens if you run the toolbox on Matlab version 2008a and you have the parallel computing toolbox installed.  You can simply ignore this error message, it does not cause any problems. If you want to use SUMO with the parallel computing toolbox you will need Matlab 2008b.&lt;br /&gt;
&lt;br /&gt;
=== The toolbox seems to keep on running forever, when or how will it stop? ===&lt;br /&gt;
&lt;br /&gt;
The toolbox will keep on generating models and selecting data until one of the termination criteria has been reached. It is up to &#039;&#039;you&#039;&#039; to choose these targets carefully, so how low the toolbox runs simply depends on what targets you choose.  Please see [[Running#Understanding_the_control_flow]].&lt;br /&gt;
&lt;br /&gt;
Of course choosing a-priori targets up front is not always easy and there is no real solution for this, except thinking well about what type of model you want (see [[FAQ#I_dont_like_the_final_model_generated_by_SUMO_how_do_I_improve_it.3F]]).  In doubt you can always use a small value (or 0) and then simply quit the running toolbox using Ctrl-C when you think its been enough.&lt;br /&gt;
&lt;br /&gt;
While one could implement fancy, automatic stopping algorithms, their actual benefit is questionable.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Interfacing_with_the_toolbox&amp;diff=5093</id>
		<title>Interfacing with the toolbox</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Interfacing_with_the_toolbox&amp;diff=5093"/>
		<updated>2010-03-06T09:55:16Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Matlab simulator */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For information how to model your own problem/data see the [[Adding an example]] page.&lt;br /&gt;
&lt;br /&gt;
== IMPORTANT ==&lt;br /&gt;
&lt;br /&gt;
=== Input/Output Format ===&lt;br /&gt;
&lt;br /&gt;
* The SUMO Toolbox works on any &#039;&#039;&#039;input domain&#039;&#039;&#039; (= design space = input parameter ranges) specified in the [[simulator configuration]] file by a &#039;&amp;lt;code&amp;gt;minimum&amp;lt;/code&amp;gt;&#039; and &#039;&amp;lt;code&amp;gt;maximum&amp;lt;/code&amp;gt;&#039; attribute, for each input parameter.&lt;br /&gt;
** If a &#039;&amp;lt;code&amp;gt;minimum&amp;lt;/code&amp;gt;&#039; is not specified, the default value of &#039;&amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt;&#039; is assumed. &lt;br /&gt;
** If a &#039;&amp;lt;code&amp;gt;maximum&amp;lt;/code&amp;gt;&#039; is not specified, the default value of &#039;&amp;lt;code&amp;gt;+1&amp;lt;/code&amp;gt;&#039; is assumed. &lt;br /&gt;
** Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;InputParameters&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name=&amp;quot;a&amp;quot; type=&amp;quot;real&amp;quot; minimum=&amp;quot;47.0&amp;quot; maximum=&amp;quot;50.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name=&amp;quot;b&amp;quot; type=&amp;quot;real&amp;quot; minimum=&amp;quot;-20.0&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/InputParameters&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Be aware that all input values that are not in the specified input domain are trimmed, and thus not used in the modeling process.&lt;br /&gt;
&lt;br /&gt;
Also remember that:&lt;br /&gt;
* A &#039;&#039;&#039;Complex output&#039;&#039;&#039; should always be returned as &#039;&#039;&#039;2 real values&#039;&#039;&#039; (i.e., real part and imaginary part separately).&lt;br /&gt;
&lt;br /&gt;
Make sure your data source complies with these requirements. This is your responsibility.&lt;br /&gt;
&lt;br /&gt;
=== Batch Mode ===&lt;br /&gt;
&lt;br /&gt;
By default the toolbox will call your simulation code or script with one point at a time.  However, sometimes this may not be efficient and you want to execute multiple simulations in one go.  This is referred to as &#039;&#039;&#039;Batch Mode&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you want to use Batch mode you must add the &#039;&#039;batch&#039;&#039; and &#039;&#039;batchSize&#039;&#039; attributes to the &amp;lt;Executable&amp;gt; tag in your simulator file.  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Executable platform=&amp;quot;matlab&amp;quot; batch=&amp;quot;true&amp;quot; batchSize=&amp;quot;9&amp;quot;&amp;gt;/path/to/your/executable&amp;lt;/Executable&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This means that we want to use batch mode (batch = true) and we want to evaluate maximally 9 points per batch.&lt;br /&gt;
&lt;br /&gt;
== Passing data directly ==&lt;br /&gt;
&lt;br /&gt;
It is possible to pass data directly to the toolbox.  For how to do this just type &amp;quot;help go&amp;quot;. &lt;br /&gt;
Remember though that the dimensions of your data must still match the information in the [[Toolbox configuration|toolbox configuration file]] used.&lt;br /&gt;
&lt;br /&gt;
== Scattered datasets ==&lt;br /&gt;
&lt;br /&gt;
Your data source may also be a dataset containing some scattered data points.  Scattered means the points do not have to be in any order, i.e., they may be distributed in any way (e.g., randomly).  In this case your dataset must be stored in textual format and should contain exactly one data point per row with inputs and outputs separated by spaces.&lt;br /&gt;
&lt;br /&gt;
For example, for a problem with 3 inputs and 2 outputs your text file looks like:&lt;br /&gt;
&lt;br /&gt;
   -1.5743   -0.0328    0.2732   -0.6980   -0.8389&lt;br /&gt;
   -0.7347   -1.8929    0.2294   -0.9992   -1.5545&lt;br /&gt;
    0.7472    0.5474   -0.8233    0.9931    1.5339&lt;br /&gt;
    0.3766    0.8020   -0.0336    0.9758    1.4774&lt;br /&gt;
      ...       ...       ...       ...       ...&lt;br /&gt;
    0.8785    0.0362   -1.4864    0.8407    1.1173&lt;br /&gt;
&lt;br /&gt;
So the first three columns are the input points, the last two are the outputs.  The file may not contain any other comments or text. Again, remember that a complex output should be stored as two columns (real and imaginary).&lt;br /&gt;
&lt;br /&gt;
== Native simulator ==&lt;br /&gt;
&lt;br /&gt;
If your simulator is a native binary (e.g., exe file) or shell script it is expected to produce one &#039;&#039;&#039;output&#039;&#039;&#039; value per line.  So every output should be on a new line, with complex outputs using two lines.  Your code/script should NOT produce any other output. &lt;br /&gt;
&lt;br /&gt;
There are two ways your code/script can be called by the SUMO-Toolbox: &#039;&#039;&#039;batch mode&#039;&#039;&#039; and &#039;&#039;&#039;command line mode&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;command line mode&#039;&#039;&#039; (= the default option), the inputs are given to the simulator as command line arguments. A call to a simulator in command line mode looks like (for a problem with 3 input parameters):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./yourSimulationCode  0.5  0.6  0.5&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your code/script should then produce one value per output per line (as discussed above).&lt;br /&gt;
&lt;br /&gt;
If your simulator is called with &#039;&#039;&#039;batch mode&#039;&#039;&#039;, multiple samples can be evaluated in batches. The simulation code is called with NO command line arguments (except for optional options, see below). The input points for a batch are instead passed to your simulation code/script through standard input (&amp;lt;code&amp;gt;stdin&amp;lt;/code&amp;gt;). First, the size of the batch (the number of samples) is placed on &amp;lt;code&amp;gt;stdin&amp;lt;/code&amp;gt;. Then, one line is written for each sample. this means that in total, &amp;lt;code&amp;gt;1 + (batchSize * inputDimension)&amp;lt;/code&amp;gt; numbers are written to &amp;lt;code&amp;gt;stdin&amp;lt;/code&amp;gt;. An example of the format looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
3&lt;br /&gt;
0.5  0.6  0.5&lt;br /&gt;
0.2  0.7  0.3&lt;br /&gt;
0.2  0.6  0.8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The executable &#039;&amp;lt;code&amp;gt;yourSimulationCode&amp;lt;/code&amp;gt;&#039; must be in your path or the absolute path to the executable must be specified in the [[simulator configuration]] xml file.&lt;br /&gt;
&lt;br /&gt;
If your xml file contains options, these will be passed to the simulator as command line arguments (both in single and batch mode).  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./yourSimulationCode  0.5  0.6  0.5  option1=value1  option2=value2  etc..&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Matlab simulator ==&lt;br /&gt;
&lt;br /&gt;
=== Matlab function ===&lt;br /&gt;
&lt;br /&gt;
If your simulator is a Matlab file and you are not using batch mode, you just have to provide the following function to your code (for the same 3D example):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [output1 output2 output3] = mySimulationCode(input1, input2 ,input3)&lt;br /&gt;
   ...&lt;br /&gt;
   % do the calculation&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also pass inputs and outputs as a single matrices.  Then you just need to make sure the Matlab file is in your project directory (see [[Adding an example]]).&lt;br /&gt;
&lt;br /&gt;
Options (if present) are passed to the simulator as an extra cell array parameter: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [output1 output2 output3] = mySimulationCode(input1, input2 ,input3, options)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &#039;&amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt;&#039; is a cell array of strings of the form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
options : {&#039;option1&#039;,&#039;value1&#039;,&#039;option2&#039;,&#039;value2&#039;,...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: see also [[FAQ#Should_I_use_a_Matlab_script_or_a_shell_script_for_interfacing_with_my_simulation_code.3F]]&lt;br /&gt;
&lt;br /&gt;
=== Batch Mode ===&lt;br /&gt;
&lt;br /&gt;
If you ARE using batch mode, then your function must look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [result] = mySimulationCode(inputs)&lt;br /&gt;
   ...&lt;br /&gt;
   % do the calculation&lt;br /&gt;
   ...&lt;br /&gt;
   % IMPORTANT: you MUST return both inputs and output values&lt;br /&gt;
   result = [inputs outputs];&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Java simulator ==&lt;br /&gt;
&lt;br /&gt;
You can also implement your simulator as a [http://en.wikipedia.org/wiki/Java_%28programming_language%29 Java] class.  All you need to do is write a class that implements the &#039;&#039;Simulator&#039;&#039; interface.  And make sure the class file is in the Matlab Java path.&lt;br /&gt;
&lt;br /&gt;
Options are passed as a java Properties object.&lt;br /&gt;
&lt;br /&gt;
== Gridded datasets ==&lt;br /&gt;
Gridded datasets assume that the data is spread uniformly over a grid. By making this assumption, there is no need to store the sample locations as in a scattered dataset: only the output values are stored. However, you must specify the &#039;gridSize&#039; attribute in the [[Simulator configuration]] file. For example, setting &#039;gridSize=&amp;quot;20,40,50&amp;quot;&#039; means the toolbox will expect the gridded dataset to contain 40000 values per output (20-by-40-by-50 grid = 40000 points for one output).&lt;br /&gt;
&lt;br /&gt;
Because the input values are not stored, the dataset must adhere to a strict order in which the output values are specified: the points must be specified in lexicographic order. For example, if you want to define a 3-dimensional dataset with grid size 2x3x2 on the [-1,1] domain, you must provide the outputs for the samples in the following order:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
value at [-1, -1, -1]&lt;br /&gt;
value at [-1, -1,  1]&lt;br /&gt;
value at [-1,  0, -1]&lt;br /&gt;
value at [-1,  0,  1]&lt;br /&gt;
value at [-1,  1, -1]&lt;br /&gt;
value at [-1,  1,  1]&lt;br /&gt;
value at [ 1, -1, -1]&lt;br /&gt;
value at [ 1, -1,  1]&lt;br /&gt;
value at [ 1,  0, -1]&lt;br /&gt;
value at [ 1,  0,  1]&lt;br /&gt;
value at [ 1,  1, -1]&lt;br /&gt;
value at [ 1,  1,  1]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The advantage of gridded datasets is that they are a bit faster to work with.  However, they are a bit harder to interpret and to transfer to other programs who expect a scattered format.  In general we recommend to simply use the scattered format.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Interfacing_with_the_toolbox&amp;diff=5092</id>
		<title>Interfacing with the toolbox</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Interfacing_with_the_toolbox&amp;diff=5092"/>
		<updated>2010-03-06T09:49:56Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* IMPORTANT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For information how to model your own problem/data see the [[Adding an example]] page.&lt;br /&gt;
&lt;br /&gt;
== IMPORTANT ==&lt;br /&gt;
&lt;br /&gt;
=== Input/Output Format ===&lt;br /&gt;
&lt;br /&gt;
* The SUMO Toolbox works on any &#039;&#039;&#039;input domain&#039;&#039;&#039; (= design space = input parameter ranges) specified in the [[simulator configuration]] file by a &#039;&amp;lt;code&amp;gt;minimum&amp;lt;/code&amp;gt;&#039; and &#039;&amp;lt;code&amp;gt;maximum&amp;lt;/code&amp;gt;&#039; attribute, for each input parameter.&lt;br /&gt;
** If a &#039;&amp;lt;code&amp;gt;minimum&amp;lt;/code&amp;gt;&#039; is not specified, the default value of &#039;&amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt;&#039; is assumed. &lt;br /&gt;
** If a &#039;&amp;lt;code&amp;gt;maximum&amp;lt;/code&amp;gt;&#039; is not specified, the default value of &#039;&amp;lt;code&amp;gt;+1&amp;lt;/code&amp;gt;&#039; is assumed. &lt;br /&gt;
** Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;InputParameters&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name=&amp;quot;a&amp;quot; type=&amp;quot;real&amp;quot; minimum=&amp;quot;47.0&amp;quot; maximum=&amp;quot;50.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name=&amp;quot;b&amp;quot; type=&amp;quot;real&amp;quot; minimum=&amp;quot;-20.0&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/InputParameters&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Be aware that all input values that are not in the specified input domain are trimmed, and thus not used in the modeling process.&lt;br /&gt;
&lt;br /&gt;
Also remember that:&lt;br /&gt;
* A &#039;&#039;&#039;Complex output&#039;&#039;&#039; should always be returned as &#039;&#039;&#039;2 real values&#039;&#039;&#039; (i.e., real part and imaginary part separately).&lt;br /&gt;
&lt;br /&gt;
Make sure your data source complies with these requirements. This is your responsibility.&lt;br /&gt;
&lt;br /&gt;
=== Batch Mode ===&lt;br /&gt;
&lt;br /&gt;
By default the toolbox will call your simulation code or script with one point at a time.  However, sometimes this may not be efficient and you want to execute multiple simulations in one go.  This is referred to as &#039;&#039;&#039;Batch Mode&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you want to use Batch mode you must add the &#039;&#039;batch&#039;&#039; and &#039;&#039;batchSize&#039;&#039; attributes to the &amp;lt;Executable&amp;gt; tag in your simulator file.  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Executable platform=&amp;quot;matlab&amp;quot; batch=&amp;quot;true&amp;quot; batchSize=&amp;quot;9&amp;quot;&amp;gt;/path/to/your/executable&amp;lt;/Executable&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This means that we want to use batch mode (batch = true) and we want to evaluate maximally 9 points per batch.&lt;br /&gt;
&lt;br /&gt;
== Passing data directly ==&lt;br /&gt;
&lt;br /&gt;
It is possible to pass data directly to the toolbox.  For how to do this just type &amp;quot;help go&amp;quot;. &lt;br /&gt;
Remember though that the dimensions of your data must still match the information in the [[Toolbox configuration|toolbox configuration file]] used.&lt;br /&gt;
&lt;br /&gt;
== Scattered datasets ==&lt;br /&gt;
&lt;br /&gt;
Your data source may also be a dataset containing some scattered data points.  Scattered means the points do not have to be in any order, i.e., they may be distributed in any way (e.g., randomly).  In this case your dataset must be stored in textual format and should contain exactly one data point per row with inputs and outputs separated by spaces.&lt;br /&gt;
&lt;br /&gt;
For example, for a problem with 3 inputs and 2 outputs your text file looks like:&lt;br /&gt;
&lt;br /&gt;
   -1.5743   -0.0328    0.2732   -0.6980   -0.8389&lt;br /&gt;
   -0.7347   -1.8929    0.2294   -0.9992   -1.5545&lt;br /&gt;
    0.7472    0.5474   -0.8233    0.9931    1.5339&lt;br /&gt;
    0.3766    0.8020   -0.0336    0.9758    1.4774&lt;br /&gt;
      ...       ...       ...       ...       ...&lt;br /&gt;
    0.8785    0.0362   -1.4864    0.8407    1.1173&lt;br /&gt;
&lt;br /&gt;
So the first three columns are the input points, the last two are the outputs.  The file may not contain any other comments or text. Again, remember that a complex output should be stored as two columns (real and imaginary).&lt;br /&gt;
&lt;br /&gt;
== Native simulator ==&lt;br /&gt;
&lt;br /&gt;
If your simulator is a native binary (e.g., exe file) or shell script it is expected to produce one &#039;&#039;&#039;output&#039;&#039;&#039; value per line.  So every output should be on a new line, with complex outputs using two lines.  Your code/script should NOT produce any other output. &lt;br /&gt;
&lt;br /&gt;
There are two ways your code/script can be called by the SUMO-Toolbox: &#039;&#039;&#039;batch mode&#039;&#039;&#039; and &#039;&#039;&#039;command line mode&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;command line mode&#039;&#039;&#039; (= the default option), the inputs are given to the simulator as command line arguments. A call to a simulator in command line mode looks like (for a problem with 3 input parameters):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./yourSimulationCode  0.5  0.6  0.5&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your code/script should then produce one value per output per line (as discussed above).&lt;br /&gt;
&lt;br /&gt;
If your simulator is called with &#039;&#039;&#039;batch mode&#039;&#039;&#039;, multiple samples can be evaluated in batches. The simulation code is called with NO command line arguments (except for optional options, see below). The input points for a batch are instead passed to your simulation code/script through standard input (&amp;lt;code&amp;gt;stdin&amp;lt;/code&amp;gt;). First, the size of the batch (the number of samples) is placed on &amp;lt;code&amp;gt;stdin&amp;lt;/code&amp;gt;. Then, one line is written for each sample. this means that in total, &amp;lt;code&amp;gt;1 + (batchSize * inputDimension)&amp;lt;/code&amp;gt; numbers are written to &amp;lt;code&amp;gt;stdin&amp;lt;/code&amp;gt;. An example of the format looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
3&lt;br /&gt;
0.5  0.6  0.5&lt;br /&gt;
0.2  0.7  0.3&lt;br /&gt;
0.2  0.6  0.8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The executable &#039;&amp;lt;code&amp;gt;yourSimulationCode&amp;lt;/code&amp;gt;&#039; must be in your path or the absolute path to the executable must be specified in the [[simulator configuration]] xml file.&lt;br /&gt;
&lt;br /&gt;
If your xml file contains options, these will be passed to the simulator as command line arguments (both in single and batch mode).  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./yourSimulationCode  0.5  0.6  0.5  option1=value1  option2=value2  etc..&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Matlab simulator ==&lt;br /&gt;
&lt;br /&gt;
=== Matlab function ===&lt;br /&gt;
&lt;br /&gt;
If your simulator is a Matlab file you just have to provide the following function to your code (for the same 3D example):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
function [output1 output2 output3] = mySimulationCode(input1, input2 ,input3)&lt;br /&gt;
   ...&lt;br /&gt;
   % do the calculation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you just need to make sure the Matlab file is in your project directory (see [[Adding an example]]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Options (if present) are passed to the simulator as an extra cell array parameter: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
function [output1 output2 output3] = mySimulationCode(input1, input2 ,input3, options)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &#039;&amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt;&#039; is a cell array of strings of the form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
options : {&#039;option1&#039;,&#039;value1&#039;,&#039;option2&#039;,&#039;value2&#039;,...}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: see also [[FAQ#Should_I_use_a_Matlab_script_or_a_shell_script_for_interfacing_with_my_simulation_code.3F]]&lt;br /&gt;
&lt;br /&gt;
== Java simulator ==&lt;br /&gt;
&lt;br /&gt;
You can also implement your simulator as a [http://en.wikipedia.org/wiki/Java_%28programming_language%29 Java] class.  All you need to do is write a class that implements the &#039;&#039;Simulator&#039;&#039; interface.  And make sure the class file is in the Matlab Java path.&lt;br /&gt;
&lt;br /&gt;
Options are passed as a java Properties object.&lt;br /&gt;
&lt;br /&gt;
== Gridded datasets ==&lt;br /&gt;
Gridded datasets assume that the data is spread uniformly over a grid. By making this assumption, there is no need to store the sample locations as in a scattered dataset: only the output values are stored. However, you must specify the &#039;gridSize&#039; attribute in the [[Simulator configuration]] file. For example, setting &#039;gridSize=&amp;quot;20,40,50&amp;quot;&#039; means the toolbox will expect the gridded dataset to contain 40000 values per output (20-by-40-by-50 grid = 40000 points for one output).&lt;br /&gt;
&lt;br /&gt;
Because the input values are not stored, the dataset must adhere to a strict order in which the output values are specified: the points must be specified in lexicographic order. For example, if you want to define a 3-dimensional dataset with grid size 2x3x2 on the [-1,1] domain, you must provide the outputs for the samples in the following order:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
value at [-1, -1, -1]&lt;br /&gt;
value at [-1, -1,  1]&lt;br /&gt;
value at [-1,  0, -1]&lt;br /&gt;
value at [-1,  0,  1]&lt;br /&gt;
value at [-1,  1, -1]&lt;br /&gt;
value at [-1,  1,  1]&lt;br /&gt;
value at [ 1, -1, -1]&lt;br /&gt;
value at [ 1, -1,  1]&lt;br /&gt;
value at [ 1,  0, -1]&lt;br /&gt;
value at [ 1,  0,  1]&lt;br /&gt;
value at [ 1,  1, -1]&lt;br /&gt;
value at [ 1,  1,  1]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The advantage of gridded datasets is that they are a bit faster to work with.  However, they are a bit harder to interpret and to transfer to other programs who expect a scattered format.  In general we recommend to simply use the scattered format.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Interfacing_with_the_toolbox&amp;diff=5091</id>
		<title>Interfacing with the toolbox</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Interfacing_with_the_toolbox&amp;diff=5091"/>
		<updated>2010-03-06T09:49:30Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* IMPORTANT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For information how to model your own problem/data see the [[Adding an example]] page.&lt;br /&gt;
&lt;br /&gt;
== IMPORTANT ==&lt;br /&gt;
&lt;br /&gt;
* The SUMO Toolbox works on any &#039;&#039;&#039;input domain&#039;&#039;&#039; (= design space = input parameter ranges) specified in the [[simulator configuration]] file by a &#039;&amp;lt;code&amp;gt;minimum&amp;lt;/code&amp;gt;&#039; and &#039;&amp;lt;code&amp;gt;maximum&amp;lt;/code&amp;gt;&#039; attribute, for each input parameter.&lt;br /&gt;
** If a &#039;&amp;lt;code&amp;gt;minimum&amp;lt;/code&amp;gt;&#039; is not specified, the default value of &#039;&amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt;&#039; is assumed. &lt;br /&gt;
** If a &#039;&amp;lt;code&amp;gt;maximum&amp;lt;/code&amp;gt;&#039; is not specified, the default value of &#039;&amp;lt;code&amp;gt;+1&amp;lt;/code&amp;gt;&#039; is assumed. &lt;br /&gt;
** Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;InputParameters&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name=&amp;quot;a&amp;quot; type=&amp;quot;real&amp;quot; minimum=&amp;quot;47.0&amp;quot; maximum=&amp;quot;50.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name=&amp;quot;b&amp;quot; type=&amp;quot;real&amp;quot; minimum=&amp;quot;-20.0&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/InputParameters&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Be aware that all input values that are not in the specified input domain are trimmed, and thus not used in the modeling process.&lt;br /&gt;
&lt;br /&gt;
Also remember that:&lt;br /&gt;
* A &#039;&#039;&#039;Complex output&#039;&#039;&#039; should always be returned as &#039;&#039;&#039;2 real values&#039;&#039;&#039; (i.e., real part and imaginary part separately).&lt;br /&gt;
&lt;br /&gt;
Make sure your data source complies with these requirements. This is your responsibility.&lt;br /&gt;
&lt;br /&gt;
=== Batch Mode ===&lt;br /&gt;
&lt;br /&gt;
By default the toolbox will call your simulation code or script with one point at a time.  However, sometimes this may not be efficient and you want to execute multiple simulations in one go.  This is referred to as &#039;&#039;&#039;Batch Mode&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you want to use Batch mode you must add the &#039;&#039;batch&#039;&#039; and &#039;&#039;batchSize&#039;&#039; attributes to the &amp;lt;Executable&amp;gt; tag in your simulator file.  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Executable platform=&amp;quot;matlab&amp;quot; batch=&amp;quot;true&amp;quot; batchSize=&amp;quot;9&amp;quot;&amp;gt;/path/to/your/executable&amp;lt;/Executable&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This means that we want to use batch mode (batch = true) and we want to evaluate maximally 9 points per batch.&lt;br /&gt;
&lt;br /&gt;
== Passing data directly ==&lt;br /&gt;
&lt;br /&gt;
It is possible to pass data directly to the toolbox.  For how to do this just type &amp;quot;help go&amp;quot;. &lt;br /&gt;
Remember though that the dimensions of your data must still match the information in the [[Toolbox configuration|toolbox configuration file]] used.&lt;br /&gt;
&lt;br /&gt;
== Scattered datasets ==&lt;br /&gt;
&lt;br /&gt;
Your data source may also be a dataset containing some scattered data points.  Scattered means the points do not have to be in any order, i.e., they may be distributed in any way (e.g., randomly).  In this case your dataset must be stored in textual format and should contain exactly one data point per row with inputs and outputs separated by spaces.&lt;br /&gt;
&lt;br /&gt;
For example, for a problem with 3 inputs and 2 outputs your text file looks like:&lt;br /&gt;
&lt;br /&gt;
   -1.5743   -0.0328    0.2732   -0.6980   -0.8389&lt;br /&gt;
   -0.7347   -1.8929    0.2294   -0.9992   -1.5545&lt;br /&gt;
    0.7472    0.5474   -0.8233    0.9931    1.5339&lt;br /&gt;
    0.3766    0.8020   -0.0336    0.9758    1.4774&lt;br /&gt;
      ...       ...       ...       ...       ...&lt;br /&gt;
    0.8785    0.0362   -1.4864    0.8407    1.1173&lt;br /&gt;
&lt;br /&gt;
So the first three columns are the input points, the last two are the outputs.  The file may not contain any other comments or text. Again, remember that a complex output should be stored as two columns (real and imaginary).&lt;br /&gt;
&lt;br /&gt;
== Native simulator ==&lt;br /&gt;
&lt;br /&gt;
If your simulator is a native binary (e.g., exe file) or shell script it is expected to produce one &#039;&#039;&#039;output&#039;&#039;&#039; value per line.  So every output should be on a new line, with complex outputs using two lines.  Your code/script should NOT produce any other output. &lt;br /&gt;
&lt;br /&gt;
There are two ways your code/script can be called by the SUMO-Toolbox: &#039;&#039;&#039;batch mode&#039;&#039;&#039; and &#039;&#039;&#039;command line mode&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;command line mode&#039;&#039;&#039; (= the default option), the inputs are given to the simulator as command line arguments. A call to a simulator in command line mode looks like (for a problem with 3 input parameters):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./yourSimulationCode  0.5  0.6  0.5&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your code/script should then produce one value per output per line (as discussed above).&lt;br /&gt;
&lt;br /&gt;
If your simulator is called with &#039;&#039;&#039;batch mode&#039;&#039;&#039;, multiple samples can be evaluated in batches. The simulation code is called with NO command line arguments (except for optional options, see below). The input points for a batch are instead passed to your simulation code/script through standard input (&amp;lt;code&amp;gt;stdin&amp;lt;/code&amp;gt;). First, the size of the batch (the number of samples) is placed on &amp;lt;code&amp;gt;stdin&amp;lt;/code&amp;gt;. Then, one line is written for each sample. this means that in total, &amp;lt;code&amp;gt;1 + (batchSize * inputDimension)&amp;lt;/code&amp;gt; numbers are written to &amp;lt;code&amp;gt;stdin&amp;lt;/code&amp;gt;. An example of the format looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
3&lt;br /&gt;
0.5  0.6  0.5&lt;br /&gt;
0.2  0.7  0.3&lt;br /&gt;
0.2  0.6  0.8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The executable &#039;&amp;lt;code&amp;gt;yourSimulationCode&amp;lt;/code&amp;gt;&#039; must be in your path or the absolute path to the executable must be specified in the [[simulator configuration]] xml file.&lt;br /&gt;
&lt;br /&gt;
If your xml file contains options, these will be passed to the simulator as command line arguments (both in single and batch mode).  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./yourSimulationCode  0.5  0.6  0.5  option1=value1  option2=value2  etc..&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Matlab simulator ==&lt;br /&gt;
&lt;br /&gt;
=== Matlab function ===&lt;br /&gt;
&lt;br /&gt;
If your simulator is a Matlab file you just have to provide the following function to your code (for the same 3D example):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
function [output1 output2 output3] = mySimulationCode(input1, input2 ,input3)&lt;br /&gt;
   ...&lt;br /&gt;
   % do the calculation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you just need to make sure the Matlab file is in your project directory (see [[Adding an example]]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Options (if present) are passed to the simulator as an extra cell array parameter: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
function [output1 output2 output3] = mySimulationCode(input1, input2 ,input3, options)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &#039;&amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt;&#039; is a cell array of strings of the form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
options : {&#039;option1&#039;,&#039;value1&#039;,&#039;option2&#039;,&#039;value2&#039;,...}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: see also [[FAQ#Should_I_use_a_Matlab_script_or_a_shell_script_for_interfacing_with_my_simulation_code.3F]]&lt;br /&gt;
&lt;br /&gt;
== Java simulator ==&lt;br /&gt;
&lt;br /&gt;
You can also implement your simulator as a [http://en.wikipedia.org/wiki/Java_%28programming_language%29 Java] class.  All you need to do is write a class that implements the &#039;&#039;Simulator&#039;&#039; interface.  And make sure the class file is in the Matlab Java path.&lt;br /&gt;
&lt;br /&gt;
Options are passed as a java Properties object.&lt;br /&gt;
&lt;br /&gt;
== Gridded datasets ==&lt;br /&gt;
Gridded datasets assume that the data is spread uniformly over a grid. By making this assumption, there is no need to store the sample locations as in a scattered dataset: only the output values are stored. However, you must specify the &#039;gridSize&#039; attribute in the [[Simulator configuration]] file. For example, setting &#039;gridSize=&amp;quot;20,40,50&amp;quot;&#039; means the toolbox will expect the gridded dataset to contain 40000 values per output (20-by-40-by-50 grid = 40000 points for one output).&lt;br /&gt;
&lt;br /&gt;
Because the input values are not stored, the dataset must adhere to a strict order in which the output values are specified: the points must be specified in lexicographic order. For example, if you want to define a 3-dimensional dataset with grid size 2x3x2 on the [-1,1] domain, you must provide the outputs for the samples in the following order:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
value at [-1, -1, -1]&lt;br /&gt;
value at [-1, -1,  1]&lt;br /&gt;
value at [-1,  0, -1]&lt;br /&gt;
value at [-1,  0,  1]&lt;br /&gt;
value at [-1,  1, -1]&lt;br /&gt;
value at [-1,  1,  1]&lt;br /&gt;
value at [ 1, -1, -1]&lt;br /&gt;
value at [ 1, -1,  1]&lt;br /&gt;
value at [ 1,  0, -1]&lt;br /&gt;
value at [ 1,  0,  1]&lt;br /&gt;
value at [ 1,  1, -1]&lt;br /&gt;
value at [ 1,  1,  1]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The advantage of gridded datasets is that they are a bit faster to work with.  However, they are a bit harder to interpret and to transfer to other programs who expect a scattered format.  In general we recommend to simply use the scattered format.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Interfacing_with_the_toolbox&amp;diff=5090</id>
		<title>Interfacing with the toolbox</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Interfacing_with_the_toolbox&amp;diff=5090"/>
		<updated>2010-03-06T09:43:55Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Native simulator */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For information how to model your own problem/data see the [[Adding an example]] page.&lt;br /&gt;
&lt;br /&gt;
== IMPORTANT ==&lt;br /&gt;
&lt;br /&gt;
* The SUMO Toolbox works on any &#039;&#039;&#039;input domain&#039;&#039;&#039; (= design space = input parameter ranges) specified in the [[simulator configuration]] file by a &#039;&amp;lt;code&amp;gt;minimum&amp;lt;/code&amp;gt;&#039; and &#039;&amp;lt;code&amp;gt;maximum&amp;lt;/code&amp;gt;&#039; attribute, for each input parameter.&lt;br /&gt;
** If a &#039;&amp;lt;code&amp;gt;minimum&amp;lt;/code&amp;gt;&#039; is not specified, the default value of &#039;&amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt;&#039; is assumed. &lt;br /&gt;
** If a &#039;&amp;lt;code&amp;gt;maximum&amp;lt;/code&amp;gt;&#039; is not specified, the default value of &#039;&amp;lt;code&amp;gt;+1&amp;lt;/code&amp;gt;&#039; is assumed. &lt;br /&gt;
** Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;InputParameters&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name=&amp;quot;a&amp;quot; type=&amp;quot;real&amp;quot; minimum=&amp;quot;47.0&amp;quot; maximum=&amp;quot;50.0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name=&amp;quot;b&amp;quot; type=&amp;quot;real&amp;quot; minimum=&amp;quot;-20.0&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/InputParameters&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Be aware that all input values that are not in the specified input domain are trimmed, and thus not used in the modeling process.&lt;br /&gt;
&lt;br /&gt;
Also remember that:&lt;br /&gt;
* A &#039;&#039;&#039;Complex output&#039;&#039;&#039; should always be returned as &#039;&#039;&#039;2 real values&#039;&#039;&#039; (i.e., real part and imaginary part separately).&lt;br /&gt;
&lt;br /&gt;
Make sure your data source complies with these requirements. This is your responsibility.&lt;br /&gt;
&lt;br /&gt;
== Passing data directly ==&lt;br /&gt;
&lt;br /&gt;
It is possible to pass data directly to the toolbox.  For how to do this just type &amp;quot;help go&amp;quot;. &lt;br /&gt;
Remember though that the dimensions of your data must still match the information in the [[Toolbox configuration|toolbox configuration file]] used.&lt;br /&gt;
&lt;br /&gt;
== Scattered datasets ==&lt;br /&gt;
&lt;br /&gt;
Your data source may also be a dataset containing some scattered data points.  Scattered means the points do not have to be in any order, i.e., they may be distributed in any way (e.g., randomly).  In this case your dataset must be stored in textual format and should contain exactly one data point per row with inputs and outputs separated by spaces.&lt;br /&gt;
&lt;br /&gt;
For example, for a problem with 3 inputs and 2 outputs your text file looks like:&lt;br /&gt;
&lt;br /&gt;
   -1.5743   -0.0328    0.2732   -0.6980   -0.8389&lt;br /&gt;
   -0.7347   -1.8929    0.2294   -0.9992   -1.5545&lt;br /&gt;
    0.7472    0.5474   -0.8233    0.9931    1.5339&lt;br /&gt;
    0.3766    0.8020   -0.0336    0.9758    1.4774&lt;br /&gt;
      ...       ...       ...       ...       ...&lt;br /&gt;
    0.8785    0.0362   -1.4864    0.8407    1.1173&lt;br /&gt;
&lt;br /&gt;
So the first three columns are the input points, the last two are the outputs.  The file may not contain any other comments or text. Again, remember that a complex output should be stored as two columns (real and imaginary).&lt;br /&gt;
&lt;br /&gt;
== Native simulator ==&lt;br /&gt;
&lt;br /&gt;
If your simulator is a native binary (e.g., exe file) or shell script it is expected to produce one &#039;&#039;&#039;output&#039;&#039;&#039; value per line.  So every output should be on a new line, with complex outputs using two lines.  Your code/script should NOT produce any other output. &lt;br /&gt;
&lt;br /&gt;
There are two ways your code/script can be called by the SUMO-Toolbox: &#039;&#039;&#039;batch mode&#039;&#039;&#039; and &#039;&#039;&#039;command line mode&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;command line mode&#039;&#039;&#039; (= the default option), the inputs are given to the simulator as command line arguments. A call to a simulator in command line mode looks like (for a problem with 3 input parameters):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./yourSimulationCode  0.5  0.6  0.5&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your code/script should then produce one value per output per line (as discussed above).&lt;br /&gt;
&lt;br /&gt;
If your simulator is called with &#039;&#039;&#039;batch mode&#039;&#039;&#039;, multiple samples can be evaluated in batches. The simulation code is called with NO command line arguments (except for optional options, see below). The input points for a batch are instead passed to your simulation code/script through standard input (&amp;lt;code&amp;gt;stdin&amp;lt;/code&amp;gt;). First, the size of the batch (the number of samples) is placed on &amp;lt;code&amp;gt;stdin&amp;lt;/code&amp;gt;. Then, one line is written for each sample. this means that in total, &amp;lt;code&amp;gt;1 + (batchSize * inputDimension)&amp;lt;/code&amp;gt; numbers are written to &amp;lt;code&amp;gt;stdin&amp;lt;/code&amp;gt;. An example of the format looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
3&lt;br /&gt;
0.5  0.6  0.5&lt;br /&gt;
0.2  0.7  0.3&lt;br /&gt;
0.2  0.6  0.8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The executable &#039;&amp;lt;code&amp;gt;yourSimulationCode&amp;lt;/code&amp;gt;&#039; must be in your path or the absolute path to the executable must be specified in the [[simulator configuration]] xml file.&lt;br /&gt;
&lt;br /&gt;
If your xml file contains options, these will be passed to the simulator as command line arguments (both in single and batch mode).  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./yourSimulationCode  0.5  0.6  0.5  option1=value1  option2=value2  etc..&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Matlab simulator ==&lt;br /&gt;
&lt;br /&gt;
=== Matlab function ===&lt;br /&gt;
&lt;br /&gt;
If your simulator is a Matlab file you just have to provide the following function to your code (for the same 3D example):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
function [output1 output2 output3] = mySimulationCode(input1, input2 ,input3)&lt;br /&gt;
   ...&lt;br /&gt;
   % do the calculation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you just need to make sure the Matlab file is in your project directory (see [[Adding an example]]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Options (if present) are passed to the simulator as an extra cell array parameter: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
function [output1 output2 output3] = mySimulationCode(input1, input2 ,input3, options)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &#039;&amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt;&#039; is a cell array of strings of the form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
options : {&#039;option1&#039;,&#039;value1&#039;,&#039;option2&#039;,&#039;value2&#039;,...}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: see also [[FAQ#Should_I_use_a_Matlab_script_or_a_shell_script_for_interfacing_with_my_simulation_code.3F]]&lt;br /&gt;
&lt;br /&gt;
== Java simulator ==&lt;br /&gt;
&lt;br /&gt;
You can also implement your simulator as a [http://en.wikipedia.org/wiki/Java_%28programming_language%29 Java] class.  All you need to do is write a class that implements the &#039;&#039;Simulator&#039;&#039; interface.  And make sure the class file is in the Matlab Java path.&lt;br /&gt;
&lt;br /&gt;
Options are passed as a java Properties object.&lt;br /&gt;
&lt;br /&gt;
== Gridded datasets ==&lt;br /&gt;
Gridded datasets assume that the data is spread uniformly over a grid. By making this assumption, there is no need to store the sample locations as in a scattered dataset: only the output values are stored. However, you must specify the &#039;gridSize&#039; attribute in the [[Simulator configuration]] file. For example, setting &#039;gridSize=&amp;quot;20,40,50&amp;quot;&#039; means the toolbox will expect the gridded dataset to contain 40000 values per output (20-by-40-by-50 grid = 40000 points for one output).&lt;br /&gt;
&lt;br /&gt;
Because the input values are not stored, the dataset must adhere to a strict order in which the output values are specified: the points must be specified in lexicographic order. For example, if you want to define a 3-dimensional dataset with grid size 2x3x2 on the [-1,1] domain, you must provide the outputs for the samples in the following order:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
value at [-1, -1, -1]&lt;br /&gt;
value at [-1, -1,  1]&lt;br /&gt;
value at [-1,  0, -1]&lt;br /&gt;
value at [-1,  0,  1]&lt;br /&gt;
value at [-1,  1, -1]&lt;br /&gt;
value at [-1,  1,  1]&lt;br /&gt;
value at [ 1, -1, -1]&lt;br /&gt;
value at [ 1, -1,  1]&lt;br /&gt;
value at [ 1,  0, -1]&lt;br /&gt;
value at [ 1,  0,  1]&lt;br /&gt;
value at [ 1,  1, -1]&lt;br /&gt;
value at [ 1,  1,  1]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The advantage of gridded datasets is that they are a bit faster to work with.  However, they are a bit harder to interpret and to transfer to other programs who expect a scattered format.  In general we recommend to simply use the scattered format.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=FAQ&amp;diff=5038</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=FAQ&amp;diff=5038"/>
		<updated>2009-11-03T09:43:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* How can I make the toolbox run faster? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
=== What is a global surrogate model? ===&lt;br /&gt;
&lt;br /&gt;
A global [http://en.wikipedia.org/wiki/Surrogate_model surrogate model] is a mathematical model that mimics the behavior of a computationally expensive simulation code over &#039;&#039;&#039;the complete parameter space&#039;&#039;&#039; as accurately as possible, using as little data points as possible. So note that optimization is not the primary goal, although it can be done as a post-processing step. Global surrogate models are useful for:&lt;br /&gt;
&lt;br /&gt;
* design space exploration, to get a &#039;&#039;feel&#039;&#039; of how the different parameters behave&lt;br /&gt;
* sensitivity analysis&lt;br /&gt;
* &#039;&#039;what-if&#039;&#039; analysis&lt;br /&gt;
* prototyping&lt;br /&gt;
* visualization&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
In addition they are a cheap way to model large scale systems, multiple global surrogate models can be chained together in a model cascade.&lt;br /&gt;
&lt;br /&gt;
See also the [[About]] page.&lt;br /&gt;
&lt;br /&gt;
=== What about surrogate driven optimization? ===&lt;br /&gt;
&lt;br /&gt;
When coining the term &#039;&#039;&#039;surrogate driven optimization&#039;&#039;&#039; most people associate it with trust-region strategies and simple polynomial models. These frameworks first construct a local surrogate which is optimized to find an optimum. Afterwards, a move limit strategy decides how the local surrogate is scaled and/or moved through the input space. Subsequently the surrogate is rebuild and optimized. I.e. the surrogate zooms in to the global optimum. For instance the [http://www.cs.sandia.gov/DAKOTA/ DAKOTA] Toolbox implements such strategies where the surrogate construction is separated from optimization.&lt;br /&gt;
&lt;br /&gt;
Such a framework was earlier implemented in the SUMO Toolbox but was deprecated as it didn&#039;t fit the philosophy and design of the toolbox. &lt;br /&gt;
&lt;br /&gt;
Instead another, equally powerful, approach was taken. The current optimization framework is in fact a sampling selection strategy that balances local and global search. In other words, it balances between exploring the input space and exploiting the information the surrogate gives us.&lt;br /&gt;
&lt;br /&gt;
A configuration example can be found [[Config:SampleSelector#expectedImprovement|here]].&lt;br /&gt;
&lt;br /&gt;
=== What is (adaptive) sampling? Why is it used? ===&lt;br /&gt;
&lt;br /&gt;
In classical Design of Experiments you need to specify the design of your experiment up-front. Or in other words, you have to say up-front how many data points you need and how they should be distributed.  Two examples are Central Composite Designs and Latin Hypercube designs.  However, if your data is expensive to generate (e.g., an expensive simulation code) it is not clear how many points are needed up-front.  Instead data points are selected adaptively, only a couple at a time.  This process of incrementally selecting new data points in regions that are the most interesting is called adaptive sampling, sequential design, or active learning.  Of course the sampling process needs to start from somewhere so the very first set of points is selected based on a fixed, classic experimental design.  See also [[Running#Understanding_the_control_flow]].&lt;br /&gt;
SUMO provides a number of different sampling algorithms: [[SampleSelector]]&lt;br /&gt;
&lt;br /&gt;
Of course sometimes you dont want to do sampling.  For example if you have a fixed dataset you just want to load all the data in one go and model that.  For how to do this see [[FAQ#How_do_I_turn_off_adaptive_sampling_.28run_the_toolbox_for_a_fixed_set_of_samples.29.3F]].&lt;br /&gt;
&lt;br /&gt;
=== What about dynamical, time dependent data? ===&lt;br /&gt;
&lt;br /&gt;
The original design and purpose was to tackle static input-output systems, where there is no memory. Just a complex mapping that must be learnt and approximated. Of course you can take a fixed time interval and apply the toolbox but that typically is not a desired solution.  Usually you are interested in time series prediction, e.g., given a set of output values from time t=0 to t=k, predict what happens at time t=k+1,k+2,...&lt;br /&gt;
&lt;br /&gt;
The toolbox was originally not intended for this purpose.  However, it is quite easy to add support for recurrent models.  Automatic generation of dynamical models would involve adding a new model type (just like you would add a new regression technique) or require adapting an existing one.  For example it would not be too much work to adapt the ANN or SVM models to support dynamic problems.  The only extra work besides that would be to add a new [[Measures|Measure]] that can evaluate the fidelity of the models&#039; prediction.&lt;br /&gt;
&lt;br /&gt;
Naturally though, you would be unable to use sample selection (since it makes no sense in those problems).  Unless of course there is a specialized need for it.  In that case you would add a new [[SampleSelector]].&lt;br /&gt;
&lt;br /&gt;
For more information on this topic [[Contact]] us.&lt;br /&gt;
&lt;br /&gt;
=== What about classification problems? ===&lt;br /&gt;
&lt;br /&gt;
The main focus of the SUMO Toolbox is on regression/function approximation.  However, the framework for hyperparameter optimization, model selection, etc.  can also be used for classification.  Starting from version 6.3 a demo file is included in the distribution that shows how this works on a well known test problem.  If you want to play around with this feature without waiting for 6.3 to be released [[Contact|just let us know]].&lt;br /&gt;
&lt;br /&gt;
=== Can the toolbox drive my simulation code directly? ===&lt;br /&gt;
&lt;br /&gt;
Yes it can.  See the [[Interfacing with the toolbox]] page.&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between the M3-Toolbox and the SUMO-Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
The SUMO toolbox is a complete, feature-full framework for automatically generating approximation models and performing adaptive sampling. In contrast, the M3-Toolbox was more of a proof-of-principle.&lt;br /&gt;
&lt;br /&gt;
=== What happened to the M3-Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
The M3 Toolbox project has been discontinued (Fall 2007) and superseded by the SUMO Toolbox. Please contact tom.dhaene@ua.ac.be for any inquiries and requests about the M3 Toolbox.&lt;br /&gt;
&lt;br /&gt;
=== How can I stay up to date with the latest news? ===&lt;br /&gt;
&lt;br /&gt;
To stay up to date with the latest news and releases, we also recommend subscribing to our newsletter [http://www.sumo.intec.ugent.be here].  Traffic will be kept to a minimum (1 message every 2-3 months) and you can unsubscribe at any time.&lt;br /&gt;
&lt;br /&gt;
You can also follow our blog: [http://sumolab.blogspot.com/ http://sumolab.blogspot.com/].&lt;br /&gt;
&lt;br /&gt;
=== What is the roadmap for the future? ===&lt;br /&gt;
&lt;br /&gt;
There is no explicit roadmap since much depends on where our research leads us, what feedback we get, which problems we are working on, etc.  However, to get an idea of features to come you can always check the [[Whats new]] page.&lt;br /&gt;
&lt;br /&gt;
You can also follow our blog: [http://sumolab.blogspot.com/ http://sumolab.blogspot.com/].&lt;br /&gt;
&lt;br /&gt;
=== Will there be an R/Scilab/Octave/Sage/.. version? ===&lt;br /&gt;
&lt;br /&gt;
At the start of the project we considered moving to one of the available open source alternatives to Matlab.  However, after much discussion we decided against this for several reasons(*), including:&lt;br /&gt;
&lt;br /&gt;
* The quality and amount of available Matlab documentation &lt;br /&gt;
* The quality and number of Matlab toolboxes&lt;br /&gt;
* Many well documented interfacing options (esp. Java)&lt;br /&gt;
* Existing experience and know-how&lt;br /&gt;
&lt;br /&gt;
Matlab sure has its problems and deficiencies but the number of advanced algorithms and toolboxes make it a very attractive platform.  Equally important is the fact that every function is properly documented and includes examples, tutorials, and in some cases GUI tools.  A lot of things would have been a lot harder and/or time consuming to implement on one of the other platforms.  The other platforms remain on our radar however, and we do look into them from time to time.  In principle it would even be possible to write a bridge between Matlab and them.&lt;br /&gt;
&lt;br /&gt;
(*) We are not saying those projects are poor or useless, quite the contrary.  Its just that given our situation, goals, and resources at the time, Matlab was the best choice for us.&lt;br /&gt;
&lt;br /&gt;
=== What are collaboration options? ===&lt;br /&gt;
&lt;br /&gt;
We will gladly help out with any SUMO-Toolbox related questions or problems. However, since we are a university research group the most interesting goal for us is to work towards some joint publication (e.g., we can help with the modeling of your problem).  Alternatively, it is always nice if we could use your data/problem (fully referenced and/or anonymized if necessary of course) as an example application during a conference presentation or in a PhD thesis.&lt;br /&gt;
&lt;br /&gt;
The most interesting case is if your problem involves sample selection and modeling.  This means you have some simulation code or script to drive and you want an accurate model while minimizing the number of data points.  In this case, in order for us to optimally help you it would be easiest if we could run your simulation code (or script) locally or access it remotely.  Else its difficult to give good recommendations about what settings to use.&lt;br /&gt;
&lt;br /&gt;
If this is not possible (e.g., expensive, proprietary or secret modeling code) or if your problem does not involve sample selection, you can send us a fixed data set that is representative of your problem. Again, this may be fully anonymized and will be kept confidential of course.&lt;br /&gt;
&lt;br /&gt;
In either case (code or dataset) remember:&lt;br /&gt;
&lt;br /&gt;
* the data file should be an ASCII file in column format (each row containing one data point) (see also [[Interfacing_with_the_toolbox]])&lt;br /&gt;
* include a short description of your data:&lt;br /&gt;
** number of inputs and number of outputs&lt;br /&gt;
** the range of each input (or scaled to [-1 1] if you do not wish to disclose this)&lt;br /&gt;
** if the outputs are real or complex valued&lt;br /&gt;
** how noisy the data is or if it is completely deterministic (computer simulation) (please also see: [[FAQ#My_data_contains_noise_can_the_SUMO-Toolbox_help_me.3F]]).&lt;br /&gt;
** if possible the expected range of each output (or scaled if you do not wish to disclose this)&lt;br /&gt;
** if possible the names of each input/output + a short description of what they mean&lt;br /&gt;
** any further insight you have about the data, expected behavior, expected importance of each input, etc.&lt;br /&gt;
&lt;br /&gt;
If you have any further questions or comments related to this please [[Contact]] us.&lt;br /&gt;
&lt;br /&gt;
=== Can you help me model my problem? ===&lt;br /&gt;
&lt;br /&gt;
Please see the previous question: [[FAQ#What_are_collaboration_options.3F]]&lt;br /&gt;
&lt;br /&gt;
== Installation and Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== What is the relationship between Matlab and Java? ===&lt;br /&gt;
&lt;br /&gt;
Many people do not know this, but your Matlab installation automatically includes a Java virtual machine.  By default, Matlab seamlessly integrates with Java, allowing you to create Java objects from the command line (e.g., &#039;s = java.lang.String&#039;).  It is possible to disable java support but in order to use the SUMO Toolbox it should not be.  To check if Java is enabled you can use the &#039;usejava&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== What is Java, why do I need it, do I have to install it, etc. ? ===&lt;br /&gt;
&lt;br /&gt;
The short answer is: no, dont worry about it.  The long answer is: Some of the code of the SUMO Toolbox is written in [http://en.wikipedia.org/wiki/Java_(programming_language) Java], since it makes a lot more sense in many situations and is a proper programming language instead of a scripting language like Matlab.  Since Matlab automatically includes a JVM to run Java code there is nothing you need to do or worry about (see the previous FAQ entry).  Unless its not working of course, in that case see [[FAQ#When_running_the_toolbox_you_get_something_like_.27.3F.3F.3F_Undefined_variable_.22ibbt.22_or_class_.22ibbt.sumo.config.ContextConfig.setRootDirectory.22.27]].&lt;br /&gt;
&lt;br /&gt;
=== What is XML? ===&lt;br /&gt;
&lt;br /&gt;
XML stands for eXtensible Markup Language and is related to HTML (= the stuff web pages are written in).  The first thing you have to understand is that &#039;&#039;&#039;does not do anything&#039;&#039;&#039;. Honest. Many engineers are not used to it and think it is some complicated computer programming language-stuff-thingy.  This is of course not the case (we ignore some of the fancy stuff you can do with it for now).  XML is a markup language meaning, it provides some rules how you can annotate or structure existing text.&lt;br /&gt;
&lt;br /&gt;
The way SUMO uses XML is really simple and there is not much to understand.  First some simple terminology.  Take the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Foo attr=&amp;quot;bar&amp;quot;&amp;gt;bla bla bla&amp;lt;/Foo&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here we have &#039;&#039;&#039;a tag&#039;&#039;&#039; called &#039;&#039;Foo&#039;&#039; containing text &#039;&#039;bla bla bla&#039;&#039;.  The tag Foo also has an &#039;&#039;&#039;attribute&#039;&#039;&#039; &#039;&#039;attr&#039;&#039; with value &#039;&#039;bar&#039;&#039;.  &#039;&amp;lt;Foo&amp;gt;&#039; is what we call the &#039;&#039;&#039;opening tag&#039;&#039;&#039;, and &#039;&amp;lt;/Foo&amp;gt;&#039; is the &#039;&#039;&#039;closing tag&#039;&#039;&#039;.  Each time you open a tag you must close it again.  How you name the tags or attributes it totally up to you, you choose :)&lt;br /&gt;
&lt;br /&gt;
Lets take a more interesting example.  Here we have used XML to represent information about a receipe for pancakes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;recipe category=&amp;quot;dessert&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;Pancakes&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;sumo@intec.ugent.be&amp;lt;/author&amp;gt;&lt;br /&gt;
  &amp;lt;date&amp;gt;Wed, 14 Jun 95&amp;lt;/date&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
    Good old fashioned pancakes.&lt;br /&gt;
  &amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;ingredients&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
        &amp;lt;amount&amp;gt;3&amp;lt;/amount&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;eggs&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
         &amp;lt;amount&amp;gt;0.5 tablespoon&amp;lt;/amount&amp;gt;&lt;br /&gt;
         &amp;lt;type&amp;gt;salt&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
  &amp;lt;/ingredients&amp;gt;&lt;br /&gt;
  &amp;lt;preparation&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/preparation&amp;gt;&lt;br /&gt;
 &amp;lt;/recipe&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So basically, you see that XML is just a way to structure, order, and group information.  Thats it!  So SUMO basically uses it to store and structure configuration options.  And this works well due to the nice hierarchical nature of XML.&lt;br /&gt;
&lt;br /&gt;
If you understand this there is nothing else to it in order to be able to understand the SUMO configuration files.  If you need more information see the tutorial here: [http://www.w3schools.com/XML/xml_whatis.asp http://www.w3schools.com/XML/xml_whatis.asp].  You can also have a look at the wikipedia page here: [http://en.wikipedia.org/wiki/XML http://en.wikipedia.org/wiki/XML]&lt;br /&gt;
&lt;br /&gt;
=== Why does SUMO use XML? ===&lt;br /&gt;
&lt;br /&gt;
XML is the defacto standard way of structuring information. This ranges from spreadsheet files (Microsoft Excel for example), to configuration data, to scientific data, ...  There are even whole database systems based solely on XML.  So basically, its an intuitive way to structure data and it is used everywhere.  This makes that there are a very large number of libraries and programming languages available that can parse, and handle XML easily.  That means less work for the programmer.  Then of course there is stuff like XSLT, XQuery, etc that makes life even easier.&lt;br /&gt;
So basically, it would not make sense for SUMO to use any other format :)&lt;br /&gt;
&lt;br /&gt;
=== I get an error that SUMO is not yet activated ===&lt;br /&gt;
&lt;br /&gt;
Make sure you installed the activation file that was mailed to you as is explained in the [[Installation]] instructions.  Also double check your system meets the [[System requirements]] and that [http://www.sumowiki.intec.ugent.be/index.php/FAQ#When_running_the_toolbox_you_get_something_like_.27.3F.3F.3F_Undefined_variable_.22ibbt.22_or_class_.22ibbt.sumo.config.ContextConfig.setRootDirectory.22.27|java java is enabled].  To fully verify that the activation file installation is correct ensure that the file ContextConfig.class is present in the directory &#039;&#039;&amp;lt;SUMO installation directory&amp;gt;/bin/java/ibbt/sumo/config&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Please note that more flexible research licenses are available if it is possible to [[FAQ#What_are_collaboration_options.3F|collaborate in any way]].&lt;br /&gt;
&lt;br /&gt;
== Upgrading ==&lt;br /&gt;
&lt;br /&gt;
=== How do I upgrade to a newer version? ===&lt;br /&gt;
&lt;br /&gt;
Delete your old &amp;lt;code&amp;gt;&amp;lt;SUMO-Toolbox-directory&amp;gt;&amp;lt;/code&amp;gt; completely and replace it by the new one.  Install the new activation file / extension pack as  before (see [[Installation]]), start Matlab and make sure the default run works.  To port your old configuration files to the new version: make a copy of default.xml (from the new version) and copy over your custom changes (from the old version) one by one.  This should prevent any weirdness if the XML structure has changed between releases.&lt;br /&gt;
&lt;br /&gt;
If you had a valid activation file for the previous version, just [[Contact]] us (giving your SUMOlab website username) and we will send you a new activation file.  Note that to update an activation file you must first unzip a copy of the toolbox to a new directory and install the activation file as if it was the very first time.  Upgrading of an activation file without performing a new toolbox install is (unfortunately) not (yet) supported.&lt;br /&gt;
&lt;br /&gt;
== Using ==&lt;br /&gt;
&lt;br /&gt;
=== I have no idea how to use the toolbox, what should I do? ===&lt;br /&gt;
&lt;br /&gt;
See: [[Running#Getting_started]]&lt;br /&gt;
&lt;br /&gt;
=== I want to try one of the different examples ===&lt;br /&gt;
&lt;br /&gt;
See [[Running#Running_different_examples]].&lt;br /&gt;
&lt;br /&gt;
=== I want to model my own problem ===&lt;br /&gt;
&lt;br /&gt;
See : [[Adding an example]].&lt;br /&gt;
&lt;br /&gt;
=== I want to contribute some data/patch/documentation/... ===&lt;br /&gt;
&lt;br /&gt;
See : [[Contributing]].&lt;br /&gt;
&lt;br /&gt;
=== How do I interface with the SUMO Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Interfacing with the toolbox]].&lt;br /&gt;
&lt;br /&gt;
=== What configuration options (model type, sample selection algorithm, ...) should I use for my problem? ===&lt;br /&gt;
&lt;br /&gt;
See [[General_guidelines]].&lt;br /&gt;
&lt;br /&gt;
=== Ok, I generated a model, what can I do with it? ===&lt;br /&gt;
&lt;br /&gt;
See: [[Using a model]].&lt;br /&gt;
&lt;br /&gt;
=== How can I share a model created by the SUMO Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Using a model#Model_portability| Model portability]].&lt;br /&gt;
&lt;br /&gt;
=== I dont like the final model generated by SUMO how do I improve it? ===&lt;br /&gt;
&lt;br /&gt;
Before you start the modeling you should really ask youself this question: &#039;&#039;What properties do I want to see in the final model?&#039;&#039;  You have to think about what for you constitutes a good model and what constitutes a poor model. Then you should rank those properties depending on how important you find them.  Examples are:&lt;br /&gt;
&lt;br /&gt;
* accuracy in the training data&lt;br /&gt;
** is it important that the error in the training data is exactly 0, or do you prefer some smoothing&lt;br /&gt;
* accuracy outside the training data&lt;br /&gt;
** this is the validation or test error, how important is proper generalization (usually this is very important)&lt;br /&gt;
* what does accuracy mean to you? a low maximum error, a low average error, both, ...&lt;br /&gt;
* smoothness&lt;br /&gt;
** should your model be perfectly smooth or is it acceptable that you have a few small ripples here and there for example&lt;br /&gt;
* are some regions of the response more important than others?&lt;br /&gt;
** for example you may want to be certain that the minima/maxima are captured very accurately but everything in between is less important&lt;br /&gt;
* are there particular special features that your model should have&lt;br /&gt;
** for example, capture underlying poles or discontinuities correctly&lt;br /&gt;
* extrapolation capability&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
It is important to note that often these criteria may be conflicting.  The classical example is fitting noisy data: the lower your training error the higher your testing error.  A natural approach is to combine multiple criteria, see [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
Once you have decided on a set of requirements the question is then, can the SUMO-Toolbox produce a model that meets them? In SUMO model generation is driven by one or more [[Measures]].  So you should choose the combination of [[Measures]] that most closely match your requirements.  Of course we can not provide a Measure for every single property, but it is very straightforward to [[Add_Measure|add your own Measure]].&lt;br /&gt;
&lt;br /&gt;
Now, lets say you have chosen what you think are the best Measures but you are still not happy with the final model.  Reasons could be:&lt;br /&gt;
&lt;br /&gt;
* you need more modeling iterations or you need to build more models per iteration (see [[Running#Understanding_the_control_flow]]). This will result in a more extensive search of the model parameter space, but will take longer to run.&lt;br /&gt;
* you should switch to a different model parameter optimization algorithm (e.g., for example instead of the Pattern Search variant, try the Genetic Algorithm variant of your AdaptiveModelBuilder.)&lt;br /&gt;
* the model type you are using is not ideally suited to your data&lt;br /&gt;
* there simply is not enough data, use a larger initial design or perform more sampling iterations to get more information per dimension&lt;br /&gt;
* maybe the sample distribution is causing troubles for your model (e.g., Kriging can have problems with clustered data).  In that case it could be worthwhile to choose a different sample selection algorithm.&lt;br /&gt;
* the range of your response variable is not ideal (for example, neural networks have trouble modeling data if the range of the outputs is very very small)&lt;br /&gt;
&lt;br /&gt;
You may also refer to the following [[General_guidelines]].  Finally, of course it may be that your problem is simply a very difficult one and does not approximate well.  But, still you should at least get something satisfactory.&lt;br /&gt;
&lt;br /&gt;
If you are having these kinds of problems, please [[Reporting_problems|let us know]] and we will gladly help out.&lt;br /&gt;
&lt;br /&gt;
=== My data contains noise can the SUMO-Toolbox help me? ===&lt;br /&gt;
&lt;br /&gt;
The original purpose of the SUMO-Toolbox was for it to be used in conjunction with computer simulations.  Since these are fully deterministic you do not have to worry about noise in the data and all the problems it causes.  However, the methods in the toolbox are general fitting methods that work on noisy data as well.  So yes, the toolbox can be used with noisy data, but you will just have to be more careful about how you apply the methods and how you perform model selection.  Its only when you use the toolbox with a noisy simulation engine that a few special  options may need to be set.  In that case [[Contact]] us for more information.&lt;br /&gt;
&lt;br /&gt;
Note though, that the toolbox is not a statistical package, if you have noisy data and you need noise estimation algorithms, kernel smoothing algorithms, etc.  you should look towards other tools.&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between a ModelBuilder and a ModelFactory? ===&lt;br /&gt;
&lt;br /&gt;
See [[Add Model Type]].&lt;br /&gt;
&lt;br /&gt;
=== Why are the Neural Networks so slow? ===&lt;br /&gt;
&lt;br /&gt;
The ANN models are an extremely powerful model type that give very good results in many problems.  However, they are quite slow to use.  There are some things you can do:&lt;br /&gt;
&lt;br /&gt;
* use trainlm or trainscg instead of the default training function trainbr.  trainbr gives very good, smooth results but is slower to use.  If results with trainlm are not good enough, try using msereg as a performance function.&lt;br /&gt;
* try setting the training goal (= the SSE to reach during training) to a small positive number (e.g., 1e-5) instead of 0.&lt;br /&gt;
* check that the output range of your problem is not very small.  If your response data lies between 10e-5 and 10e-9 for example it will be very hard for the neural net to learn it.  In that case rescale your data to a more sane range.&lt;br /&gt;
* switch from ANN to one of the other neural network modelers: fanngenetic or nanngenetic. These are a lot faster than the default backend based on the [http://www.mathworks.com/products/neuralnet/ Matlab Neural Network Toolbox].  However, the accuracy is usually not as good.&lt;br /&gt;
* If you are using [[Measures#CrossValidation| CrossValidation]] try to switch to a different measure since CrossValidation is very expensive to use. CrossValidation is used by default if you have not defined a [[Measures| measure]] yourself.  When using one of the neural network model types, try to use a different measure if you can.  For example, our tests have shown that minimizing the sum of [[Measures#SampleError| SampleError]] and [[Measures#LRMMeasure| LRMMeasure]] can give equal or even better results than CrossValidation, while being much cheaper (see [[Multi-Objective Modeling]] for how to combine multiple measures).  See also the comments in &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; for examples.&lt;br /&gt;
&lt;br /&gt;
See also [[FAQ#How_can_I_make_the_toolbox_run_faster.3F]]&lt;br /&gt;
&lt;br /&gt;
=== How can I make the toolbox run faster? ===&lt;br /&gt;
&lt;br /&gt;
There are a number of things you can do to speed things up.  These are listed below.  Remember though that the main reason the toolbox may seem to be slow is due to the many models being built as part of the hyperparameter optimization.  Please make sure you fully understand the [[Running#Understanding_the_control_flow|control flow described here]] before trying more advanced options.&lt;br /&gt;
&lt;br /&gt;
* First of all check that your virus scanner is not interfering with Matlab. If McAfee or any other program wants to scan every file SUMO generates this really slows things down and your computer becomes unusable.&lt;br /&gt;
&lt;br /&gt;
* Turn off the plotting of models in [[Config:ContextConfig#PlotOptions| ContextConfig]], you can always generate plots from the saved mat files&lt;br /&gt;
&lt;br /&gt;
* This is an important one.  For most model builders there is an option &amp;quot;maxFunEals&amp;quot;, &amp;quot;maxIterations&amp;quot;, or equivalent.  Change this value to change the maximum number of models built between 2 sampling iterations.  The higher this number, the slower, but the better the models &#039;&#039;may&#039;&#039; be.  Equivalently, for the Genetic model builders reduce the population size and the number of generations.&lt;br /&gt;
&lt;br /&gt;
* If you are using [[Measures#CrossValidation]] see if you can avoid it and use one of the other measures or a combination of measures (see [[Multi-Objective Modeling]]&lt;br /&gt;
&lt;br /&gt;
* If you are using a very dense [[Measures#ValidationSet]] as your Measure, this means that every single model will be evaluated on that data set.  For some models like RBF, Kriging, SVM, this can slow things down.&lt;br /&gt;
&lt;br /&gt;
* Disable some, or even all of the [[Config:ContextConfig#Profiling| profilers]] or disable the output handlers that draw charts.  For example, you might use the following configuration for the profilers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Profiling&amp;gt;&lt;br /&gt;
	&amp;lt;Profiler name=&amp;quot;.*share.*|.*ensemble.*|.*Level.*&amp;quot; enabled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toImage&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toFile&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Profiler&amp;gt;&lt;br /&gt;
			&lt;br /&gt;
	&amp;lt;Profiler name=&amp;quot;.*&amp;quot; enabled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toFile&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Profiler&amp;gt;&lt;br /&gt;
&amp;lt;/Profiling&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;.*&amp;quot; means match any one or more characters ([http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html see here for the full list of supported wildcards]).  Thus in this example all the profilers that have &amp;quot;share&amp;quot;, &amp;quot;ensemble&amp;quot;, or &amp;quot;Level&amp;quot; in their name shoud be enabled and should be saved as a text file (toFile) AND as an image file (toImage).  All the other profilers should be saved just to file. The idea is to only save to image what you want as an image since image generation is expensive.  If you do this or switch off image generation completely you will see everything run much faster.&lt;br /&gt;
&lt;br /&gt;
* Decrease the logging granularity, a log level of FINE (the default is FINEST or ALL) is more then granular enough.  Setting it to FINE, INFO, or even WARNING should speed things up.&lt;br /&gt;
&lt;br /&gt;
* If you have a multi-core/multi-cpu machine:&lt;br /&gt;
** if you have the Matlab Parallel Computing Toolbox, try setting the parallelMode option to true in [[Config:ContextConfig]].  Now all model training occurs in parallel.  This may give unexpected errors in some cases so beware when using.&lt;br /&gt;
** if you are using a native executable or script as the sample evaluator set the threadCount variable in [[Config:SampleEvaluator#LocalSampleEvaluator| LocalSampleEvaluator]] equal to the number of cores/CPUs (only do this if it is ok to start multiple instances of your simulation script in parallel!)&lt;br /&gt;
&lt;br /&gt;
* Dont use the Min-Max measure, it can slow things down. See also [[FAQ#How_do_I_force_the_output_of_the_model_to_lie_in_a_certain_range]]&lt;br /&gt;
&lt;br /&gt;
* If you are using neural networks see [[FAQ#Why_are_the_Neural_Networks_so_slow.3F]]&lt;br /&gt;
&lt;br /&gt;
* If you are having problems with very slow or seemingly hanging runs:&lt;br /&gt;
** Do a run inside the [http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/matlab_env/f9-17018.html&amp;amp;http://www.google.be/search?client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;channel=s&amp;amp;hl=nl&amp;amp;q=matlab+profiler&amp;amp;meta=&amp;amp;btnG=Google+zoeken Matlab profiler] and see where most time is spent.&lt;br /&gt;
&lt;br /&gt;
** Monitor CPU and physical/virtual memory usage while the SUMO toolbox is running and see if you notice anything strange.  &lt;br /&gt;
&lt;br /&gt;
* Also note that by default Matlab only allocates about 117 MB memory space for the Java Virtual Machine. If you would like to increase this limit (which you should) please follow the instructions [http://www.mathworks.com/support/solutions/data/1-18I2C.html?solution=1-18I2C here]. See also the general memory instructions [http://www.mathworks.com/support/tech-notes/1100/1106.html here].&lt;br /&gt;
&lt;br /&gt;
To check if your SUMO run has hanged, monitor your log file (with the level set at least to FINE).  If you see no changes for about 30 minutes the toolbox will probably have stalled.  [[Reporting problems| report the problems here]].&lt;br /&gt;
&lt;br /&gt;
Such problems are hard to identify and fix so it is best to work towards a reproducible test case if you think you found a performance or scalability issue.&lt;br /&gt;
&lt;br /&gt;
=== How do I build models with more than one output ===&lt;br /&gt;
&lt;br /&gt;
Sometimes you have multiple responses that you want to model at once.  See [[Running#Models_with_multiple_outputs]]&lt;br /&gt;
&lt;br /&gt;
=== How do I turn off adaptive sampling (run the toolbox for a fixed set of samples)? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Adaptive Modeling Mode]].&lt;br /&gt;
&lt;br /&gt;
=== How do I change the error function (relative error, RMSE, ...)? ===&lt;br /&gt;
&lt;br /&gt;
The [[Measures| &amp;lt;Measure&amp;gt;]] tag specifies the algorithm to use to assign models a score, e.g., [[Measures#CrossValidation| CrossValidation]].  It is also possible to specify which &#039;&#039;&#039;error function&#039;&#039;&#039; to  use, in the measure.  The default error function is &#039;&amp;lt;code&amp;gt;rootRelativeSquareError&amp;lt;/code&amp;gt;&#039;.&lt;br /&gt;
&lt;br /&gt;
Say you want to use [[Measures#CrossValidation| CrossValidation]] with the maximum absolute error, then you would put:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type=&amp;quot;CrossValidation&amp;quot; target=&amp;quot;0.001&amp;quot; errorFcn=&amp;quot;maxAbsoluteError&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the other hand, if you wanted to use the [[Measures#ValidationSet| ValidationSet]] measure with a relative root-mean-square error you would put:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type=&amp;quot;ValidationSet&amp;quot; target=&amp;quot;0.001&amp;quot; errorFcn=&amp;quot;relativeRms&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default error function is &#039;&amp;lt;code&amp;gt;rootRelativeSquareError&amp;lt;/code&amp;gt;&#039;.  These error functions can be found in the &amp;lt;code&amp;gt;src/matlab/tools/errorFunctions&amp;lt;/code&amp;gt; directory.  You are free to modify them and add your own.  Remember that the choice of error function is very important! Make sure you think well about it.  Also see [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
=== How do I enable more profilers? ===&lt;br /&gt;
&lt;br /&gt;
Go to the [[Config:ContextConfig#Profiling| &amp;lt;Profiling&amp;gt;]] tag and put &amp;lt;code&amp;gt;&amp;quot;&amp;lt;nowiki&amp;gt;.*&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; as the regular expression.  See also the next question.&lt;br /&gt;
&lt;br /&gt;
=== What regular expressions can I use to filter profilers? ===&lt;br /&gt;
&lt;br /&gt;
See the syntax [http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html here].&lt;br /&gt;
&lt;br /&gt;
=== How can I ensure deterministic results? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Random state]].&lt;br /&gt;
&lt;br /&gt;
=== How do I get a simple closed-form model (symbolic expression)? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Using a model]].&lt;br /&gt;
&lt;br /&gt;
=== How do I enable the Heterogenous evolution to automatically select the best model type? ===&lt;br /&gt;
&lt;br /&gt;
Simply use the [[Config:AdaptiveModelBuilder#heterogenetic| heterogenetic modelbuilder]] as you would any other.&lt;br /&gt;
&lt;br /&gt;
=== What is the combineOutputs option? ===&lt;br /&gt;
&lt;br /&gt;
See [[Running#Models_with_multiple_outputs]]&lt;br /&gt;
&lt;br /&gt;
=== What error function should I use? ===&lt;br /&gt;
&lt;br /&gt;
The default error function is the Root Relative Square Error (RRSE).  On the other hand meanRelativeError may be more intuitive but in that case you have to be careful if you have function values close to zero since in that case the relative error explodes or even gives infinity.  You could also use one of the combined relative error functions (contain a +1 in the denominator to account for small values) but then you get something between a relative and absolute error (=&amp;gt; hard to interpret).&lt;br /&gt;
&lt;br /&gt;
So to be sure an absolute error seems the safest bet (like the RMSE), however in that case you have to come up with sensible accuracy targets and realize that you will build models that try to fit the regions of high absolute value better than the low ones.&lt;br /&gt;
&lt;br /&gt;
Picking an error function is a very tricky business and many people do not realize this.  Which one is best for you and what targets you use ultimately depends on your application and on what kind of model you want.  There is no general answer.&lt;br /&gt;
&lt;br /&gt;
A recommended read is [http://www.springerlink.com/content/24104526223221u3/ is this paper].  See also the page on [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
=== I just want to generate an initial design (no sampling, no modeling) ===&lt;br /&gt;
&lt;br /&gt;
Do a regular SUMO run, except set the &#039;maxModelingIterations&#039; in the SUMO tag to 0.  The resulting run will only generate (and evaluate) the initial design and save it to samples.txt in the output directory.&lt;br /&gt;
&lt;br /&gt;
=== How do I start a run with the samples of of a previous run, or with a custom initial design? ===&lt;br /&gt;
&lt;br /&gt;
Use a Dataset design component, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;InitialDesign type=&amp;quot;DatasetDesign&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;file&amp;quot; value=&amp;quot;/path/to/the/file/containing/the/points.txt&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/InitialDesign&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== What is a level plot? ===&lt;br /&gt;
&lt;br /&gt;
A level plot is a plot that shows how the error histogram changes as the best model improves. An example is:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:levelplot.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Level plots only work if you have a separate dataset (test set) that the model can be checked against.  See the comments in default.xml for how to enable level plots.&lt;br /&gt;
&lt;br /&gt;
===I am getting a java out of memory error, what happened?===&lt;br /&gt;
Datasets are loaded through java. This means that the java heap space is used for storing the data. If you try to load a huge dataset (&amp;gt; 50MB), you might experience problems with the maximum heap size. You can solve this by raising the heap size as described on the following webpage:&lt;br /&gt;
[http://www.mathworks.com/support/solutions/data/1-18I2C.html]&lt;br /&gt;
&lt;br /&gt;
=== How do I force the output of the model to lie in a certain range ===&lt;br /&gt;
&lt;br /&gt;
See [[Measures#MinMax]].&lt;br /&gt;
&lt;br /&gt;
=== My problem is high dimensional and has a lot of input parameters (more than 10).  Can I use SUMO? ===&lt;br /&gt;
&lt;br /&gt;
That depends.  Remember that the main focus of SUMO is to generate accurate &#039;global&#039; models. If you want to do sampling the practical dimensionality is limited to around 6-8 (though it depends on the problem and how cheap the simulations are!).  Since the more dimensions the more space you need to fill.  At that point you need to see if you can extend the models with domain specific knowledge (to improve performance) or apply a dimensionality reduction method ([[FAQ#Can_the_toolbox_tell_me_which_are_the_most_important_inputs_.28.3D_variable_selection.29.3F|see the next question]]).  On the other hand, if you don&#039;t need to do sample selection but you have a fixed dataset which you want to model.  Then the performance on high dimensional data just depends on the model type.  For examples SVM type models are independent of the dimension and thus can always be applied.  Though things like feature selection are always recommended.&lt;br /&gt;
&lt;br /&gt;
=== Can the toolbox tell me which are the most important inputs (= variable selection)? ===&lt;br /&gt;
&lt;br /&gt;
When tackling high dimensional problems a crucial question is &amp;quot;Are all my input parameters relevant?&amp;quot;.  Normally domain knowledge would answer this question but this is not always straightforward. In those cases a whole set of algorithms exist for doing dimensionality reduction (= feature selection).  Support for some of these algorithms may eventually make it into the toolbox but are not currently implemented.  That is a whole PhD thesis on its own.  However, if a model type provides functions for input relevance determination the toolbox can leverage this.  For example, the LS-SVM model available in the toolbox supports Automatic Relevance Determination (ARD).  This means that if you use the SUMO Toolbox to generate an LS-SVM model, you can call the function &#039;&#039;ARD()&#039;&#039; on the model and it will give you a list of the inputs it thinks are most important.&lt;br /&gt;
&lt;br /&gt;
=== Should I use a Matlab script or a shell script for interfacing with my simulation code? ===&lt;br /&gt;
&lt;br /&gt;
When you want to link SUMO with an external simulation engine (ADS Momentum, SPECTRE, FEBIO, SWAT, ...) you need a [http://en.wikipedia.org/wiki/Shell_script shell script] (or executable) that can take the requested points from SUMO, setup the simulation engine (e.g., set necessary input files), calls the simulator for all the requested points, reads the output (e.g., one or more output files), and returns the results to SUMO (see [[Interfacing with the toolbox]]).&lt;br /&gt;
&lt;br /&gt;
Which one you choose (matlab script + [[Config:SampleEvaluator#matlab|Matlab Sample Evaluator]], or shell script/executable with [[Config:SampleEvaluator#local|Local Sample Evaluator]] is basically a matter of preference, take whatever is easiest for you.&lt;br /&gt;
&lt;br /&gt;
HOWEVER, there is one important consideration: Matlab does not support threads so this means that if you use a matlab script to interface with the simulation engine, simulations and modeling will happen sequentially, NOT in parallel.  This means the modeling code will sit around waiting, doing nothing, until the simulation(s) have finished.  If your simulation code takes a long time to run this is not very efficient.  In version 6.2 we will probably fix this by using the Parallel Computing Toolbox.&lt;br /&gt;
&lt;br /&gt;
On the other hand, using a shell script/executable, does allow the modeling and simulation to occur in parallel (at least if you wrote your interface script in such a way that it can be run multiple times in parallel, i.e., no shared global directories or variables that can cause [http://en.wikipedia.org/wiki/Race_condition race conditions]).&lt;br /&gt;
&lt;br /&gt;
As a sidenote, note that if you already put work into a Matlab script, it is still possible to use a shell script, by writing a shell script that starts Matlab (using -nodisplay or -nojvm options), executes your script (using the -r option), and exits Matlab again.  Of course it is not very elegant and adds some overhead but depending on your situation it may be worth it.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== I have a problem and I want to report it ===&lt;br /&gt;
&lt;br /&gt;
See : [[Reporting problems]].&lt;br /&gt;
&lt;br /&gt;
=== I sometimes get flat models when using rational functions ===&lt;br /&gt;
&lt;br /&gt;
First make sure the model is indeed flat, and does not just appear so on the plot. You can verify this by looking at the output axis range and making sure it is within reasonable bounds. When there are poles in the model, the axis range is sometimes stretched to make it possible to plot the high values around the pole, causing the rest of the model to appear flat. If the model contains poles, refer to the next question for the solution.&lt;br /&gt;
&lt;br /&gt;
The [[Config:AdaptiveModelBuilder#rational| RationalModel]] tries to do a least squares fit, based on which monomials are allowed in numerator and denominator. We have experienced that some models just find a flat model as the best least squares fit. There are two causes for this:&lt;br /&gt;
&lt;br /&gt;
* The number of sample points is few, and the model parameters (as explained [[Model types explained#PolynomialModel|here]]) force the model to use only a very small set of degrees of freedom.  The solution in this case is to increase the minimum percentage bound in the RationalFactory section of your configuration file: change the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option to &amp;lt;code&amp;gt;&amp;quot;60,100&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;80,100&amp;quot;&amp;lt;/code&amp;gt;,  or even &amp;lt;code&amp;gt;&amp;quot;100,100&amp;quot;&amp;lt;/code&amp;gt;.  A setting of &amp;lt;code&amp;gt;&amp;quot;100,100&amp;quot;&amp;lt;/code&amp;gt; will force the polynomial models to always exactly interpolate.  However, note that this does not scale very well with the number of samples (to counter this you can set &amp;lt;code&amp;gt;&amp;quot;maxDegrees&amp;quot;&amp;lt;/code&amp;gt;). If, after increasing the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; you still get weird, spiky, models you simply need more samples or you should switch to a different model type.&lt;br /&gt;
* Another possibility is that given a set of monomial degrees, the flat function is just the best possible least squares fit. In that case you simply need to wait for more samples.&lt;br /&gt;
* The measure you are using is not accurately estimating the true error, try a different measure or error function.  Note that a maximum relative error is dangerous to use since a the 0-function (= a flat model) has a lower maximum relative error than a function which overshoots the true behavior in some places but is otherwise correct.&lt;br /&gt;
&lt;br /&gt;
=== When using rational functions I sometimes get &#039;spikes&#039; (poles) in my model ===&lt;br /&gt;
&lt;br /&gt;
When the denominator polynomial of a rational model has zeros inside the domain, the model will tend to infinity near these points. In most cases these models will only be recognized as being `the best&#039; for a short period of time. As more samples get selected these models get replaced by better ones and the spikes should disappear.&lt;br /&gt;
&lt;br /&gt;
So, it is possible that a rational model with &#039;spikes&#039; (caused by poles inside the domain) will be selected as best model. This may or may not be an issue, depending on what you want to use the model for. If it doesn&#039;t matter that the model is very inaccurate at one particular, small spot (near the pole), you can use the model with the pole and it should perform properly.&lt;br /&gt;
&lt;br /&gt;
However, if the model should have a reasonable error on the entire domain, several methods are available to reduce the chance of getting poles or remove the possibility altogether. The possible solutions are:&lt;br /&gt;
&lt;br /&gt;
* Simply wait for more data, usually spikes disappear (but not always).&lt;br /&gt;
* Lower the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option in the RationalFactory section of your configuration file.  For example, say you have 500 data points and if the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option is set to 100 percent it means the degrees of the polynomials in the rational function can go up to 500.  If you set the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option to 10, on the other hand, the maximum degree is set at 50 (= 10 percent of 500).  You can also use the &amp;lt;code&amp;gt;&amp;quot;maxDegrees&amp;quot;&amp;lt;/code&amp;gt; option to set an absolute bound.&lt;br /&gt;
* If you roughly know the output range your data should have, an easy way to eliminate poles is to use the [[Measures#MinMax| MinMax]] [[Measures| Measure]] together with your current measure ([[Measures#CrossValidation| CrossValidation]] by default).  This will cause models whose response falls outside the min-max bounds to be penalized extra, thus spikes should disappear.&lt;br /&gt;
* Use a different model type (RBF, ANN, SVM,...), as spikes are a typical problem of rational functions.&lt;br /&gt;
* Increase the population size if using the genetic version&lt;br /&gt;
* Try using the [[SampleSelector#RationalPoleSuppressionSampleSelector| RationalPoleSuppressionSampleSelector]], it was designed to get rid of this problem more quickly, but it only selects one sample at the time.&lt;br /&gt;
&lt;br /&gt;
However, these solutions may not still not suffice in some cases.  The underlying reason is that the order selection algorithm contains quite a lot of randomness, making it prone to over-fitting.  This issue is being worked on but will take some time.  Automatic order selection is not an easy problem&lt;br /&gt;
&lt;br /&gt;
=== There is no noise in my data yet the rational functions don&#039;t interpolate ===&lt;br /&gt;
&lt;br /&gt;
[[FAQ#I sometimes get flat models when using rational functions |see this question]].&lt;br /&gt;
&lt;br /&gt;
=== When loading a model from disk I get &amp;quot;Warning: Class &#039;:all:&#039; is an unknown object class.  Object &#039;model&#039; of this class has been converted to a structure.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You are trying to load a model file without the SUMO Toolbox in your Matlab path.  Make sure the toolbox is in your Matlab path. &lt;br /&gt;
&lt;br /&gt;
In short: Start Matlab, run &amp;lt;code&amp;gt;&amp;lt;SUMO-Toolbox-directory&amp;gt;/startup.m&amp;lt;/code&amp;gt; (to ensure the toolbox is in your path) and then try to load your model.&lt;br /&gt;
&lt;br /&gt;
=== When running the SUMO Toolbox you get an error like &amp;quot;No component with id &#039;annpso&#039; of type &#039;adaptive model builder&#039; found in config file.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This means you have specified to use a component with a certain id (in this case an AdaptiveModelBuilder component with id &#039;annpso&#039;) but a component with that id does not exist further down in the configuration file (in this particular case &#039;annpso&#039; does not exist but &#039;anngenetic&#039; or &#039;ann&#039; does, as a quick search through the configuration file will show).  So make sure you only declare components which have a definition lower down.  So see which components are available, simply scroll down the configuration file and see which id&#039;s are specified.  Please also refer to the [[Toolbox configuration#Declarations and Definitions | Declarations and Definitions]] page.&lt;br /&gt;
&lt;br /&gt;
=== When using NANN models I sometimes get &amp;quot;Runtime error in matrix library, Choldc failed. Matrix not positive definite&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This is a problem in the mex implementation of the [http://www.iau.dtu.dk/research/control/nnsysid.html NNSYSID] toolbox.  Simply delete the mex files, the Matlab implementation will be used and this will not cause any problems.&lt;br /&gt;
&lt;br /&gt;
=== When using FANN models I sometimes get &amp;quot;Invalid MEX-file createFann.mexa64, libfann.so.2: cannot open shared object file: No such file or directory.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This means Matlab cannot find the [http://leenissen.dk/fann/ FANN] library itself to link to dynamically.  Make sure it is in your library path, ie, on unix systems, make sure it is included in LD_LIBRARY_PATH.&lt;br /&gt;
&lt;br /&gt;
=== When trying to use SVM models I get &#039;Error during fitness evaluation: Error using ==&amp;gt; svmtrain at 170, Group must be a vector&#039; ===&lt;br /&gt;
&lt;br /&gt;
You forgot to build the SVM mex files for your platform.  For windows they are pre-compiled for you, on other systems you have to compile them yourself with the makefile.&lt;br /&gt;
&lt;br /&gt;
=== When running the toolbox you get something like &#039;??? Undefined variable &amp;quot;ibbt&amp;quot; or class &amp;quot;ibbt.sumo.config.ContextConfig.setRootDirectory&amp;quot;&#039; ===&lt;br /&gt;
&lt;br /&gt;
First see [[FAQ#What_is_the_relationship_between_Matlab_and_Java.3F | this FAQ entry]].&lt;br /&gt;
&lt;br /&gt;
This means Matlab cannot find the needed Java classes.  This typically means that you forgot to run &#039;startup&#039; (to set the path correctly) before running the toolbox (using &#039;go&#039;).  So make sure you always run &#039;startup&#039; before running &#039;go&#039; and that both commands are always executed in the toolbox root directory.&lt;br /&gt;
&lt;br /&gt;
If you did run &#039;startup&#039; correctly and you are still getting an error, check that Java is properly enabled:&lt;br /&gt;
&lt;br /&gt;
# typing &#039;usejava jvm&#039; should return 1 &lt;br /&gt;
# typing &#039;s = java.lang.String&#039;, this should &#039;&#039;not&#039;&#039; give an error&lt;br /&gt;
# typing &#039;version(&#039;-java&#039;)&#039; should return at least version 1.5.0&lt;br /&gt;
&lt;br /&gt;
If (1) returns 0, then the jvm of your Matlab installation is not enabled.  Check your Matlab installation or startup parameters (did you start Matlab with -nojvm?)&lt;br /&gt;
If (2) fails but (1) is ok, there is a very weird problem, check the Matlab documentation.&lt;br /&gt;
If (3) returns a version before 1.5.0 you will have to upgrade Matlab to a newer version or force Matlab to use a custom, newer, jvm (See the Matlab docs for how to do this).&lt;br /&gt;
&lt;br /&gt;
=== You get errors related to &#039;&#039;gaoptimset&#039;&#039;,&#039;&#039;psoptimset&#039;&#039;,&#039;&#039;saoptimset&#039;&#039;,&#039;&#039;newff&#039;&#039; not being found or unknown ===&lt;br /&gt;
&lt;br /&gt;
You are trying to use a component of the SUMO toolbox that requires a Matlab toolbox that you do not have.  See the [[System requirements]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== After upgrading I get all kinds of weird errors or warnings when I run my XML files ===&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#How_do_I_upgrade_to_a_newer_version.3F]]&lt;br /&gt;
&lt;br /&gt;
=== I get a warning about duplicate samples being selected, why is this? ===&lt;br /&gt;
&lt;br /&gt;
Sometimes, in special circumstances, multiple sample selectors may select the same sample at the same time. Even though in most cases this is detected and avoided, it can still happen when multiple outputs are modelled in one run, and each output is sampled by a different sample selector. These sample selectors may then accidentally choose the same new sample location.&lt;br /&gt;
&lt;br /&gt;
=== I sometimes see the error of the best model go up, shouldn&#039;t it decrease monotonically? ===&lt;br /&gt;
&lt;br /&gt;
There is no short answer here, it depends on the situation.  Below &#039;single objective&#039; refers to the case where during the hyperparameter optimization (= the modeling iteration) combineOutputs=false, and there is only a single measure set to &#039;on&#039;.  The other cases are classified as &#039;multi objective&#039;.  See also [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Sampling off&#039;&#039;&#039;&lt;br /&gt;
## &#039;&#039;Single objective&#039;&#039;: the error should always decrease monotonically, you should never see it rise. If it does [[reporting problems|report it as a bug]]&lt;br /&gt;
## &#039;&#039;Multi objective&#039;&#039;: There is a very small chance the error can temporarily decrease but it should be safe to ignore.  In this case it is best to use a multi objective enabled modeling algorithm&lt;br /&gt;
# &#039;&#039;&#039;Sampling on&#039;&#039;&#039;&lt;br /&gt;
## &#039;&#039;Single objective&#039;&#039;: inside each modeling iteration the error should always monotonically decrease.  At each sampling iteration the best models are updated (to reflect the new data), thus there the best model score may increase, this is normal behavior(*).  It is possible that the error increases for a short while, but as more samples come in it should decrease again.  If this does not happen you are using a poor measure or poor hyperparameter optimization algorithm, or there is a problem with the modeling technique itself (e.g., clustering in the datapoints is causing numerical problems).&lt;br /&gt;
## &#039;&#039;Multi objective&#039;&#039;: Combination of 1.2 and 2.1.&lt;br /&gt;
&lt;br /&gt;
(*) This is normal if you are using a measure like cross validation that is less reliable on little data than on more data.  However, in some cases you may wish to override this behavior if you are using a measure that is independent of the number of samples the model is trained with (e.g., a dense, external validation set).  In this case you can force a monotonic decrease by setting the &#039;keepOldModels&#039; option in the SUMO tag to true.  Use with caution!&lt;br /&gt;
&lt;br /&gt;
=== At the end of a run I get Undefined variable &amp;quot;ibbt&amp;quot; or class &amp;quot;ibbt.sumo.util.JpegImagesToMovie.createMovie&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This is normal, the warning printed out before the error explains why:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[WARNING] jmf.jar not found in the java classpath, movie creation may not work! Did you install the SUMO extension pack? Alternatively you can install the java media framwork from java.sun.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By default, at the end of a run, the toolbox will try to generate a movie of all the intermediate model plots.  To do this it requires the extension pack to be installed (you can download it from the SUMO lab website).  So install the extension pack and you will no longer get the error.  Alternatively you can simply set the &amp;quot;createMovie&amp;quot; option in the &amp;lt;SUMO&amp;gt; tag to &amp;quot;false&amp;quot;.&lt;br /&gt;
So note that there is nothing to worry about, everything has run correctly, it is just the movie creation that is failing.&lt;br /&gt;
&lt;br /&gt;
=== On startup I get the error &amp;quot;java.io.IOException: Couldn&#039;t get lock for output/SUMO-Toolbox.%g.%u.log&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This error means that SUMO is unable to create the log file.  Check the output directory exists and has the correct permissions.  If  your output directory is on a shared (network) drive this could also cause problems.  Also make sure you are running the toolbox (calling &#039;go&#039;) from the toolbox root directory, and not in some toolbox sub directory! This is very important.&lt;br /&gt;
&lt;br /&gt;
If you still have problems you can override the default logfile name and location as follows:&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;FileHandler&amp;gt; tag inside the &amp;lt;Logging&amp;gt; tag add the following option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;Option key=&amp;quot;Pattern&amp;quot; value=&amp;quot;My_SUMO_Log_file.log&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This means that from now on the sumo log file will be saved as the file &amp;quot;My_SUMO_Log_file.log&amp;quot; in the SUMO root directory.  You can use any path you like.&lt;br /&gt;
For more information about this option see [http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/FileHandler.html the FileHandler Javadoc].&lt;br /&gt;
&lt;br /&gt;
=== The Toolbox crashes with &amp;quot;Too many open files&amp;quot; what should I do? ===&lt;br /&gt;
&lt;br /&gt;
This is a known bug, see [[Known_bugs#Version_6.1]].&lt;br /&gt;
&lt;br /&gt;
If this does not fix your problem then do the following:&lt;br /&gt;
&lt;br /&gt;
On Windows try increasing the limit in windows as dictated by the error message.  Also, when you get the error, use the fopen(&amp;quot;all&amp;quot;) command to see which files are open and send us the list of filenames.  Then we can maybe further help you debug the problem.  Even better would be to use the Process Explorer utility [http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx available here]. When you get the error, dont shut down Matlab but start Process explorer and see which SUMO-Toolbox related files are open.  If you then [[Reporting_problems|let us know]] we can further debug the problem.&lt;br /&gt;
&lt;br /&gt;
On Linux again don&#039;t shut down Matlab but:&lt;br /&gt;
&lt;br /&gt;
* open a new terminal window&lt;br /&gt;
* type:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsof &amp;gt; openFiles.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Then [[Contact|send us]] the following information:&lt;br /&gt;
** the file openFiles.txt &lt;br /&gt;
** the exact Linux distribution you are using (Red Hat 10, CentOS 5, SUSE 11, etc).&lt;br /&gt;
** the output of&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
uname -a ; df -T ; mount&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a temporary workaround you can try increasing the maximum number of open files ([http://www.linuxforums.org/forum/redhat-fedora-linux-help/64716-where-chnage-file-max-permanently.html see for example here]).  We are currently debugging this issue.&lt;br /&gt;
&lt;br /&gt;
In general: to be safe it is always best to do a SUMO run from a clean Matlab startup, especially if the run is important or may take a long time.&lt;br /&gt;
&lt;br /&gt;
=== When using the LS-SVM models I get lots of warnings: &amp;quot;make sure lssvmFILE.x (lssvmFILE.exe) is in the current directory, change now to MATLAB implementation...&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
The LS-SVMs have a C implementation and a Matlab implementation.  If you dont have the compiled mex files it will use the matlab implementation and give a warning.  But everything will work properly.  To get rid of the warnings, compile the mex files [[Installation#Windows|as described here]], this can be done very easily.  Or simply comment out the lines that produce the output in the lssvmlab directory in src/matlab/contrib.&lt;br /&gt;
&lt;br /&gt;
=== I get an error &amp;quot;Undefined function or method &#039;trainlssvm&#039; for input arguments of type &#039;cell&#039;&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You most likely forgot to [[Installation#Extension_pack|install the extension pack]].&lt;br /&gt;
&lt;br /&gt;
=== When running the SUMO-Toolbox under Linux, the [http://en.wikipedia.org/wiki/X_Window_System X server] suddenly restarts and I am logged out of my session ===&lt;br /&gt;
&lt;br /&gt;
Note that in Linux there is an explicit difference between the [http://en.wikipedia.org/wiki/Linux_kernel kernel] and the [http://en.wikipedia.org/wiki/X_Window_System X display server].  If the kernel crashes or panics your system completely freezes (you have to reset manually) or your computer does a full reboot.  Luckily this is very rare.  However, if you display server (X) crashes or restarts it means your operating system is still running fine, its just that you have to log in again since your graphical session has terminated.  The FAQ entry is only for the latter.  If you find your kernel is panicing or freezing, that is a more fundamental problem and you should contact your system admin.&lt;br /&gt;
&lt;br /&gt;
So what happens is that after a few seconds when the toolbox wants to plot the first model [http://en.wikipedia.org/wiki/X_Window_System X] crashes and you are suddenly presented with a login screen.  The problem is not due to SUMO but rather to the Matlab - Display server interaction.&lt;br /&gt;
&lt;br /&gt;
What you should first do is set plotModels to false in the [[Config:ContextConfig]] tag, run again and see if the problem occurs again.  If it does please [[Reporting_problems| report it]].  If the problem does not occur you can then try the following:&lt;br /&gt;
&lt;br /&gt;
* Log in as root (or use [http://en.wikipedia.org/wiki/Sudo sudo])&lt;br /&gt;
* Edit the following configuration file using a text editor (pico, nano, vi, kwrite, gedit,...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/etc/X11/xorg.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: the exact location of the xorg.conf file may vary on your system.&lt;br /&gt;
&lt;br /&gt;
* Look for the following line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  Load         &amp;quot;glx&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Comment it out by replacing it by:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#  Load         &amp;quot;glx&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then save the file, restart your X server (if you do not know how to do this simply reboot your computer)&lt;br /&gt;
* Log in again, and try running the toolbox (making sure plotModels is set to true again).  It should now work.  If it still does not please [[Reporting_problems| report it]].&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* this is just an empirical workaround, if you have a better idea please [[Contact|let us know]]&lt;br /&gt;
* if you wish to debug further yourself please check the Xorg log files and those in /var/log&lt;br /&gt;
* another possible workaround is to start matlab with the &amp;quot;-nodisplay&amp;quot; option.  That could work as well.&lt;br /&gt;
&lt;br /&gt;
=== I get the error &amp;quot;Failed to close Matlab pool cleanly, error is Too many output arguments&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This happens if you run the toolbox on Matlab version 2008a and you have the parallel computing toolbox installed.  You can simply ignore this error message, it does not cause any problems. If you want to use SUMO with the parallel computing toolbox you will need Matlab 2008b.&lt;br /&gt;
&lt;br /&gt;
=== The toolbox seems to keep on running forever, when or how will it stop? ===&lt;br /&gt;
&lt;br /&gt;
The toolbox will keep on generating models and selecting data until one of the termination criteria has been reached. It is up to &#039;&#039;you&#039;&#039; to choose these targets carefully, so how low the toolbox runs simply depends on what targets you choose.  Please see [[Running#Understanding_the_control_flow]].&lt;br /&gt;
&lt;br /&gt;
Of course choosing a-priori targets up front is not always easy and there is no real solution for this, except thinking well about what type of model you want (see [[FAQ#I_dont_like_the_final_model_generated_by_SUMO_how_do_I_improve_it.3F]]).  In doubt you can always use a small value (or 0) and then simply quit the running toolbox using Ctrl-C when you think its been enough.&lt;br /&gt;
&lt;br /&gt;
While one could implement fancy, automatic stopping algorithms, their actual benefit is questionable.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=FAQ&amp;diff=5037</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=FAQ&amp;diff=5037"/>
		<updated>2009-11-03T09:39:04Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* How can I make the toolbox run faster? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
=== What is a global surrogate model? ===&lt;br /&gt;
&lt;br /&gt;
A global [http://en.wikipedia.org/wiki/Surrogate_model surrogate model] is a mathematical model that mimics the behavior of a computationally expensive simulation code over &#039;&#039;&#039;the complete parameter space&#039;&#039;&#039; as accurately as possible, using as little data points as possible. So note that optimization is not the primary goal, although it can be done as a post-processing step. Global surrogate models are useful for:&lt;br /&gt;
&lt;br /&gt;
* design space exploration, to get a &#039;&#039;feel&#039;&#039; of how the different parameters behave&lt;br /&gt;
* sensitivity analysis&lt;br /&gt;
* &#039;&#039;what-if&#039;&#039; analysis&lt;br /&gt;
* prototyping&lt;br /&gt;
* visualization&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
In addition they are a cheap way to model large scale systems, multiple global surrogate models can be chained together in a model cascade.&lt;br /&gt;
&lt;br /&gt;
See also the [[About]] page.&lt;br /&gt;
&lt;br /&gt;
=== What about surrogate driven optimization? ===&lt;br /&gt;
&lt;br /&gt;
When coining the term &#039;&#039;&#039;surrogate driven optimization&#039;&#039;&#039; most people associate it with trust-region strategies and simple polynomial models. These frameworks first construct a local surrogate which is optimized to find an optimum. Afterwards, a move limit strategy decides how the local surrogate is scaled and/or moved through the input space. Subsequently the surrogate is rebuild and optimized. I.e. the surrogate zooms in to the global optimum. For instance the [http://www.cs.sandia.gov/DAKOTA/ DAKOTA] Toolbox implements such strategies where the surrogate construction is separated from optimization.&lt;br /&gt;
&lt;br /&gt;
Such a framework was earlier implemented in the SUMO Toolbox but was deprecated as it didn&#039;t fit the philosophy and design of the toolbox. &lt;br /&gt;
&lt;br /&gt;
Instead another, equally powerful, approach was taken. The current optimization framework is in fact a sampling selection strategy that balances local and global search. In other words, it balances between exploring the input space and exploiting the information the surrogate gives us.&lt;br /&gt;
&lt;br /&gt;
A configuration example can be found [[Config:SampleSelector#expectedImprovement|here]].&lt;br /&gt;
&lt;br /&gt;
=== What is (adaptive) sampling? Why is it used? ===&lt;br /&gt;
&lt;br /&gt;
In classical Design of Experiments you need to specify the design of your experiment up-front. Or in other words, you have to say up-front how many data points you need and how they should be distributed.  Two examples are Central Composite Designs and Latin Hypercube designs.  However, if your data is expensive to generate (e.g., an expensive simulation code) it is not clear how many points are needed up-front.  Instead data points are selected adaptively, only a couple at a time.  This process of incrementally selecting new data points in regions that are the most interesting is called adaptive sampling, sequential design, or active learning.  Of course the sampling process needs to start from somewhere so the very first set of points is selected based on a fixed, classic experimental design.  See also [[Running#Understanding_the_control_flow]].&lt;br /&gt;
SUMO provides a number of different sampling algorithms: [[SampleSelector]]&lt;br /&gt;
&lt;br /&gt;
Of course sometimes you dont want to do sampling.  For example if you have a fixed dataset you just want to load all the data in one go and model that.  For how to do this see [[FAQ#How_do_I_turn_off_adaptive_sampling_.28run_the_toolbox_for_a_fixed_set_of_samples.29.3F]].&lt;br /&gt;
&lt;br /&gt;
=== What about dynamical, time dependent data? ===&lt;br /&gt;
&lt;br /&gt;
The original design and purpose was to tackle static input-output systems, where there is no memory. Just a complex mapping that must be learnt and approximated. Of course you can take a fixed time interval and apply the toolbox but that typically is not a desired solution.  Usually you are interested in time series prediction, e.g., given a set of output values from time t=0 to t=k, predict what happens at time t=k+1,k+2,...&lt;br /&gt;
&lt;br /&gt;
The toolbox was originally not intended for this purpose.  However, it is quite easy to add support for recurrent models.  Automatic generation of dynamical models would involve adding a new model type (just like you would add a new regression technique) or require adapting an existing one.  For example it would not be too much work to adapt the ANN or SVM models to support dynamic problems.  The only extra work besides that would be to add a new [[Measures|Measure]] that can evaluate the fidelity of the models&#039; prediction.&lt;br /&gt;
&lt;br /&gt;
Naturally though, you would be unable to use sample selection (since it makes no sense in those problems).  Unless of course there is a specialized need for it.  In that case you would add a new [[SampleSelector]].&lt;br /&gt;
&lt;br /&gt;
For more information on this topic [[Contact]] us.&lt;br /&gt;
&lt;br /&gt;
=== What about classification problems? ===&lt;br /&gt;
&lt;br /&gt;
The main focus of the SUMO Toolbox is on regression/function approximation.  However, the framework for hyperparameter optimization, model selection, etc.  can also be used for classification.  Starting from version 6.3 a demo file is included in the distribution that shows how this works on a well known test problem.  If you want to play around with this feature without waiting for 6.3 to be released [[Contact|just let us know]].&lt;br /&gt;
&lt;br /&gt;
=== Can the toolbox drive my simulation code directly? ===&lt;br /&gt;
&lt;br /&gt;
Yes it can.  See the [[Interfacing with the toolbox]] page.&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between the M3-Toolbox and the SUMO-Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
The SUMO toolbox is a complete, feature-full framework for automatically generating approximation models and performing adaptive sampling. In contrast, the M3-Toolbox was more of a proof-of-principle.&lt;br /&gt;
&lt;br /&gt;
=== What happened to the M3-Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
The M3 Toolbox project has been discontinued (Fall 2007) and superseded by the SUMO Toolbox. Please contact tom.dhaene@ua.ac.be for any inquiries and requests about the M3 Toolbox.&lt;br /&gt;
&lt;br /&gt;
=== How can I stay up to date with the latest news? ===&lt;br /&gt;
&lt;br /&gt;
To stay up to date with the latest news and releases, we also recommend subscribing to our newsletter [http://www.sumo.intec.ugent.be here].  Traffic will be kept to a minimum (1 message every 2-3 months) and you can unsubscribe at any time.&lt;br /&gt;
&lt;br /&gt;
You can also follow our blog: [http://sumolab.blogspot.com/ http://sumolab.blogspot.com/].&lt;br /&gt;
&lt;br /&gt;
=== What is the roadmap for the future? ===&lt;br /&gt;
&lt;br /&gt;
There is no explicit roadmap since much depends on where our research leads us, what feedback we get, which problems we are working on, etc.  However, to get an idea of features to come you can always check the [[Whats new]] page.&lt;br /&gt;
&lt;br /&gt;
You can also follow our blog: [http://sumolab.blogspot.com/ http://sumolab.blogspot.com/].&lt;br /&gt;
&lt;br /&gt;
=== Will there be an R/Scilab/Octave/Sage/.. version? ===&lt;br /&gt;
&lt;br /&gt;
At the start of the project we considered moving to one of the available open source alternatives to Matlab.  However, after much discussion we decided against this for several reasons(*), including:&lt;br /&gt;
&lt;br /&gt;
* The quality and amount of available Matlab documentation &lt;br /&gt;
* The quality and number of Matlab toolboxes&lt;br /&gt;
* Many well documented interfacing options (esp. Java)&lt;br /&gt;
* Existing experience and know-how&lt;br /&gt;
&lt;br /&gt;
Matlab sure has its problems and deficiencies but the number of advanced algorithms and toolboxes make it a very attractive platform.  Equally important is the fact that every function is properly documented and includes examples, tutorials, and in some cases GUI tools.  A lot of things would have been a lot harder and/or time consuming to implement on one of the other platforms.  The other platforms remain on our radar however, and we do look into them from time to time.  In principle it would even be possible to write a bridge between Matlab and them.&lt;br /&gt;
&lt;br /&gt;
(*) We are not saying those projects are poor or useless, quite the contrary.  Its just that given our situation, goals, and resources at the time, Matlab was the best choice for us.&lt;br /&gt;
&lt;br /&gt;
=== What are collaboration options? ===&lt;br /&gt;
&lt;br /&gt;
We will gladly help out with any SUMO-Toolbox related questions or problems. However, since we are a university research group the most interesting goal for us is to work towards some joint publication (e.g., we can help with the modeling of your problem).  Alternatively, it is always nice if we could use your data/problem (fully referenced and/or anonymized if necessary of course) as an example application during a conference presentation or in a PhD thesis.&lt;br /&gt;
&lt;br /&gt;
The most interesting case is if your problem involves sample selection and modeling.  This means you have some simulation code or script to drive and you want an accurate model while minimizing the number of data points.  In this case, in order for us to optimally help you it would be easiest if we could run your simulation code (or script) locally or access it remotely.  Else its difficult to give good recommendations about what settings to use.&lt;br /&gt;
&lt;br /&gt;
If this is not possible (e.g., expensive, proprietary or secret modeling code) or if your problem does not involve sample selection, you can send us a fixed data set that is representative of your problem. Again, this may be fully anonymized and will be kept confidential of course.&lt;br /&gt;
&lt;br /&gt;
In either case (code or dataset) remember:&lt;br /&gt;
&lt;br /&gt;
* the data file should be an ASCII file in column format (each row containing one data point) (see also [[Interfacing_with_the_toolbox]])&lt;br /&gt;
* include a short description of your data:&lt;br /&gt;
** number of inputs and number of outputs&lt;br /&gt;
** the range of each input (or scaled to [-1 1] if you do not wish to disclose this)&lt;br /&gt;
** if the outputs are real or complex valued&lt;br /&gt;
** how noisy the data is or if it is completely deterministic (computer simulation) (please also see: [[FAQ#My_data_contains_noise_can_the_SUMO-Toolbox_help_me.3F]]).&lt;br /&gt;
** if possible the expected range of each output (or scaled if you do not wish to disclose this)&lt;br /&gt;
** if possible the names of each input/output + a short description of what they mean&lt;br /&gt;
** any further insight you have about the data, expected behavior, expected importance of each input, etc.&lt;br /&gt;
&lt;br /&gt;
If you have any further questions or comments related to this please [[Contact]] us.&lt;br /&gt;
&lt;br /&gt;
=== Can you help me model my problem? ===&lt;br /&gt;
&lt;br /&gt;
Please see the previous question: [[FAQ#What_are_collaboration_options.3F]]&lt;br /&gt;
&lt;br /&gt;
== Installation and Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== What is the relationship between Matlab and Java? ===&lt;br /&gt;
&lt;br /&gt;
Many people do not know this, but your Matlab installation automatically includes a Java virtual machine.  By default, Matlab seamlessly integrates with Java, allowing you to create Java objects from the command line (e.g., &#039;s = java.lang.String&#039;).  It is possible to disable java support but in order to use the SUMO Toolbox it should not be.  To check if Java is enabled you can use the &#039;usejava&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== What is Java, why do I need it, do I have to install it, etc. ? ===&lt;br /&gt;
&lt;br /&gt;
The short answer is: no, dont worry about it.  The long answer is: Some of the code of the SUMO Toolbox is written in [http://en.wikipedia.org/wiki/Java_(programming_language) Java], since it makes a lot more sense in many situations and is a proper programming language instead of a scripting language like Matlab.  Since Matlab automatically includes a JVM to run Java code there is nothing you need to do or worry about (see the previous FAQ entry).  Unless its not working of course, in that case see [[FAQ#When_running_the_toolbox_you_get_something_like_.27.3F.3F.3F_Undefined_variable_.22ibbt.22_or_class_.22ibbt.sumo.config.ContextConfig.setRootDirectory.22.27]].&lt;br /&gt;
&lt;br /&gt;
=== What is XML? ===&lt;br /&gt;
&lt;br /&gt;
XML stands for eXtensible Markup Language and is related to HTML (= the stuff web pages are written in).  The first thing you have to understand is that &#039;&#039;&#039;does not do anything&#039;&#039;&#039;. Honest. Many engineers are not used to it and think it is some complicated computer programming language-stuff-thingy.  This is of course not the case (we ignore some of the fancy stuff you can do with it for now).  XML is a markup language meaning, it provides some rules how you can annotate or structure existing text.&lt;br /&gt;
&lt;br /&gt;
The way SUMO uses XML is really simple and there is not much to understand.  First some simple terminology.  Take the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Foo attr=&amp;quot;bar&amp;quot;&amp;gt;bla bla bla&amp;lt;/Foo&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here we have &#039;&#039;&#039;a tag&#039;&#039;&#039; called &#039;&#039;Foo&#039;&#039; containing text &#039;&#039;bla bla bla&#039;&#039;.  The tag Foo also has an &#039;&#039;&#039;attribute&#039;&#039;&#039; &#039;&#039;attr&#039;&#039; with value &#039;&#039;bar&#039;&#039;.  &#039;&amp;lt;Foo&amp;gt;&#039; is what we call the &#039;&#039;&#039;opening tag&#039;&#039;&#039;, and &#039;&amp;lt;/Foo&amp;gt;&#039; is the &#039;&#039;&#039;closing tag&#039;&#039;&#039;.  Each time you open a tag you must close it again.  How you name the tags or attributes it totally up to you, you choose :)&lt;br /&gt;
&lt;br /&gt;
Lets take a more interesting example.  Here we have used XML to represent information about a receipe for pancakes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;recipe category=&amp;quot;dessert&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;Pancakes&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;sumo@intec.ugent.be&amp;lt;/author&amp;gt;&lt;br /&gt;
  &amp;lt;date&amp;gt;Wed, 14 Jun 95&amp;lt;/date&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
    Good old fashioned pancakes.&lt;br /&gt;
  &amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;ingredients&amp;gt;&lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
        &amp;lt;amount&amp;gt;3&amp;lt;/amount&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;eggs&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;item&amp;gt;&lt;br /&gt;
         &amp;lt;amount&amp;gt;0.5 tablespoon&amp;lt;/amount&amp;gt;&lt;br /&gt;
         &amp;lt;type&amp;gt;salt&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/item&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
  &amp;lt;/ingredients&amp;gt;&lt;br /&gt;
  &amp;lt;preparation&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/preparation&amp;gt;&lt;br /&gt;
 &amp;lt;/recipe&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So basically, you see that XML is just a way to structure, order, and group information.  Thats it!  So SUMO basically uses it to store and structure configuration options.  And this works well due to the nice hierarchical nature of XML.&lt;br /&gt;
&lt;br /&gt;
If you understand this there is nothing else to it in order to be able to understand the SUMO configuration files.  If you need more information see the tutorial here: [http://www.w3schools.com/XML/xml_whatis.asp http://www.w3schools.com/XML/xml_whatis.asp].  You can also have a look at the wikipedia page here: [http://en.wikipedia.org/wiki/XML http://en.wikipedia.org/wiki/XML]&lt;br /&gt;
&lt;br /&gt;
=== Why does SUMO use XML? ===&lt;br /&gt;
&lt;br /&gt;
XML is the defacto standard way of structuring information. This ranges from spreadsheet files (Microsoft Excel for example), to configuration data, to scientific data, ...  There are even whole database systems based solely on XML.  So basically, its an intuitive way to structure data and it is used everywhere.  This makes that there are a very large number of libraries and programming languages available that can parse, and handle XML easily.  That means less work for the programmer.  Then of course there is stuff like XSLT, XQuery, etc that makes life even easier.&lt;br /&gt;
So basically, it would not make sense for SUMO to use any other format :)&lt;br /&gt;
&lt;br /&gt;
=== I get an error that SUMO is not yet activated ===&lt;br /&gt;
&lt;br /&gt;
Make sure you installed the activation file that was mailed to you as is explained in the [[Installation]] instructions.  Also double check your system meets the [[System requirements]] and that [http://www.sumowiki.intec.ugent.be/index.php/FAQ#When_running_the_toolbox_you_get_something_like_.27.3F.3F.3F_Undefined_variable_.22ibbt.22_or_class_.22ibbt.sumo.config.ContextConfig.setRootDirectory.22.27|java java is enabled].  To fully verify that the activation file installation is correct ensure that the file ContextConfig.class is present in the directory &#039;&#039;&amp;lt;SUMO installation directory&amp;gt;/bin/java/ibbt/sumo/config&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Please note that more flexible research licenses are available if it is possible to [[FAQ#What_are_collaboration_options.3F|collaborate in any way]].&lt;br /&gt;
&lt;br /&gt;
== Upgrading ==&lt;br /&gt;
&lt;br /&gt;
=== How do I upgrade to a newer version? ===&lt;br /&gt;
&lt;br /&gt;
Delete your old &amp;lt;code&amp;gt;&amp;lt;SUMO-Toolbox-directory&amp;gt;&amp;lt;/code&amp;gt; completely and replace it by the new one.  Install the new activation file / extension pack as  before (see [[Installation]]), start Matlab and make sure the default run works.  To port your old configuration files to the new version: make a copy of default.xml (from the new version) and copy over your custom changes (from the old version) one by one.  This should prevent any weirdness if the XML structure has changed between releases.&lt;br /&gt;
&lt;br /&gt;
If you had a valid activation file for the previous version, just [[Contact]] us (giving your SUMOlab website username) and we will send you a new activation file.  Note that to update an activation file you must first unzip a copy of the toolbox to a new directory and install the activation file as if it was the very first time.  Upgrading of an activation file without performing a new toolbox install is (unfortunately) not (yet) supported.&lt;br /&gt;
&lt;br /&gt;
== Using ==&lt;br /&gt;
&lt;br /&gt;
=== I have no idea how to use the toolbox, what should I do? ===&lt;br /&gt;
&lt;br /&gt;
See: [[Running#Getting_started]]&lt;br /&gt;
&lt;br /&gt;
=== I want to try one of the different examples ===&lt;br /&gt;
&lt;br /&gt;
See [[Running#Running_different_examples]].&lt;br /&gt;
&lt;br /&gt;
=== I want to model my own problem ===&lt;br /&gt;
&lt;br /&gt;
See : [[Adding an example]].&lt;br /&gt;
&lt;br /&gt;
=== I want to contribute some data/patch/documentation/... ===&lt;br /&gt;
&lt;br /&gt;
See : [[Contributing]].&lt;br /&gt;
&lt;br /&gt;
=== How do I interface with the SUMO Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Interfacing with the toolbox]].&lt;br /&gt;
&lt;br /&gt;
=== What configuration options (model type, sample selection algorithm, ...) should I use for my problem? ===&lt;br /&gt;
&lt;br /&gt;
See [[General_guidelines]].&lt;br /&gt;
&lt;br /&gt;
=== Ok, I generated a model, what can I do with it? ===&lt;br /&gt;
&lt;br /&gt;
See: [[Using a model]].&lt;br /&gt;
&lt;br /&gt;
=== How can I share a model created by the SUMO Toolbox? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Using a model#Model_portability| Model portability]].&lt;br /&gt;
&lt;br /&gt;
=== I dont like the final model generated by SUMO how do I improve it? ===&lt;br /&gt;
&lt;br /&gt;
Before you start the modeling you should really ask youself this question: &#039;&#039;What properties do I want to see in the final model?&#039;&#039;  You have to think about what for you constitutes a good model and what constitutes a poor model. Then you should rank those properties depending on how important you find them.  Examples are:&lt;br /&gt;
&lt;br /&gt;
* accuracy in the training data&lt;br /&gt;
** is it important that the error in the training data is exactly 0, or do you prefer some smoothing&lt;br /&gt;
* accuracy outside the training data&lt;br /&gt;
** this is the validation or test error, how important is proper generalization (usually this is very important)&lt;br /&gt;
* what does accuracy mean to you? a low maximum error, a low average error, both, ...&lt;br /&gt;
* smoothness&lt;br /&gt;
** should your model be perfectly smooth or is it acceptable that you have a few small ripples here and there for example&lt;br /&gt;
* are some regions of the response more important than others?&lt;br /&gt;
** for example you may want to be certain that the minima/maxima are captured very accurately but everything in between is less important&lt;br /&gt;
* are there particular special features that your model should have&lt;br /&gt;
** for example, capture underlying poles or discontinuities correctly&lt;br /&gt;
* extrapolation capability&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
It is important to note that often these criteria may be conflicting.  The classical example is fitting noisy data: the lower your training error the higher your testing error.  A natural approach is to combine multiple criteria, see [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
Once you have decided on a set of requirements the question is then, can the SUMO-Toolbox produce a model that meets them? In SUMO model generation is driven by one or more [[Measures]].  So you should choose the combination of [[Measures]] that most closely match your requirements.  Of course we can not provide a Measure for every single property, but it is very straightforward to [[Add_Measure|add your own Measure]].&lt;br /&gt;
&lt;br /&gt;
Now, lets say you have chosen what you think are the best Measures but you are still not happy with the final model.  Reasons could be:&lt;br /&gt;
&lt;br /&gt;
* you need more modeling iterations or you need to build more models per iteration (see [[Running#Understanding_the_control_flow]]). This will result in a more extensive search of the model parameter space, but will take longer to run.&lt;br /&gt;
* you should switch to a different model parameter optimization algorithm (e.g., for example instead of the Pattern Search variant, try the Genetic Algorithm variant of your AdaptiveModelBuilder.)&lt;br /&gt;
* the model type you are using is not ideally suited to your data&lt;br /&gt;
* there simply is not enough data, use a larger initial design or perform more sampling iterations to get more information per dimension&lt;br /&gt;
* maybe the sample distribution is causing troubles for your model (e.g., Kriging can have problems with clustered data).  In that case it could be worthwhile to choose a different sample selection algorithm.&lt;br /&gt;
* the range of your response variable is not ideal (for example, neural networks have trouble modeling data if the range of the outputs is very very small)&lt;br /&gt;
&lt;br /&gt;
You may also refer to the following [[General_guidelines]].  Finally, of course it may be that your problem is simply a very difficult one and does not approximate well.  But, still you should at least get something satisfactory.&lt;br /&gt;
&lt;br /&gt;
If you are having these kinds of problems, please [[Reporting_problems|let us know]] and we will gladly help out.&lt;br /&gt;
&lt;br /&gt;
=== My data contains noise can the SUMO-Toolbox help me? ===&lt;br /&gt;
&lt;br /&gt;
The original purpose of the SUMO-Toolbox was for it to be used in conjunction with computer simulations.  Since these are fully deterministic you do not have to worry about noise in the data and all the problems it causes.  However, the methods in the toolbox are general fitting methods that work on noisy data as well.  So yes, the toolbox can be used with noisy data, but you will just have to be more careful about how you apply the methods and how you perform model selection.  Its only when you use the toolbox with a noisy simulation engine that a few special  options may need to be set.  In that case [[Contact]] us for more information.&lt;br /&gt;
&lt;br /&gt;
Note though, that the toolbox is not a statistical package, if you have noisy data and you need noise estimation algorithms, kernel smoothing algorithms, etc.  you should look towards other tools.&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between a ModelBuilder and a ModelFactory? ===&lt;br /&gt;
&lt;br /&gt;
See [[Add Model Type]].&lt;br /&gt;
&lt;br /&gt;
=== Why are the Neural Networks so slow? ===&lt;br /&gt;
&lt;br /&gt;
The ANN models are an extremely powerful model type that give very good results in many problems.  However, they are quite slow to use.  There are some things you can do:&lt;br /&gt;
&lt;br /&gt;
* use trainlm or trainscg instead of the default training function trainbr.  trainbr gives very good, smooth results but is slower to use.  If results with trainlm are not good enough, try using msereg as a performance function.&lt;br /&gt;
* try setting the training goal (= the SSE to reach during training) to a small positive number (e.g., 1e-5) instead of 0.&lt;br /&gt;
* check that the output range of your problem is not very small.  If your response data lies between 10e-5 and 10e-9 for example it will be very hard for the neural net to learn it.  In that case rescale your data to a more sane range.&lt;br /&gt;
* switch from ANN to one of the other neural network modelers: fanngenetic or nanngenetic. These are a lot faster than the default backend based on the [http://www.mathworks.com/products/neuralnet/ Matlab Neural Network Toolbox].  However, the accuracy is usually not as good.&lt;br /&gt;
* If you are using [[Measures#CrossValidation| CrossValidation]] try to switch to a different measure since CrossValidation is very expensive to use. CrossValidation is used by default if you have not defined a [[Measures| measure]] yourself.  When using one of the neural network model types, try to use a different measure if you can.  For example, our tests have shown that minimizing the sum of [[Measures#SampleError| SampleError]] and [[Measures#LRMMeasure| LRMMeasure]] can give equal or even better results than CrossValidation, while being much cheaper (see [[Multi-Objective Modeling]] for how to combine multiple measures).  See also the comments in &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; for examples.&lt;br /&gt;
&lt;br /&gt;
See also [[FAQ#How_can_I_make_the_toolbox_run_faster.3F]]&lt;br /&gt;
&lt;br /&gt;
=== How can I make the toolbox run faster? ===&lt;br /&gt;
&lt;br /&gt;
There are a number of things you can do to speed things up.  These are listed below.  Remember though that the main reason the toolbox may seem to be slow is due to the many models being built as part of the hyperparameter optimization.  Please make sure you fully understand the [[Running#Understanding_the_control_flow|control flow described here]] before trying more advanced options.&lt;br /&gt;
&lt;br /&gt;
* First of all check that your virus scanner is not interfering with Matlab. If McAfee or any other program wants to scan every file SUMO generates this really slows things down and your computer becomes unusable.&lt;br /&gt;
&lt;br /&gt;
* Turn off the plotting of models in [[Config:ContextConfig#PlotOptions| ContextConfig]], you can always generate plots from the saved mat files&lt;br /&gt;
&lt;br /&gt;
* This is an important one.  For most model builders there is an option &amp;quot;maxFunEals&amp;quot;, &amp;quot;maxIterations&amp;quot;, or equivalent.  Change this value to change the maximum number of models built between 2 sampling iterations.  The higher this number, the slower, but the better the models &#039;&#039;may&#039;&#039; be.  Equivalently, for the Genetic model builders reduce the population size and the number of generations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Disable some, or even all of the [[Config:ContextConfig#Profiling| profilers]] or disable the output handlers that draw charts.  For example, you might use the following configuration for the profilers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Profiling&amp;gt;&lt;br /&gt;
	&amp;lt;Profiler name=&amp;quot;.*share.*|.*ensemble.*|.*Level.*&amp;quot; enabled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toImage&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toFile&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Profiler&amp;gt;&lt;br /&gt;
			&lt;br /&gt;
	&amp;lt;Profiler name=&amp;quot;.*&amp;quot; enabled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;Output type=&amp;quot;toFile&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Profiler&amp;gt;&lt;br /&gt;
&amp;lt;/Profiling&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;.*&amp;quot; means match any one or more characters ([http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html see here for the full list of supported wildcards]).  Thus in this example all the profilers that have &amp;quot;share&amp;quot;, &amp;quot;ensemble&amp;quot;, or &amp;quot;Level&amp;quot; in their name shoud be enabled and should be saved as a text file (toFile) AND as an image file (toImage).  All the other profilers should be saved just to file. The idea is to only save to image what you want as an image since image generation is expensive.  If you do this or switch off image generation completely you will see everything run much faster.&lt;br /&gt;
&lt;br /&gt;
* Decrease the logging granularity, a log level of FINE (the default is FINEST or ALL) is more then granular enough.  Setting it to FINE, INFO, or even WARNING should speed things up.&lt;br /&gt;
* If you have a multi-core/multi-cpu machine:&lt;br /&gt;
** if you have the Matlab Parallel Computing Toolbox, try setting the parallelMode option to true in [[Config:ContextConfig]].  Now all model training occurs in parallel.  This may give unexpected errors in some cases so beware when using.&lt;br /&gt;
** if you are using a native executable or script as the sample evaluator set the threadCount variable in [[Config:SampleEvaluator#LocalSampleEvaluator| LocalSampleEvaluator]] equal to the number of cores/CPUs (only do this if it is ok to start multiple instances of your simulation script in parallel!)&lt;br /&gt;
* If you are using [[Measures#CrossValidation]] see if you can avoid it and use one of the other measures or a combination of measures (see [[Multi-Objective Modeling]]&lt;br /&gt;
* Dont use the Min-Max measure, it can slow things down. See also [[FAQ#How_do_I_force_the_output_of_the_model_to_lie_in_a_certain_range]]&lt;br /&gt;
* If you are using neural networks see [[FAQ#Why_are_the_Neural_Networks_so_slow.3F]]&lt;br /&gt;
&lt;br /&gt;
If you are having problems with very slow or seemingly hanging runs&lt;br /&gt;
&lt;br /&gt;
* Do a run inside the [http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/matlab_env/f9-17018.html&amp;amp;http://www.google.be/search?client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;channel=s&amp;amp;hl=nl&amp;amp;q=matlab+profiler&amp;amp;meta=&amp;amp;btnG=Google+zoeken Matlab profiler] and see where most time is spent.&lt;br /&gt;
* Monitor CPU and physical/virtual memory usage while the SUMO toolbox is running and see if you notice anything strange.  &lt;br /&gt;
&lt;br /&gt;
Also note that by default Matlab only allocates about 117 MB memory space for the Java Virtual Machine. If you would like to increase this limit (which you should) please follow the instructions [http://www.mathworks.com/support/solutions/data/1-18I2C.html?solution=1-18I2C here]. See also the general memory instructions [http://www.mathworks.com/support/tech-notes/1100/1106.html here].&lt;br /&gt;
&lt;br /&gt;
To check if your SUMO run has hanged, monitor your log file (with the level set at least to FINE).  If you see no changes for about 30 minutes the toolbox will probably have stalled.  [[Reporting problems| report the problems here]].&lt;br /&gt;
&lt;br /&gt;
Such problems are hard to identify and fix so it is best to work towards a reproducible test case if you think you found a performance or scalability issue.&lt;br /&gt;
&lt;br /&gt;
=== How do I build models with more than one output ===&lt;br /&gt;
&lt;br /&gt;
Sometimes you have multiple responses that you want to model at once.  See [[Running#Models_with_multiple_outputs]]&lt;br /&gt;
&lt;br /&gt;
=== How do I turn off adaptive sampling (run the toolbox for a fixed set of samples)? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Adaptive Modeling Mode]].&lt;br /&gt;
&lt;br /&gt;
=== How do I change the error function (relative error, RMSE, ...)? ===&lt;br /&gt;
&lt;br /&gt;
The [[Measures| &amp;lt;Measure&amp;gt;]] tag specifies the algorithm to use to assign models a score, e.g., [[Measures#CrossValidation| CrossValidation]].  It is also possible to specify which &#039;&#039;&#039;error function&#039;&#039;&#039; to  use, in the measure.  The default error function is &#039;&amp;lt;code&amp;gt;rootRelativeSquareError&amp;lt;/code&amp;gt;&#039;.&lt;br /&gt;
&lt;br /&gt;
Say you want to use [[Measures#CrossValidation| CrossValidation]] with the maximum absolute error, then you would put:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type=&amp;quot;CrossValidation&amp;quot; target=&amp;quot;0.001&amp;quot; errorFcn=&amp;quot;maxAbsoluteError&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the other hand, if you wanted to use the [[Measures#ValidationSet| ValidationSet]] measure with a relative root-mean-square error you would put:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Measure type=&amp;quot;ValidationSet&amp;quot; target=&amp;quot;0.001&amp;quot; errorFcn=&amp;quot;relativeRms&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default error function is &#039;&amp;lt;code&amp;gt;rootRelativeSquareError&amp;lt;/code&amp;gt;&#039;.  These error functions can be found in the &amp;lt;code&amp;gt;src/matlab/tools/errorFunctions&amp;lt;/code&amp;gt; directory.  You are free to modify them and add your own.  Remember that the choice of error function is very important! Make sure you think well about it.  Also see [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
=== How do I enable more profilers? ===&lt;br /&gt;
&lt;br /&gt;
Go to the [[Config:ContextConfig#Profiling| &amp;lt;Profiling&amp;gt;]] tag and put &amp;lt;code&amp;gt;&amp;quot;&amp;lt;nowiki&amp;gt;.*&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; as the regular expression.  See also the next question.&lt;br /&gt;
&lt;br /&gt;
=== What regular expressions can I use to filter profilers? ===&lt;br /&gt;
&lt;br /&gt;
See the syntax [http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html here].&lt;br /&gt;
&lt;br /&gt;
=== How can I ensure deterministic results? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Random state]].&lt;br /&gt;
&lt;br /&gt;
=== How do I get a simple closed-form model (symbolic expression)? ===&lt;br /&gt;
&lt;br /&gt;
See : [[Using a model]].&lt;br /&gt;
&lt;br /&gt;
=== How do I enable the Heterogenous evolution to automatically select the best model type? ===&lt;br /&gt;
&lt;br /&gt;
Simply use the [[Config:AdaptiveModelBuilder#heterogenetic| heterogenetic modelbuilder]] as you would any other.&lt;br /&gt;
&lt;br /&gt;
=== What is the combineOutputs option? ===&lt;br /&gt;
&lt;br /&gt;
See [[Running#Models_with_multiple_outputs]]&lt;br /&gt;
&lt;br /&gt;
=== What error function should I use? ===&lt;br /&gt;
&lt;br /&gt;
The default error function is the Root Relative Square Error (RRSE).  On the other hand meanRelativeError may be more intuitive but in that case you have to be careful if you have function values close to zero since in that case the relative error explodes or even gives infinity.  You could also use one of the combined relative error functions (contain a +1 in the denominator to account for small values) but then you get something between a relative and absolute error (=&amp;gt; hard to interpret).&lt;br /&gt;
&lt;br /&gt;
So to be sure an absolute error seems the safest bet (like the RMSE), however in that case you have to come up with sensible accuracy targets and realize that you will build models that try to fit the regions of high absolute value better than the low ones.&lt;br /&gt;
&lt;br /&gt;
Picking an error function is a very tricky business and many people do not realize this.  Which one is best for you and what targets you use ultimately depends on your application and on what kind of model you want.  There is no general answer.&lt;br /&gt;
&lt;br /&gt;
A recommended read is [http://www.springerlink.com/content/24104526223221u3/ is this paper].  See also the page on [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
=== I just want to generate an initial design (no sampling, no modeling) ===&lt;br /&gt;
&lt;br /&gt;
Do a regular SUMO run, except set the &#039;maxModelingIterations&#039; in the SUMO tag to 0.  The resulting run will only generate (and evaluate) the initial design and save it to samples.txt in the output directory.&lt;br /&gt;
&lt;br /&gt;
=== How do I start a run with the samples of of a previous run, or with a custom initial design? ===&lt;br /&gt;
&lt;br /&gt;
Use a Dataset design component, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;InitialDesign type=&amp;quot;DatasetDesign&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option key=&amp;quot;file&amp;quot; value=&amp;quot;/path/to/the/file/containing/the/points.txt&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/InitialDesign&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== What is a level plot? ===&lt;br /&gt;
&lt;br /&gt;
A level plot is a plot that shows how the error histogram changes as the best model improves. An example is:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:levelplot.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Level plots only work if you have a separate dataset (test set) that the model can be checked against.  See the comments in default.xml for how to enable level plots.&lt;br /&gt;
&lt;br /&gt;
===I am getting a java out of memory error, what happened?===&lt;br /&gt;
Datasets are loaded through java. This means that the java heap space is used for storing the data. If you try to load a huge dataset (&amp;gt; 50MB), you might experience problems with the maximum heap size. You can solve this by raising the heap size as described on the following webpage:&lt;br /&gt;
[http://www.mathworks.com/support/solutions/data/1-18I2C.html]&lt;br /&gt;
&lt;br /&gt;
=== How do I force the output of the model to lie in a certain range ===&lt;br /&gt;
&lt;br /&gt;
See [[Measures#MinMax]].&lt;br /&gt;
&lt;br /&gt;
=== My problem is high dimensional and has a lot of input parameters (more than 10).  Can I use SUMO? ===&lt;br /&gt;
&lt;br /&gt;
That depends.  Remember that the main focus of SUMO is to generate accurate &#039;global&#039; models. If you want to do sampling the practical dimensionality is limited to around 6-8 (though it depends on the problem and how cheap the simulations are!).  Since the more dimensions the more space you need to fill.  At that point you need to see if you can extend the models with domain specific knowledge (to improve performance) or apply a dimensionality reduction method ([[FAQ#Can_the_toolbox_tell_me_which_are_the_most_important_inputs_.28.3D_variable_selection.29.3F|see the next question]]).  On the other hand, if you don&#039;t need to do sample selection but you have a fixed dataset which you want to model.  Then the performance on high dimensional data just depends on the model type.  For examples SVM type models are independent of the dimension and thus can always be applied.  Though things like feature selection are always recommended.&lt;br /&gt;
&lt;br /&gt;
=== Can the toolbox tell me which are the most important inputs (= variable selection)? ===&lt;br /&gt;
&lt;br /&gt;
When tackling high dimensional problems a crucial question is &amp;quot;Are all my input parameters relevant?&amp;quot;.  Normally domain knowledge would answer this question but this is not always straightforward. In those cases a whole set of algorithms exist for doing dimensionality reduction (= feature selection).  Support for some of these algorithms may eventually make it into the toolbox but are not currently implemented.  That is a whole PhD thesis on its own.  However, if a model type provides functions for input relevance determination the toolbox can leverage this.  For example, the LS-SVM model available in the toolbox supports Automatic Relevance Determination (ARD).  This means that if you use the SUMO Toolbox to generate an LS-SVM model, you can call the function &#039;&#039;ARD()&#039;&#039; on the model and it will give you a list of the inputs it thinks are most important.&lt;br /&gt;
&lt;br /&gt;
=== Should I use a Matlab script or a shell script for interfacing with my simulation code? ===&lt;br /&gt;
&lt;br /&gt;
When you want to link SUMO with an external simulation engine (ADS Momentum, SPECTRE, FEBIO, SWAT, ...) you need a [http://en.wikipedia.org/wiki/Shell_script shell script] (or executable) that can take the requested points from SUMO, setup the simulation engine (e.g., set necessary input files), calls the simulator for all the requested points, reads the output (e.g., one or more output files), and returns the results to SUMO (see [[Interfacing with the toolbox]]).&lt;br /&gt;
&lt;br /&gt;
Which one you choose (matlab script + [[Config:SampleEvaluator#matlab|Matlab Sample Evaluator]], or shell script/executable with [[Config:SampleEvaluator#local|Local Sample Evaluator]] is basically a matter of preference, take whatever is easiest for you.&lt;br /&gt;
&lt;br /&gt;
HOWEVER, there is one important consideration: Matlab does not support threads so this means that if you use a matlab script to interface with the simulation engine, simulations and modeling will happen sequentially, NOT in parallel.  This means the modeling code will sit around waiting, doing nothing, until the simulation(s) have finished.  If your simulation code takes a long time to run this is not very efficient.  In version 6.2 we will probably fix this by using the Parallel Computing Toolbox.&lt;br /&gt;
&lt;br /&gt;
On the other hand, using a shell script/executable, does allow the modeling and simulation to occur in parallel (at least if you wrote your interface script in such a way that it can be run multiple times in parallel, i.e., no shared global directories or variables that can cause [http://en.wikipedia.org/wiki/Race_condition race conditions]).&lt;br /&gt;
&lt;br /&gt;
As a sidenote, note that if you already put work into a Matlab script, it is still possible to use a shell script, by writing a shell script that starts Matlab (using -nodisplay or -nojvm options), executes your script (using the -r option), and exits Matlab again.  Of course it is not very elegant and adds some overhead but depending on your situation it may be worth it.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== I have a problem and I want to report it ===&lt;br /&gt;
&lt;br /&gt;
See : [[Reporting problems]].&lt;br /&gt;
&lt;br /&gt;
=== I sometimes get flat models when using rational functions ===&lt;br /&gt;
&lt;br /&gt;
First make sure the model is indeed flat, and does not just appear so on the plot. You can verify this by looking at the output axis range and making sure it is within reasonable bounds. When there are poles in the model, the axis range is sometimes stretched to make it possible to plot the high values around the pole, causing the rest of the model to appear flat. If the model contains poles, refer to the next question for the solution.&lt;br /&gt;
&lt;br /&gt;
The [[Config:AdaptiveModelBuilder#rational| RationalModel]] tries to do a least squares fit, based on which monomials are allowed in numerator and denominator. We have experienced that some models just find a flat model as the best least squares fit. There are two causes for this:&lt;br /&gt;
&lt;br /&gt;
* The number of sample points is few, and the model parameters (as explained [[Model types explained#PolynomialModel|here]]) force the model to use only a very small set of degrees of freedom.  The solution in this case is to increase the minimum percentage bound in the RationalFactory section of your configuration file: change the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option to &amp;lt;code&amp;gt;&amp;quot;60,100&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;80,100&amp;quot;&amp;lt;/code&amp;gt;,  or even &amp;lt;code&amp;gt;&amp;quot;100,100&amp;quot;&amp;lt;/code&amp;gt;.  A setting of &amp;lt;code&amp;gt;&amp;quot;100,100&amp;quot;&amp;lt;/code&amp;gt; will force the polynomial models to always exactly interpolate.  However, note that this does not scale very well with the number of samples (to counter this you can set &amp;lt;code&amp;gt;&amp;quot;maxDegrees&amp;quot;&amp;lt;/code&amp;gt;). If, after increasing the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; you still get weird, spiky, models you simply need more samples or you should switch to a different model type.&lt;br /&gt;
* Another possibility is that given a set of monomial degrees, the flat function is just the best possible least squares fit. In that case you simply need to wait for more samples.&lt;br /&gt;
* The measure you are using is not accurately estimating the true error, try a different measure or error function.  Note that a maximum relative error is dangerous to use since a the 0-function (= a flat model) has a lower maximum relative error than a function which overshoots the true behavior in some places but is otherwise correct.&lt;br /&gt;
&lt;br /&gt;
=== When using rational functions I sometimes get &#039;spikes&#039; (poles) in my model ===&lt;br /&gt;
&lt;br /&gt;
When the denominator polynomial of a rational model has zeros inside the domain, the model will tend to infinity near these points. In most cases these models will only be recognized as being `the best&#039; for a short period of time. As more samples get selected these models get replaced by better ones and the spikes should disappear.&lt;br /&gt;
&lt;br /&gt;
So, it is possible that a rational model with &#039;spikes&#039; (caused by poles inside the domain) will be selected as best model. This may or may not be an issue, depending on what you want to use the model for. If it doesn&#039;t matter that the model is very inaccurate at one particular, small spot (near the pole), you can use the model with the pole and it should perform properly.&lt;br /&gt;
&lt;br /&gt;
However, if the model should have a reasonable error on the entire domain, several methods are available to reduce the chance of getting poles or remove the possibility altogether. The possible solutions are:&lt;br /&gt;
&lt;br /&gt;
* Simply wait for more data, usually spikes disappear (but not always).&lt;br /&gt;
* Lower the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option in the RationalFactory section of your configuration file.  For example, say you have 500 data points and if the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option is set to 100 percent it means the degrees of the polynomials in the rational function can go up to 500.  If you set the maximum of the &amp;lt;code&amp;gt;&amp;quot;percentBounds&amp;quot;&amp;lt;/code&amp;gt; option to 10, on the other hand, the maximum degree is set at 50 (= 10 percent of 500).  You can also use the &amp;lt;code&amp;gt;&amp;quot;maxDegrees&amp;quot;&amp;lt;/code&amp;gt; option to set an absolute bound.&lt;br /&gt;
* If you roughly know the output range your data should have, an easy way to eliminate poles is to use the [[Measures#MinMax| MinMax]] [[Measures| Measure]] together with your current measure ([[Measures#CrossValidation| CrossValidation]] by default).  This will cause models whose response falls outside the min-max bounds to be penalized extra, thus spikes should disappear.&lt;br /&gt;
* Use a different model type (RBF, ANN, SVM,...), as spikes are a typical problem of rational functions.&lt;br /&gt;
* Increase the population size if using the genetic version&lt;br /&gt;
* Try using the [[SampleSelector#RationalPoleSuppressionSampleSelector| RationalPoleSuppressionSampleSelector]], it was designed to get rid of this problem more quickly, but it only selects one sample at the time.&lt;br /&gt;
&lt;br /&gt;
However, these solutions may not still not suffice in some cases.  The underlying reason is that the order selection algorithm contains quite a lot of randomness, making it prone to over-fitting.  This issue is being worked on but will take some time.  Automatic order selection is not an easy problem&lt;br /&gt;
&lt;br /&gt;
=== There is no noise in my data yet the rational functions don&#039;t interpolate ===&lt;br /&gt;
&lt;br /&gt;
[[FAQ#I sometimes get flat models when using rational functions |see this question]].&lt;br /&gt;
&lt;br /&gt;
=== When loading a model from disk I get &amp;quot;Warning: Class &#039;:all:&#039; is an unknown object class.  Object &#039;model&#039; of this class has been converted to a structure.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You are trying to load a model file without the SUMO Toolbox in your Matlab path.  Make sure the toolbox is in your Matlab path. &lt;br /&gt;
&lt;br /&gt;
In short: Start Matlab, run &amp;lt;code&amp;gt;&amp;lt;SUMO-Toolbox-directory&amp;gt;/startup.m&amp;lt;/code&amp;gt; (to ensure the toolbox is in your path) and then try to load your model.&lt;br /&gt;
&lt;br /&gt;
=== When running the SUMO Toolbox you get an error like &amp;quot;No component with id &#039;annpso&#039; of type &#039;adaptive model builder&#039; found in config file.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This means you have specified to use a component with a certain id (in this case an AdaptiveModelBuilder component with id &#039;annpso&#039;) but a component with that id does not exist further down in the configuration file (in this particular case &#039;annpso&#039; does not exist but &#039;anngenetic&#039; or &#039;ann&#039; does, as a quick search through the configuration file will show).  So make sure you only declare components which have a definition lower down.  So see which components are available, simply scroll down the configuration file and see which id&#039;s are specified.  Please also refer to the [[Toolbox configuration#Declarations and Definitions | Declarations and Definitions]] page.&lt;br /&gt;
&lt;br /&gt;
=== When using NANN models I sometimes get &amp;quot;Runtime error in matrix library, Choldc failed. Matrix not positive definite&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This is a problem in the mex implementation of the [http://www.iau.dtu.dk/research/control/nnsysid.html NNSYSID] toolbox.  Simply delete the mex files, the Matlab implementation will be used and this will not cause any problems.&lt;br /&gt;
&lt;br /&gt;
=== When using FANN models I sometimes get &amp;quot;Invalid MEX-file createFann.mexa64, libfann.so.2: cannot open shared object file: No such file or directory.&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This means Matlab cannot find the [http://leenissen.dk/fann/ FANN] library itself to link to dynamically.  Make sure it is in your library path, ie, on unix systems, make sure it is included in LD_LIBRARY_PATH.&lt;br /&gt;
&lt;br /&gt;
=== When trying to use SVM models I get &#039;Error during fitness evaluation: Error using ==&amp;gt; svmtrain at 170, Group must be a vector&#039; ===&lt;br /&gt;
&lt;br /&gt;
You forgot to build the SVM mex files for your platform.  For windows they are pre-compiled for you, on other systems you have to compile them yourself with the makefile.&lt;br /&gt;
&lt;br /&gt;
=== When running the toolbox you get something like &#039;??? Undefined variable &amp;quot;ibbt&amp;quot; or class &amp;quot;ibbt.sumo.config.ContextConfig.setRootDirectory&amp;quot;&#039; ===&lt;br /&gt;
&lt;br /&gt;
First see [[FAQ#What_is_the_relationship_between_Matlab_and_Java.3F | this FAQ entry]].&lt;br /&gt;
&lt;br /&gt;
This means Matlab cannot find the needed Java classes.  This typically means that you forgot to run &#039;startup&#039; (to set the path correctly) before running the toolbox (using &#039;go&#039;).  So make sure you always run &#039;startup&#039; before running &#039;go&#039; and that both commands are always executed in the toolbox root directory.&lt;br /&gt;
&lt;br /&gt;
If you did run &#039;startup&#039; correctly and you are still getting an error, check that Java is properly enabled:&lt;br /&gt;
&lt;br /&gt;
# typing &#039;usejava jvm&#039; should return 1 &lt;br /&gt;
# typing &#039;s = java.lang.String&#039;, this should &#039;&#039;not&#039;&#039; give an error&lt;br /&gt;
# typing &#039;version(&#039;-java&#039;)&#039; should return at least version 1.5.0&lt;br /&gt;
&lt;br /&gt;
If (1) returns 0, then the jvm of your Matlab installation is not enabled.  Check your Matlab installation or startup parameters (did you start Matlab with -nojvm?)&lt;br /&gt;
If (2) fails but (1) is ok, there is a very weird problem, check the Matlab documentation.&lt;br /&gt;
If (3) returns a version before 1.5.0 you will have to upgrade Matlab to a newer version or force Matlab to use a custom, newer, jvm (See the Matlab docs for how to do this).&lt;br /&gt;
&lt;br /&gt;
=== You get errors related to &#039;&#039;gaoptimset&#039;&#039;,&#039;&#039;psoptimset&#039;&#039;,&#039;&#039;saoptimset&#039;&#039;,&#039;&#039;newff&#039;&#039; not being found or unknown ===&lt;br /&gt;
&lt;br /&gt;
You are trying to use a component of the SUMO toolbox that requires a Matlab toolbox that you do not have.  See the [[System requirements]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== After upgrading I get all kinds of weird errors or warnings when I run my XML files ===&lt;br /&gt;
&lt;br /&gt;
See [[FAQ#How_do_I_upgrade_to_a_newer_version.3F]]&lt;br /&gt;
&lt;br /&gt;
=== I get a warning about duplicate samples being selected, why is this? ===&lt;br /&gt;
&lt;br /&gt;
Sometimes, in special circumstances, multiple sample selectors may select the same sample at the same time. Even though in most cases this is detected and avoided, it can still happen when multiple outputs are modelled in one run, and each output is sampled by a different sample selector. These sample selectors may then accidentally choose the same new sample location.&lt;br /&gt;
&lt;br /&gt;
=== I sometimes see the error of the best model go up, shouldn&#039;t it decrease monotonically? ===&lt;br /&gt;
&lt;br /&gt;
There is no short answer here, it depends on the situation.  Below &#039;single objective&#039; refers to the case where during the hyperparameter optimization (= the modeling iteration) combineOutputs=false, and there is only a single measure set to &#039;on&#039;.  The other cases are classified as &#039;multi objective&#039;.  See also [[Multi-Objective Modeling]].&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Sampling off&#039;&#039;&#039;&lt;br /&gt;
## &#039;&#039;Single objective&#039;&#039;: the error should always decrease monotonically, you should never see it rise. If it does [[reporting problems|report it as a bug]]&lt;br /&gt;
## &#039;&#039;Multi objective&#039;&#039;: There is a very small chance the error can temporarily decrease but it should be safe to ignore.  In this case it is best to use a multi objective enabled modeling algorithm&lt;br /&gt;
# &#039;&#039;&#039;Sampling on&#039;&#039;&#039;&lt;br /&gt;
## &#039;&#039;Single objective&#039;&#039;: inside each modeling iteration the error should always monotonically decrease.  At each sampling iteration the best models are updated (to reflect the new data), thus there the best model score may increase, this is normal behavior(*).  It is possible that the error increases for a short while, but as more samples come in it should decrease again.  If this does not happen you are using a poor measure or poor hyperparameter optimization algorithm, or there is a problem with the modeling technique itself (e.g., clustering in the datapoints is causing numerical problems).&lt;br /&gt;
## &#039;&#039;Multi objective&#039;&#039;: Combination of 1.2 and 2.1.&lt;br /&gt;
&lt;br /&gt;
(*) This is normal if you are using a measure like cross validation that is less reliable on little data than on more data.  However, in some cases you may wish to override this behavior if you are using a measure that is independent of the number of samples the model is trained with (e.g., a dense, external validation set).  In this case you can force a monotonic decrease by setting the &#039;keepOldModels&#039; option in the SUMO tag to true.  Use with caution!&lt;br /&gt;
&lt;br /&gt;
=== At the end of a run I get Undefined variable &amp;quot;ibbt&amp;quot; or class &amp;quot;ibbt.sumo.util.JpegImagesToMovie.createMovie&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This is normal, the warning printed out before the error explains why:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[WARNING] jmf.jar not found in the java classpath, movie creation may not work! Did you install the SUMO extension pack? Alternatively you can install the java media framwork from java.sun.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By default, at the end of a run, the toolbox will try to generate a movie of all the intermediate model plots.  To do this it requires the extension pack to be installed (you can download it from the SUMO lab website).  So install the extension pack and you will no longer get the error.  Alternatively you can simply set the &amp;quot;createMovie&amp;quot; option in the &amp;lt;SUMO&amp;gt; tag to &amp;quot;false&amp;quot;.&lt;br /&gt;
So note that there is nothing to worry about, everything has run correctly, it is just the movie creation that is failing.&lt;br /&gt;
&lt;br /&gt;
=== On startup I get the error &amp;quot;java.io.IOException: Couldn&#039;t get lock for output/SUMO-Toolbox.%g.%u.log&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This error means that SUMO is unable to create the log file.  Check the output directory exists and has the correct permissions.  If  your output directory is on a shared (network) drive this could also cause problems.  Also make sure you are running the toolbox (calling &#039;go&#039;) from the toolbox root directory, and not in some toolbox sub directory! This is very important.&lt;br /&gt;
&lt;br /&gt;
If you still have problems you can override the default logfile name and location as follows:&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;FileHandler&amp;gt; tag inside the &amp;lt;Logging&amp;gt; tag add the following option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;Option key=&amp;quot;Pattern&amp;quot; value=&amp;quot;My_SUMO_Log_file.log&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This means that from now on the sumo log file will be saved as the file &amp;quot;My_SUMO_Log_file.log&amp;quot; in the SUMO root directory.  You can use any path you like.&lt;br /&gt;
For more information about this option see [http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/FileHandler.html the FileHandler Javadoc].&lt;br /&gt;
&lt;br /&gt;
=== The Toolbox crashes with &amp;quot;Too many open files&amp;quot; what should I do? ===&lt;br /&gt;
&lt;br /&gt;
This is a known bug, see [[Known_bugs#Version_6.1]].&lt;br /&gt;
&lt;br /&gt;
If this does not fix your problem then do the following:&lt;br /&gt;
&lt;br /&gt;
On Windows try increasing the limit in windows as dictated by the error message.  Also, when you get the error, use the fopen(&amp;quot;all&amp;quot;) command to see which files are open and send us the list of filenames.  Then we can maybe further help you debug the problem.  Even better would be to use the Process Explorer utility [http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx available here]. When you get the error, dont shut down Matlab but start Process explorer and see which SUMO-Toolbox related files are open.  If you then [[Reporting_problems|let us know]] we can further debug the problem.&lt;br /&gt;
&lt;br /&gt;
On Linux again don&#039;t shut down Matlab but:&lt;br /&gt;
&lt;br /&gt;
* open a new terminal window&lt;br /&gt;
* type:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsof &amp;gt; openFiles.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Then [[Contact|send us]] the following information:&lt;br /&gt;
** the file openFiles.txt &lt;br /&gt;
** the exact Linux distribution you are using (Red Hat 10, CentOS 5, SUSE 11, etc).&lt;br /&gt;
** the output of&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
uname -a ; df -T ; mount&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a temporary workaround you can try increasing the maximum number of open files ([http://www.linuxforums.org/forum/redhat-fedora-linux-help/64716-where-chnage-file-max-permanently.html see for example here]).  We are currently debugging this issue.&lt;br /&gt;
&lt;br /&gt;
In general: to be safe it is always best to do a SUMO run from a clean Matlab startup, especially if the run is important or may take a long time.&lt;br /&gt;
&lt;br /&gt;
=== When using the LS-SVM models I get lots of warnings: &amp;quot;make sure lssvmFILE.x (lssvmFILE.exe) is in the current directory, change now to MATLAB implementation...&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
The LS-SVMs have a C implementation and a Matlab implementation.  If you dont have the compiled mex files it will use the matlab implementation and give a warning.  But everything will work properly.  To get rid of the warnings, compile the mex files [[Installation#Windows|as described here]], this can be done very easily.  Or simply comment out the lines that produce the output in the lssvmlab directory in src/matlab/contrib.&lt;br /&gt;
&lt;br /&gt;
=== I get an error &amp;quot;Undefined function or method &#039;trainlssvm&#039; for input arguments of type &#039;cell&#039;&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You most likely forgot to [[Installation#Extension_pack|install the extension pack]].&lt;br /&gt;
&lt;br /&gt;
=== When running the SUMO-Toolbox under Linux, the [http://en.wikipedia.org/wiki/X_Window_System X server] suddenly restarts and I am logged out of my session ===&lt;br /&gt;
&lt;br /&gt;
Note that in Linux there is an explicit difference between the [http://en.wikipedia.org/wiki/Linux_kernel kernel] and the [http://en.wikipedia.org/wiki/X_Window_System X display server].  If the kernel crashes or panics your system completely freezes (you have to reset manually) or your computer does a full reboot.  Luckily this is very rare.  However, if you display server (X) crashes or restarts it means your operating system is still running fine, its just that you have to log in again since your graphical session has terminated.  The FAQ entry is only for the latter.  If you find your kernel is panicing or freezing, that is a more fundamental problem and you should contact your system admin.&lt;br /&gt;
&lt;br /&gt;
So what happens is that after a few seconds when the toolbox wants to plot the first model [http://en.wikipedia.org/wiki/X_Window_System X] crashes and you are suddenly presented with a login screen.  The problem is not due to SUMO but rather to the Matlab - Display server interaction.&lt;br /&gt;
&lt;br /&gt;
What you should first do is set plotModels to false in the [[Config:ContextConfig]] tag, run again and see if the problem occurs again.  If it does please [[Reporting_problems| report it]].  If the problem does not occur you can then try the following:&lt;br /&gt;
&lt;br /&gt;
* Log in as root (or use [http://en.wikipedia.org/wiki/Sudo sudo])&lt;br /&gt;
* Edit the following configuration file using a text editor (pico, nano, vi, kwrite, gedit,...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/etc/X11/xorg.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: the exact location of the xorg.conf file may vary on your system.&lt;br /&gt;
&lt;br /&gt;
* Look for the following line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  Load         &amp;quot;glx&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Comment it out by replacing it by:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#  Load         &amp;quot;glx&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then save the file, restart your X server (if you do not know how to do this simply reboot your computer)&lt;br /&gt;
* Log in again, and try running the toolbox (making sure plotModels is set to true again).  It should now work.  If it still does not please [[Reporting_problems| report it]].&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* this is just an empirical workaround, if you have a better idea please [[Contact|let us know]]&lt;br /&gt;
* if you wish to debug further yourself please check the Xorg log files and those in /var/log&lt;br /&gt;
* another possible workaround is to start matlab with the &amp;quot;-nodisplay&amp;quot; option.  That could work as well.&lt;br /&gt;
&lt;br /&gt;
=== I get the error &amp;quot;Failed to close Matlab pool cleanly, error is Too many output arguments&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
This happens if you run the toolbox on Matlab version 2008a and you have the parallel computing toolbox installed.  You can simply ignore this error message, it does not cause any problems. If you want to use SUMO with the parallel computing toolbox you will need Matlab 2008b.&lt;br /&gt;
&lt;br /&gt;
=== The toolbox seems to keep on running forever, when or how will it stop? ===&lt;br /&gt;
&lt;br /&gt;
The toolbox will keep on generating models and selecting data until one of the termination criteria has been reached. It is up to &#039;&#039;you&#039;&#039; to choose these targets carefully, so how low the toolbox runs simply depends on what targets you choose.  Please see [[Running#Understanding_the_control_flow]].&lt;br /&gt;
&lt;br /&gt;
Of course choosing a-priori targets up front is not always easy and there is no real solution for this, except thinking well about what type of model you want (see [[FAQ#I_dont_like_the_final_model_generated_by_SUMO_how_do_I_improve_it.3F]]).  In doubt you can always use a small value (or 0) and then simply quit the running toolbox using Ctrl-C when you think its been enough.&lt;br /&gt;
&lt;br /&gt;
While one could implement fancy, automatic stopping algorithms, their actual benefit is questionable.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://sumowiki.ilabt.imec.be/index.php?title=Changelog&amp;diff=5017</id>
		<title>Changelog</title>
		<link rel="alternate" type="text/html" href="https://sumowiki.ilabt.imec.be/index.php?title=Changelog&amp;diff=5017"/>
		<updated>2009-10-19T09:13:34Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below you will find the detailed list of changes in every new release.  For a more high level overview see the [[Whats new]] page.&lt;br /&gt;
&lt;br /&gt;
== 6.2.1 - 19 October 2009 ==&lt;br /&gt;
&lt;br /&gt;
* This release fixes a number of bugs from 6.2. All users are strongly requested to upgrade.&lt;br /&gt;
&lt;br /&gt;
== 6.2 - 6 October 2009 ==&lt;br /&gt;
&lt;br /&gt;
* A new neural network modelbuilder &amp;quot;ann&amp;quot;.  This is a lot faster than the existing &amp;quot;anngenetic&amp;quot; and the quality of the models is roughly the same&lt;br /&gt;
* The sample selection infrastructure is now much more powerful, sample selection criteria can be combined with much more flexibility. This opens the way to dynamic variation of sampling criteria.&lt;br /&gt;
* Support for Input constraints / multiple output sampling in the LOLA-Voronoi sample selection algorithm&lt;br /&gt;
* Support for auto-sampled inputs (e.g., frequency in an EM context) in LOLA-Voronoi.  This is useful if a particular input is already sampled by your simulator.&lt;br /&gt;
* Automatic filtering of samples close to each other in CombinedSampleSelector&lt;br /&gt;
* Support for TriScatteredInterp in InterpolationModel when it is available (Matlab version 2009a and later)&lt;br /&gt;
* Sample selectors that support it (for example: LOLA-Voronoi) now give priorities to new samples, to that samples are submitted and evaluated in order of importance.&lt;br /&gt;
* Support for pre-calculated Latin Hypercube Designs, these will be automatically downloaded and used where possible and will improve performance&lt;br /&gt;
* The Blind Kriging models have been improved and can now also be used as ordinary Kriging models.  Since these models are superior to the existing DACE Toolbox models, the DACE Toolbox backend has been removed.&lt;br /&gt;
* The EGOModelBuilder (do model parameter optimization using the EGO algorithm) now uses a nested blind kriging model instead of one based on the DACE Toolbox.  This allows for better accuracy&lt;br /&gt;
* The Kriging correlation functions can now be chosen automatically (instead of only the correlation parameters)&lt;br /&gt;
* Support for multiobjective optimization in the EGO framewok (extended version of probability of improvement)&lt;br /&gt;
* DelaunaySampleSelector, OptimizeCriterion support the same set of criterions&lt;br /&gt;
* EGO Improvement criteria can now be used together with DACEModel, RBFModel, and SVMModel (LS-SVM backend only)&lt;br /&gt;
* Added a model type and builder that does linear/cubic/nearest neighbour interpolation&lt;br /&gt;
* All error functions and measures now consistently deal with complex valued data and multiple output models&lt;br /&gt;
* Various improvements in the Model Info GUI as part of the Model browser tool&lt;br /&gt;
* Improved stability in LRMMeasure, a behavioral complexity metric to help ensure parsimonious models&lt;br /&gt;
* The profiler GUI has been updated and improved, and support for textual profilers has been added.&lt;br /&gt;
* Improved performance when using Measures, especially for models with multiple outputs.&lt;br /&gt;
* Improved management of the best model trace, also in pareto mode&lt;br /&gt;
* Removed the debug output when using (LS-)SVM models and added compiled mex files for Windows&lt;br /&gt;
* Ported the remaining classes to Matlabs Classdef format&lt;br /&gt;
* Increased use of the parallel computing toolbox (if available) in order to speed up modeling&lt;br /&gt;
* Improved the Matlab file headers so the help text is more informative (always includes at least the signature)&lt;br /&gt;
* Support for plotting the model prediction uncertainty in the model browser (only for 1D plots and not supported by all model types)&lt;br /&gt;
* Added support for so-called &amp;quot;reference by id&amp;quot; on every level of the config. If a tag of a particular type is defined on top-level with an id, it can be referenced everywhere else, instead of copying it entirely. See rationalPoleSupression sample selector and patternsearch Optimizer, for example.&lt;br /&gt;
* EmptyModelBuilder added - in case you just want to use the sequential design facilities of the toolbox, but not its models.&lt;br /&gt;
* Various cleanups and bugfixes&lt;br /&gt;
&lt;br /&gt;
== 6.1.1 - 17 April 2009 ==&lt;br /&gt;
&lt;br /&gt;
* Various cleanups and bugfixes (see [[Known bugs]] for 6.1)&lt;br /&gt;
&lt;br /&gt;
== 6.1 - 16 February 2009 ==&lt;br /&gt;
&lt;br /&gt;
* The default error function is now the Bayesian Error Estimation Quotient (BEEQ)&lt;br /&gt;
* Full support for multi-objective model generation, multiple measures can now be enforced simultaneously.  This can also be applied to generating models with multiple outputs (combineOutputs = true).  Together with the automatic model type selection algorithm (heterogenetic) this allows the automatic selection of the best model type per output.&lt;br /&gt;
* The model browser GUI now supports QQ plots&lt;br /&gt;
* The Gradient Sample Selection Algorithm has been renamed to the Local Linear Sample Selector (LOLASampleSelector)&lt;br /&gt;
* The modelbuilders have been refactored and some removed.  This is a result of the optimizer hierarchy being cleaned up.  Adding a new model parameter optimization routine should now be more straightforward.&lt;br /&gt;
* The interface classes have been renamed to factories as this is more correct.  All implementations have been  ported to Matlab&#039;s new Classdef format and the inherritance hierarchy has been cleaned up.  It should now be significantly easier to add support for new approximation types.&lt;br /&gt;
* The ModelInterfaces are now known as ModelFactories, this is more correct.  Note that the XML tagnames have been changed as well.&lt;br /&gt;
* The Model class hierarchy has been converted to the new Classdef format.  This means that models generated with previous versions of the toolbox will no longer be loadable in this version.&lt;br /&gt;
* The heterogenetic model builder for automatic model type selection has been cleaned up and made more robust.&lt;br /&gt;
* Rational models now support all available modelbuilders.  This means that order selection can be done by PSO DIRECT, Simulated Annealing, ... instead of just GA and Sequential.&lt;br /&gt;
* New optimizers added are (they can also be used as model builders): Differential Evolution&lt;br /&gt;
* Added a Blind Kriging model type implementation as a backend of KrigingModel&lt;br /&gt;
* Addition of an EGO model builder.  This allows optimization of the model parameters using the well known Efficient Global Optimization (EGO) algorithm.  In essence this uses a nested Kriging Model to predict which parameters should be used to build the next model.&lt;br /&gt;
* Trivial dependencies on the Statistics Toolbox have been removed&lt;br /&gt;
* Added a new smoothness measure (LRMMeasure) that helps to ensure smooth models and reduce erratic bumps.  It works best when combined with other Measures (such as SampleError for ANN models) &lt;br /&gt;
* Models now have a simple evaluateDerivative() method that allows one to easily get gradient information.  The base class implementation is very simple but works. Models can override this method to get more efficient implementations.&lt;br /&gt;
* Added experimental support for the Matlab Parallel Computing Toolbox (local scheduler only).  This means that when the parallelMode option in ContextConfig is switched on, model construction will make use of all available cores/cpu&#039;s.&lt;br /&gt;
* Many speed improvements, some quite significant.&lt;br /&gt;
* Various cleanups and bugfixes&lt;br /&gt;
&lt;br /&gt;
== 6.0.1 - Released 23 August 2008 ==&lt;br /&gt;
&lt;br /&gt;
* Fixed a number of (minor) bugs in the 6.0 release&lt;br /&gt;
&lt;br /&gt;
== 6.0 - Released 6 August 2008 ==&lt;br /&gt;
&lt;br /&gt;
* Many important bugs have been fixed that could have resulted in sub-optimal models&lt;br /&gt;
* Addition of a Model Browser GUI, this allows you to easily &#039;walk&#039; through multi-dimensional models&lt;br /&gt;
* Moved the InitialDesign tag outside of the SUMO tag&lt;br /&gt;
* Some speed improvements&lt;br /&gt;
* Removed support for dummy inputs&lt;br /&gt;
* Measure scores and input/output names are saved inside the models, allowing for more usable plots&lt;br /&gt;
* Added the project directory concept, each example is now self contained in its own directory&lt;br /&gt;
* #simulatorname# can now be used in the run name, it will get replaced	by the real simulator name&lt;br /&gt;
* Input dimensions can be ignored during sampling if the simulator samples them for you. This is useful in EM applications for example where frequency points can be cheap.&lt;br /&gt;
* Logging framework revamped, logs can now be saved on a per run basis&lt;br /&gt;
* The global score calculation has changed! it is a weighted sum of all individual measures. (the weights are configurable but default to 1)&lt;br /&gt;
* Added a simple polynomial model where the orders can be chosen manually&lt;br /&gt;
* Countless cleanups, minor bugfixes and feature enhancements&lt;br /&gt;
&lt;br /&gt;
== 5.0 - Released 8 April 2008 ==&lt;br /&gt;
&lt;br /&gt;
* In April 2008, the first public release of the &#039;&#039;&#039;Surrogate Modeling (SUMO) Toolbox&#039;&#039;&#039; (v5.0) occurred. &lt;br /&gt;
* A major new release with countless fixes, improvements, new sampling and modeling algorithms, and much more.&lt;br /&gt;
&lt;br /&gt;
List of changes:&lt;br /&gt;
&lt;br /&gt;
* Fixed the &#039;Known bugs&#039; for v4.2 (see Wiki)&lt;br /&gt;
* data points now have priorities (assigned by the sample selectors)&lt;br /&gt;
* Vastly reworked and improved the sample evaluator framework&lt;br /&gt;
** robust handling of failed or &#039;lost&#039; data points&lt;br /&gt;
** pluggable input queue infrastructure to make advanced scheduling policies possible&lt;br /&gt;
* The number of samples to select each iteration is now selected dynamically, based on the time needed for modeling, the length of one simulation, the number of compute nodes available, ... A user specified upper bound can till be specified of course.&lt;br /&gt;
* Model plots are now in the original space instead of the normalized ([-1 1]) space&lt;br /&gt;
* The default error function is now the root relative square error (= a global relative error)&lt;br /&gt;
* Intelligent seeding of each new model parameter optimization iteration. This means the model parameter space is searched much more efficiently and completely&lt;br /&gt;
* Added a fast Neural Network Modeler based on FANN (http://fann.sf.net)&lt;br /&gt;
* Added a Neural Network Modeler based on NNSYSID (http://www.iau.dtu.dk/research/control/nnsysid.html)&lt;br /&gt;
* The LS-SVM model type has been merged with the SVM model type.  The SVM model now supports three backends: libSVM, SVMlight, and lssvm&lt;br /&gt;
* Added a SampleSelector using infill sampling criterions (ISC).&lt;br /&gt;
** The expected improvement from EGO/superEGO is provided among others. (only usable with Kriging and RBF)&lt;br /&gt;
* More robust handling of SSH sessions when running simulators on a remote cluster&lt;br /&gt;
* The TestSamples measure has been renamed to ValidationSet&lt;br /&gt;
* The Polynomial model type has been renamed to the more apt Rational model&lt;br /&gt;
* The grid and voronoi sample selectors have been renamed to Error and Density respectively&lt;br /&gt;
* Drastically reduced memory usage when performing many runs with multiple datasets (datasets are cached)&lt;br /&gt;
* Added utility functions for easily summarizing profiler data from a large number of runs&lt;br /&gt;
* Lots of speed improvements in the gradient sample selector&lt;br /&gt;
* The default settings have been harmonized and much improved&lt;br /&gt;
* The (LS)SVM parameter space is now searched in log10 instead of ln space&lt;br /&gt;
* Added a TestMinimum measure &lt;br /&gt;
** compares the minimum of the surrogate model against a predefined value (for instance a known minimum)&lt;br /&gt;
* Added a MinimumProfiler&lt;br /&gt;
** tracks the minimum of the surrogate model versus the number of iterations&lt;br /&gt;
* Movie creation now works on all supported platforms&lt;br /&gt;
* Added an optimizer class hierarchy for solving subproblems transparantly&lt;br /&gt;
* Cleaned up the structure of all the model classes so they no longer contain an interface object.  This was confusing and led to error prone code.  Virtually all subsref and subassgn implementations have also been removed.&lt;br /&gt;
* The MinMax measure is now enabled by default&lt;br /&gt;
* The Optimization framework was removed (and replaced) for various reasons, see: http://sumowiki.intec.ugent.be/index.php/FAQ#What_about_surrogate_driven_optimization.3F&lt;br /&gt;
* Fixed the file output of the profiler, formatting is correct now&lt;br /&gt;
* New implementation of a maximin latin hypercube design&lt;br /&gt;
** Minimizes pairwise correlation&lt;br /&gt;
** Minimizes intersite distance&lt;br /&gt;
* Removed dependency of factorial design on the statistics toolbox&lt;br /&gt;
* Added a plotOptions tag, this allows for more customisability of model plots (grey scale, light effects, ...)&lt;br /&gt;
* Profiler plots can now also be saved as JPG, PNG, EPS, PDF, PS and SVG&lt;br /&gt;
* Countless cleanups, minor bugfixes and feature enhancements&lt;br /&gt;
&lt;br /&gt;
== 4.2 - Released 18 October 2007 ==&lt;br /&gt;
&lt;br /&gt;
* Fixed the &#039;Known bugs&#039; for v4.1 (see Wiki)&lt;br /&gt;
* Simulators can be passed options through an &amp;lt;Options&amp;gt; tag&lt;br /&gt;
* Added a fixed model builder so you can manually force which model parameters to use&lt;br /&gt;
* Removed ProActive dependency for the SGE distributed backend&lt;br /&gt;
* Improved Makefile under unix/linux&lt;br /&gt;
* Data produced by simulators no longer needs to be pre-scaled to [-1 1], this can be done automatically from the simulator configuration file&lt;br /&gt;
* Deprecated the optimization framework. It is currently under re-design and a better, more integrated version, will be released with the next toolbox version.&lt;br /&gt;
* Lots of cleanups, minor bugfixes and small feature enhancements&lt;br /&gt;
* In October 2007, the development of the M3-Toolbox was discontinued.&lt;br /&gt;
&lt;br /&gt;
== 4.1 - Released 27 July 2007 ==&lt;br /&gt;
&lt;br /&gt;
* Fixed the &#039;Known bugs&#039; for v4.0 (see Wiki)&lt;br /&gt;
* Vastly improved test sample distribution if a test set is created on the fly&lt;br /&gt;
* Gradient sample selector now works with complex outputs and has improved neighbourhood selection&lt;br /&gt;
* Speed and usability improvements in the profiler framework&lt;br /&gt;
* Improvements in the profiler DockedView widget (added a right click context menu)&lt;br /&gt;
* Addition of some new examples&lt;br /&gt;
* Added an option (on by default) that selects a certain percentage of the grid sample selector&#039;s points randomly, making the algorithm more robust&lt;br /&gt;
* Some cleanups, minor bugfixes and feature enhancements&lt;br /&gt;
&lt;br /&gt;
== 4.0 - Released 22 June 2007 ==&lt;br /&gt;
&lt;br /&gt;
* IMPORTANT: the best model score is now 0 instead of 1, this is more intuitive&lt;br /&gt;
* Reworked and improved the model scoring mechanism, now based on a pareto analysis.  This makes it possible to combine multpile measures in a sensible way.&lt;br /&gt;
* Added a proof of concept surrogate driven optimization framework.  Note this is an initial implementation which works, but don&#039;t expect state of the art results.&lt;br /&gt;
* Cleanup and refactoring of the profiler framework&lt;br /&gt;
* The profiling of model parameters has been totally reworked and this can now easily be tracked in a nice GUI widget&lt;br /&gt;
* Cleanup of error function logic so you can now easily use different error functions (relative, RMS, ...) in the measures&lt;br /&gt;
* Improved model plotting&lt;br /&gt;
* Support for the SVMlight library (you must download it yourself in order to use it)&lt;br /&gt;
* Added a MinMax measure which can be used to suppress spikes in rational models&lt;br /&gt;
* Support for extinction prevention in the heterogenetic modeler&lt;br /&gt;
* Fixed warnings (and in some cases errors) when loading models from disk&lt;br /&gt;
* Respect the maximum running time more accurately&lt;br /&gt;
* Many cleanups, minor bugfixes and feature enhancements&lt;br /&gt;
&lt;br /&gt;
== 3.3 - Released 2 May 2007 ==&lt;br /&gt;
&lt;br /&gt;
* Fixed incorrect summary at the end of a run&lt;br /&gt;
* Fixed bug due to duplicate sample points&lt;br /&gt;
* Ability to evaluate multiple samples in parallel locally (support for dual/multi-core machines)&lt;br /&gt;
* Speedups when reading in datasets&lt;br /&gt;
* Added 2 new modelbuilders that optimize the parameters using;&lt;br /&gt;
** Pattern Search (requires the Matlab direct search toolbox)&lt;br /&gt;
** Simulated Annealing (requires Matlab v7.4 and the direct search toolbox)&lt;br /&gt;
** The Matlab Optimization Toolbox (includes different gradient based methods like BGFS)&lt;br /&gt;
* A new density based sample selction algorithm (VoronoiSampleSelector)&lt;br /&gt;
* New simulator examples to test with&lt;br /&gt;
* Addition of a profiler to generate levelplots&lt;br /&gt;
* Ability to generate Matlab API documentation using m2html&lt;br /&gt;
* New neural network training algorithms based on Differential Evolution and Particle Swarm Optimization&lt;br /&gt;
* It is now possible to call the toolbox with specific samples/values directly, e.g., go(&#039;myConfigFile.xml&#039;,xValues,yValues);&lt;br /&gt;
* Many minor bugfixes and feature enhancements&lt;br /&gt;
&lt;br /&gt;
== 3.2 - Released 9 Mar 2007 ==&lt;br /&gt;
&lt;br /&gt;
* Many important bugfixes&lt;br /&gt;
* Documentation improvements&lt;br /&gt;
* Fully working support for RBF models&lt;br /&gt;
* New measure profilers that track the errors on measures&lt;br /&gt;
* Many new predefined functions and datasets to test with.  We now have over 50 examples!&lt;br /&gt;
&lt;br /&gt;
==  3.1 - Released 28 Feb 2007 ==&lt;br /&gt;
&lt;br /&gt;
* Small bugfixes and usability improvements&lt;br /&gt;
* Improved documentation&lt;br /&gt;
* Working implementation of a heterogenous evolutionary modelbuilder&lt;br /&gt;
* More examples&lt;br /&gt;
&lt;br /&gt;
== 3.0 - Released 14 Feb 2007 ==&lt;br /&gt;
&lt;br /&gt;
* Availability of pre-built binaries&lt;br /&gt;
* Extensive refactoring and code cleanups&lt;br /&gt;
* Many bugfixes and usability improvements&lt;br /&gt;
* Resilience against simulator crashes&lt;br /&gt;
* Ability to set the maximum running time for one sample evaluation&lt;br /&gt;
* Vastly improved Genetic model builder + a neural network implementation&lt;br /&gt;
* Addition of a RandomModelBuilder to use as a baseline benchmark&lt;br /&gt;
* Possible to add dummy input variables or to model only a subset of the available inputs while clamping others&lt;br /&gt;
* Improved multiple output support&lt;br /&gt;
** outputs can be modeled in parallel&lt;br /&gt;
** each output can be configured separately (eg. per output: model type, accuracy requirements (measure), sample selection algorithm, complex handling flag, etc) &lt;br /&gt;
** mutliple outputs can be combined into one model if the model type supports this&lt;br /&gt;
* Noisy (gaussian, outliers, ...) versions of a given output can be automatically added &lt;br /&gt;
* New and improved directory structure for output data&lt;br /&gt;
* New model types:&lt;br /&gt;
** Kriging (based on the DACE MATLAB Kriging Toolbox by Lophaven, Nielsen and Sondergaard)&lt;br /&gt;
** Splines (based on the MATLAB Splines Toolbox, only for 1D and 2D)&lt;br /&gt;
* Now matlab scripts can be used as datasources (simulators) as well&lt;br /&gt;
* New initial experimental design&lt;br /&gt;
** Based on a dataset&lt;br /&gt;
** Combination of existing designs&lt;br /&gt;
** Based on the complexity of different 1D fits&lt;br /&gt;
* Addition of new datasets and predefined functions as modeling examples&lt;br /&gt;
&lt;br /&gt;
== 2.0 - Released 15 Nov 2006 ==&lt;br /&gt;
&lt;br /&gt;
* Initial release of the M3-Toolbox - open source&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>