8 | | === 1.2 HeuristicLab Software Architecture === |
9 | | |
10 | | The core of HeuristicLab is its algorithm model. It is not necessary to understand more than an abstract level of the core language as an end user. We provide a short summary of the most important components here: |
11 | | |
12 | | [[Image(wiki:Architecture:core_architecture.jpg, width=350, margin-bottom=10)]] |
13 | | |
14 | | Core concepts: |
15 | | * '''Data:''' All HeuristicLab 3.3 data objects can be saved, restored and viewed. Standard data types such as integers, doubles, strings, or arrays that do not offer these properties are wrapped in HeuristicLab 3.3 objects. |
16 | | * '''Variables:''' Data objects are linked to a name by storing them in a variable. |
17 | | * '''Scopes:''' Scopes are containers for variables. To access a variable in a scope, the variable name is used as an identifer (has to be unique per scope). Scopes can be hierarchically organized as trees (subscope hierarchy). |
18 | | * '''Operators:''' Each algorithm is a sequence of instructions, which are called operators in HeuristicLab 3.3. Operators are applied on scopes to access/manipulate variables and subscopes. |
19 | | * '''Parameters:''' Each operator defines parameters for each variable it expects and (possibly) manipulates. |
20 | | * '''Engines:''' Algorithms are represented as operator graphs and executed step-by-step on virtual machines called engines. |
21 | | |
22 | | We recommend having a look at the [[Architecture]] wiki page to get a more detailed description of the algorithm model. You can also revisit this page later on, as it is not really required for the introduction section. |
23 | | |
24 | | == 2. Supported Algorithms and Problems == |
25 | | A detailed list of available algorithms and problems in HeuristicLab can be found on the [wiki:UsersFeatures Features] page. |
26 | | |
27 | | == 3. Getting Started == |
| 6 | == 2. Getting Started == |
57 | | [=#Tutorials] |
58 | | == 5. Tutorials == |
59 | | Are you looking for predefined algorithms which can be executed immediately or an easy step-by-step guide to the parameterization of a particular algorithm? In this section we will provide tutorials on different aspects of HeuristicLab. Most of them are not yet written, but we strive to catch up with the documentation. Contributions are always welcome! [[BR]] |
60 | | You can also have a look at [wiki:UsersTutorials this page] for slides of tutorials that we held at conferences as well as video tutorials covering various aspects of HeuristicLab. |
| 36 | == 5. Testing and Analysis == |
| 37 | HeuristicLab supports two basic optimizers that help you in testing algorithms: |
| 38 | * [[Batch Run]]: A run in which an algorithm is executed a given number of times (repetitions). |
| 39 | * [[Experiment]]: An experiment which contains multiple optimizers (can be organized hierarchically) |
62 | | === 5.1 Optimizing External Applications === |
63 | | The [http://cig.dei.polimi.it/?page_id=103 Race Car Setup Optimization Competition] was organized for the [http://dces.essex.ac.uk/research/evostar/ EvoStar 2010] conference. The problem is a classic "simulation-based optimization problem" with a simulator, a simulation model, and several configuration parameters that have to be optimized. The following [[UsersHowtosOptimizingExternalApplications#Tutorial| Tutorial]] will show you how to configure an external evaluation problem for that particular problem. |
| 41 | The //Create Experiment// dialog in the Edit menu is a great and simple way to perform parameter grid tests. If an algorithm window is highlighted, this menu option becomes available. In the dialog you will be able to define parameter settings for each of the algorithm's parameters as well as the problem instances that these should be applied to. Keep an eye on the number of variations as this can lead to huge experiments that potentially become too big for your computer's memory. |
| 42 | |
| 43 | [[Image(create_experiment_parameter.png, align=left)]] |
| 44 | [[Image(create_experiment_problem.png, align=right)]] |
66 | | == 6. Plugin Infrastructure == |
67 | | The [[PluginManagerConsole| Plugin Manager Console]] allows you to install/remove plugins and upgrade your plugins when new versions become available. |
68 | | |
69 | | == 7. Operators == |
70 | | Each algorithm consists of a sequence of clearly defined, unambiguous and executable instructions. We call these atomic building blocks '''operators'''. A [[Operators| list]] of the most important operators is available in the wiki and we try to update it frequently. If the operator you are looking for is not documented there we recommend having a look at the description of the operator in the Optimizer. The description is usually sufficient to apply the operator successfully. |
71 | | |
72 | | == 8. Testing and Analysis == |
73 | | * [[Batch Run]]: A run in which an algorithm is executed a given number of times (repetitions). |
74 | | * [[Experiment]]: An experiment which contains multiple batch runs of algorithms. |
75 | | |
76 | | == 9. Feedback == |
77 | | Any feedback, questions, problems or requests for new features? Please have a look at our [wiki:UsersSupport support & feedback] wiki page to see how to contact the HeuristicLab development team. |
| 47 | == 5. Plugin Infrastructure == |
| 48 | The plugin manager console allows you to view all loaded plugins and also identify problems when plugins cannot be loaded, for instance because of a dependency problem or missing files. |