MIDACO Version 6.0 Release Notes
While Version 6.0 incorporates numerous internal restructurings and algorithmic extensions to further improve its overall performance, the number of changes on the user interface level was kept to a minimum to allow an easy transition. Below is a list of notable changes together with their explanation. An updated and fully detailed user manual will be available within the next weeks.
BALANCE parameter
MIDACO version 6.0 offers a new parameter (called BALANCE) for multiobjective problems. The BALANCE parameter defines the priority (or importance) given to each individual objective function. By default (BALANCE=0.00) each objective will be given the same priority and therefore MIDACO will return the best equally balanced solution among the pareto front as solution (see below Figure 1).
In case the entire importance should be given to a specific individual objective function, this can be achieved by setting the BALANCE parameter value equal to the number of the individual objective function. For example, below Figure 2 uses a BALANCE = 1.00 and therefore puts the entire importance on the first objective function. Figure 3 uses a BALANCE = 2.00 and therefore puts the entire importance on the second objective function. Consequently, the MIDACO solution is positioned at the very left side in Figure 2, while it is positioned at the very right side of the pareto front in Figure 3.
Figure 1 
Figure 2 
Figure 3 
BALANCE = 0.00 (default)  BALANCE = 1.00  BALANCE = 2.00 
Figure 4 
Figure 5 
Figure 6 
BALANCE = 0.36  BALANCE = 0.82  BALANCE = 0.19 
Python source code to reproduce above figures: example.py.txt

Fine tuning of the BALANCE parameter is possible by exploiting the decimal digits of parameter value as numerical indicator for individual objective functions. In such approach, each individual objective can be given a priority value between 0 and 9. For example: If the first objective should be given a priority of 3 and the second objective should be given a priority of 6, then the BALANCE parameter value would be set to BALANCE = 0.36. Above Figure 4 displays the result for such a setting. Note that in contrast to Figure 1 (equally balanced solution), the MIDACO solution in Figure 4 is positioned lower on the front, giving the second objective a value about twice as good as the first objective (namely F1≈0.66 and F2≈0.33).
As another example, consider that the first objective should be given a priority of 8 while the second objective should be given a priority of only 2.Then the BALANCE parameter is set to 0.82. Figure 5 displays the resulting MIDACO solution for such setting. Note that the MIDACO solution in Figure 5 is positioned much more in favor of the first objective, than the second objective.
As last example, consider that the first objective should be given a low importance of 1, while the second objective should be given a high importance of 9. Then the BALANCE parameter is set to 0.19 and Figure 6 displays the resulting MIDACO solution position. Note that in Figure 6 the MIDACO position is located close to the right side of the pareto front, reflecting the desire to significantly favor the second objective over the first objective.
PARETOMAX parameter
The new default value in version 6.0 for PARETOMAX equals 1000, instead of 100 in version 5.0. This means that MIDACO will save up to 1000 nondominated solutions in the MIDACO_PARETOFRONT file. Like in version 5.0, the user can optionally choose any value for PARETOMAX.
HISTORY file
The handling of the MIDACO_HISTORY.TXT file via the save2file parameter has slightly changed. Like in the 5.0 version, If a value lower or equal to one is assigned to save2file no history file is generated. If a value greater or equal to two is assigned to save2file a history file is generated and it will collect as many solution as given by the numerical value of save2file. If the the number of solutions exceeds those numerical value given by save2file, the history will be deleted and reopenend. This automatic deletion and reopening is done to avoid an exploding file size of the history file.
For example: If save2file = 10000, then a history file will be generated that contains up to 10,000 of the latest solutions. In case all solutions should be saved in the history file, this can easily be achieved by setting a sufficient high value (e.g. 10000000) to the save2file parameter; but be aware that the file size of such history can become very large.
Note that the MIDACO history file option is available only for following programming languages:
Matlab, Octave, Python, Java, C/C++, Fortran and R (on Mac/Linux if nonnative dll printing is enabled)
Workspace requirement
This change is only relevant for Fortran and C/C++ user, who use static allocation of of the real (RW) and integer (IW) workspace arrays. The real and integer workspace requirements of version 6.0 has increased due to internal algorithmic extensions. The new minimal length (LRW) for the real workspace is given by:
LRW = 120*N+20*M+20*O+20*P+P*(M+2*O)+O*O+5000
The new minimal length (LIW) for the integer workspace is given by:
LIW = 3*N+P+1000
As an example, consider an unconstrained, singleobjective problem with 1000 variables that is solved without parallelization. Therefore the the minimal real workspace (RW) length is calculated as:
LRW = 120*1000+20*0+20*1+20*1+1*(0+2*1)+1*1+5000 = 125043
Assuming that one real (doubleprecision) variable requires 8 bytes, the above minimal workspace requirement equals 125043 * 8 bytes which is (only) about 1 MB. The integer minimal integer workspace LIW is calculated by LIW = 3*1000+1+1000 = 4001 and therefore neglectable as some 4 KB.
Note that MIDACO user in Fortran and C/C++ user do not need to be concerned with the above exact workspace calculation. Simply allocate the RW and IW arrays large enough (e.g. RW[1000000]) will suffice.