Right before our annual HeuristicLab retreat (this time in Windischgarsten, Austria), we are proud to announce the release of HeuristicLab 3.3.13 "Windischgarsten" with the following new features:
- New Algorithms:
- Age-layered Population Structure (ALPS)
- Offspring Selection Evolution Strategy (OSES)
- New Problems:
- Multi-objective external evaluation problem
- Gentic programming for code generation (Robocode)
- Further genetic programming problems: Even Parity, Multiplexer, Koza-style symbolic regression
- Additional accuracy metrics for classification models (and comparison to baseline algorithms)
- Quantile Regression based on Gradient Boosted Trees
- Mathematica export for symbolic regression/classification solutions
- Improved complexity measures for multi-objective symbolic regression
- Improved persistence of data-analysis models (SVM, Gaussian Process, GBT, Random Forest)
- Hive Statistics: A new WebApp that shows information about running jobs and available resources in HeuristicLab Hive
Following our conference-oriented release schedule, we are happy to announce the release of HeuristicLab 3.3.12 "Madrid" from this year's Genetic and Evolutionary Computation Conference (GECCO).
HeuristicLab 3.3.12 "Madrid" contains the following new features:
- New problem: NK[P,Q] landscapes
- New problem: Orienteering
- New encoding: Linear linkage
- New data analysis algorithm: Gradient boosted trees
- New optimizer: TimeLimitRun limits algorithm execution by wall-clock time and can take snapshots at predefined points
- Integration of the Sim# simulation framework as external library (Sim# at GitHub)
- Hive status page is replaced by a modular WebApp
- Improved and searchable "New Item" dialogue
- C# code formatter for symbolic regression/classification
- The symbolic expression tree encoding can now be used with Programmable/Basic problems
- Kernel density estimation for the histogram control
As with every EuroCAST conference, the HeuristicLab development team is proud to announce the release of HeuristicLab 3.3.11 "Beach Bar".
Among others, HeuristicLab 3.3.11 "Beach Bar" contains the following new features:
- New algorithm: parameter-less population pyramid (P3). Thanks to Brian Goldman from the BEACON Center for the Study of Evolution in Action.
- New binary test problems:
- Deceptive trap problem
- Deceptive trap step problem
- HIFF problem
- New views for statistical testing and analysis of run collections
- New UI for C# scripts based on AvalonEdit
- New problem type: Programmable problem
- New APIs that make it easier to implement algorithms and problems
- Upgraded to .NET 4.5
For a full list of all changes in HeuristicLab 3.3.11 "Beach Bar" have a look at the ChangeLog.
Go to the Download page or click on the image below to get HeuristicLab 3.3.11 "Beach Bar" now!
After staying on the .NET 4 platform for 4 years we have decided to upgrade to .NET 4.5. At the moment this only affects the trunk version of HL, but in the future also the stable branch and the next release (3.3.11) will be built on .NET 4.5. The main reason for this decision is that we are going to use new features from .NET 4.5 (async/await and System.IO.Compression.ZipArchive).
For you as a user or developer this means the following:
- Running HeuristicLab now requires .NET 4.5
- Windows XP is not supported anymore because .NET 4.5 requires at least Windows Vista SP2 or Windows Server 2008 SP2/R2 SP1
- If you have written plugins for HeuristicLab or applications that use HL assemblies you have to update your projects to .NET 4.5
If you have any questions please feel free to ask!
With the GECCO conference just around the corner, it's time again for a new release! Therefore, the HeuristicLab development team is proud to announce the release of HeuristicLab 3.3.10 "Vancouver".
Among others, HeuristicLab 3.3.10 "Vancouver" contains the following new features:
- Scripting environment for rapid-prototyping (C# Script)
- New problems: External evaluation for Scilab and Matlab
- Grammatical Evolution
- Data Preprocessing
- Redesigned start page containing even more samples, including scripting samples
For a full list of all changes in HeuristicLab 3.3.10 "Vancouver" have a look at the ChangeLog.
Go to the Download page or click on the image below to get HeuristicLab 3.3.10 "Vancouver" now!
As you may have already noticed we have updated and redesigned our website. There is now a new and improved Documentation section that makes it easier to get to the information that you need. Besides that, we have updated the design of the site and there are also a lot of other improvements all over the place.
Additionally, we have changed the URL to our Subversion Repository. You can now find the source code at https://src.heuristiclab.com/svn/core/.
If you like the new site or have any feedback, please let us know!
The book chapter Architecture and Design of the HeuristicLab Optimization Environment is now available. As part of the series Advanced Methods and Applications in Computational Intelligence a whole chapter is dedicated to the architecture and design of HeuristicLab. It includes
- background and historical information
- a detailed description of the architecture and design of the software
- an overview of the object and view model
- an introduction to operators, parameters and the scope tree
- a section on algorithm and problem modeling including the following examples:
- Genetic Algorithm
- Simulated Annealing
- Quadratic Assignment Problem
- Simulation-Based Optimization
- Genetic Programming
HeuristicLab includes a distributed calculation infrastructure called HeuristicLab Hive. Hive follows the master-slave model where the master (server) manages the distribution of jobs to slaves which calculate them.
This is especially useful for large scale parameter tests where different algorithm configurations have to be run and analyzed.
In the last couple of month we have improved the performance of the Hive server as we have been getting to a point where the server was unable to service all requests at peak demand times. Here is an overview of the changes:
- The Hive service uses Linq-to-Sql to access the database. Some queries were written in a suboptimal way. These have been optimized to allow for faster queries.
- Lazy loading has been activated for binary data. This improves memory consumption of the server as binary data isn't loaded when querying e.g. tasks.
- Some Linq queries have been changed to compiled queries. Some queries have been rewritten in SQL (especially recursions which Linq-to-Sql does not support in an efficient way).
- Binary data is now stored using the Filestream property. This greatly reduces memory consumption of the SQL Server.
- Some other minor changes to reduce CPU load, e.g. minimized the amount of conversations between DTOs and DAOs, use byte instead of Binary, etc.
These changes greatly improve the performance of the service and reduce memory consumption as shown in the following chart:
The image shows web service operations that are used the most by the clients. The tests were done using 256 tasks with a size of 4 MB and a runtime of 2.5 minutes. 48 slaves were used with an heartbeat interval of 30 seconds. The displayed results are measured in seconds. This shows speed-ups up to a factor of 30 in some cases.
Another improvement is that the server now also offers a TCP endpoint besides the old WSHTTP endpoint. TCP is a lot faster (up to a factor 2, depending on the transfered data size) than web-services:
The chart compares WSHTTP with Text/MTOM encoding with TCP for different transfered chunk sizes, measured in seconds.
The HeuristicLab Hive Job Manager as well as the slaves can now use this endpoint if possible (e.g. no firewall restrictions) and only fall back to WSHTTP if TCP does not work.
The described changes in the Hive server speed up working with the Job Manager/Hive as well as preventing timeouts when transferring larger tasks as it was the case in the past. Additionally, the improvements also reduce hardware requirements for the server and improve scalability. We have used Hive in the past with around 350 cores calculating in parallel. This was the maximum that the server could process with our hardware configuration and this limit should now be much higher.
For more detailed information please have a look at ticket #2030 where development is tracked. The described improvements currently reside in the trunk and will be released with HeuristicLab 3.3.9.
Because of multiple user requests and our continuous quest to improve documentation we have sat together last week and recorded some video tutorials which cover various parts of HeuristicLab.
So far we have created 4 video tutorials:
How to Execute Algorithms in HeuristicLab
The video shows how you can parameterize and execute algorithms in HeuristicLab:
HeuristicLab Usability and Views
This video demonstrates the basic user interface concepts of HeuristicLab and how to effectively use them:
Experiment Design and Analysis in HeuristicLab
This video shows how to create experiments and batch-runs in HeuristicLab as well as how to analyze the generated results:
How to create Custom Algorithms in HeuristicLab
This video shows how algorithms in HeuristicLab can be adapted in the GUI by extending a Genetic Algorithm to incorporate a crossover probability:
Additionally we have also created a video which gives a quick overview of HeuristicLab's most important features:
You can watch the videos here or head over to our new HeuristicLab YouTube channel. Let us know what you think and don't forget to Like our videos!
Daniel Knittl-Frank is currently working on porting HeuristicLab to Linux/Mono and sent us screenshots of his progress which I wanted to share with you. Daniel has already got a modified version of HeuristicLab running on Ubuntu 11.10 with the git master of Mono. The last addition to his HL version is that charting now also works with Mono. So here is some eyecandy for the Linux users out there showing 3 views for analyzing runs:
Here is the bubble chart view on Linux:
The tabular view:
And the box-plot diagram:
Of course this is work in progress and hasn't yet landed in our subversion repository but will be integrated when we feel it is stable enough.
As mentioned in a previous Blog post there are some users who are experiencing problems with the user interface not resizing correctly. With HeuristicLab 3.3.6 there will be an option to switch to other document window styles where this problem doesn't occur. In 3.3.6 you will find an entry "View -> Change MainForm Type" in the menubar. This opens a dialog where you can choose between different MainForm types:
There are 3 types of MainForms which can be used. The Docking MainForm is the standard HeuristicLab user interface where documents are displayed as tab pages:
Additionally there is a Multiple and a Single Document option. The Multiple Document MainForm displays documents as windows within the HeuristicLab main window:
The Single Document MainForm creates for each document an own window which is also shown in the Windows taskbar:
The resizing issue doesn't occur with the Single and Multiple Document styles. This means you can use these different document window styles and don't have to switch to another language or DPI size (see UsersFAQ?).
On some machines it might happen that controls are not correctly resized and the HeuristicLab GUI looks like this:
This behavior results from a bug in the GUI frameworks (either Windows Forms or the Dock Panel Suite). There are two known causes for this problem. The first one is that the Windows text size is set to a value larger than 100%. To avoid this bug, the Windows text size in the Windows display settings has to be set to 100%. This can be done in the dialog shown below which can be opened from the Windows Control Panel (Control Panel -> Appearance and Personalization -> Display).
The other possible cause for this problem is the "Language for non-Unicode programs" setting of your Windows operating system. There are some languages which we know cause a resizing problem in HeuristicLab, e.g. Latvia. German or English on the other hand work fine. A possible workaround at the moment would be that you switch this setting to German or English. The downside of this is however that applications which don't support Unicode might not display text correctly anymore. The following screen shot shows how you can change the setting:
We are at the moment further investigating the problem and hope to come up with a fix for this bug soon.