Index: branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Algorithms.DataAnalysis.Symbolic/3.3/SymbolicDataAnalysisIslandGeneticAlgorithm.cs
===================================================================
--- branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Algorithms.DataAnalysis.Symbolic/3.3/SymbolicDataAnalysisIslandGeneticAlgorithm.cs	(revision 10356)
+++ branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Algorithms.DataAnalysis.Symbolic/3.3/SymbolicDataAnalysisIslandGeneticAlgorithm.cs	(revision 10357)
@@ -79,4 +79,6 @@
       set { FixedSamplesPartitionsParameter.Value = value; }
     }
+
+    private readonly ScopeTreeAssigner<IntValue> islandIndexAssigner;
     #endregion
 
@@ -102,5 +104,5 @@
       Parameters.Add(new LookupParameter<ISingleObjectiveEvaluator>(ProblemEvaluatorParameterName, "Internal parameter for name translation", "Evaluator"));
 
-      ScopeTreeAssigner<IntValue> islandIndexAssigner = new ScopeTreeAssigner<IntValue>();
+      islandIndexAssigner = new ScopeTreeAssigner<IntValue>();
       islandIndexAssigner.Name = "Insert island index";
       islandIndexAssigner.LeftSideParameter.ActualName = IslandIndexParameterName;
@@ -129,5 +131,5 @@
       if (Problem != null) Problem.FitnessCalculationPartition.ValueChanged += Problem_Reset;
       NumberOfIslandsParameter.ValueChanged += NumberOfIslandsParameter_ValueChanged;
-      NumberOfIslandsParameter.Value.ValueChanged += (o, ev) => RecalculateFixedSamplesPartitions();
+      NumberOfIslandsParameter.Value.ValueChanged += (o, ev) => NumberOfIslandsParameterValue_Changed();
       FixedSamplesParameter.Value.ValueChanged += (o, e) => {
         RecalculateFixedSamplesPartitions();
@@ -170,5 +172,10 @@
 
     private void NumberOfIslandsParameter_ValueChanged(object sender, EventArgs e) {
-      NumberOfIslands.ValueChanged += (o, ev) => RecalculateFixedSamplesPartitions();
+      NumberOfIslands.ValueChanged += (o, ev) => NumberOfIslandsParameterValue_Changed();
+      NumberOfIslandsParameterValue_Changed();
+    }
+    private void NumberOfIslandsParameterValue_Changed() {
+      var readonlyIslandIndexes = Enumerable.Range(0, NumberOfIslands.Value).Select(x => (IntValue)new IntValue(x).AsReadOnly());
+      islandIndexAssigner.RightSideParameter.Value = new ItemArray<IntValue>(readonlyIslandIndexes);
       RecalculateFixedSamplesPartitions();
     }
Index: branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Algorithms.DataAnalysis.Symbolic/3.3/SymbolicDataAnalysisIslandOffspringSelectionGeneticAlgorithm.cs
===================================================================
--- branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Algorithms.DataAnalysis.Symbolic/3.3/SymbolicDataAnalysisIslandOffspringSelectionGeneticAlgorithm.cs	(revision 10356)
+++ branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Algorithms.DataAnalysis.Symbolic/3.3/SymbolicDataAnalysisIslandOffspringSelectionGeneticAlgorithm.cs	(revision 10357)
@@ -79,4 +79,6 @@
       set { FixedSamplesPartitionsParameter.Value = value; }
     }
+
+    private readonly ScopeTreeAssigner<IntValue> islandIndexAssigner;
     #endregion
 
@@ -102,5 +104,5 @@
       Parameters.Add(new LookupParameter<ISingleObjectiveEvaluator>(ProblemEvaluatorParameterName, "Internal parameter for name translation", "Evaluator"));
 
-      ScopeTreeAssigner<IntValue> islandIndexAssigner = new ScopeTreeAssigner<IntValue>();
+      islandIndexAssigner = new ScopeTreeAssigner<IntValue>();
       islandIndexAssigner.Name = "Insert island index";
       islandIndexAssigner.LeftSideParameter.ActualName = IslandIndexParameterName;
@@ -125,5 +127,5 @@
       if (Problem != null) Problem.FitnessCalculationPartition.ValueChanged += Problem_Reset;
       NumberOfIslandsParameter.ValueChanged += NumberOfIslandsParameter_ValueChanged;
-      NumberOfIslandsParameter.Value.ValueChanged += (o, ev) => RecalculateFixedSamplesPartitions();
+      NumberOfIslandsParameter.Value.ValueChanged += (o, ev) => NumberOfIslandsParameterValue_Changed();
       FixedSamplesParameter.Value.ValueChanged += (o, e) => {
         RecalculateFixedSamplesPartitions();
@@ -166,5 +168,10 @@
 
     private void NumberOfIslandsParameter_ValueChanged(object sender, EventArgs e) {
-      NumberOfIslands.ValueChanged += (o, ev) => RecalculateFixedSamplesPartitions();
+      NumberOfIslands.ValueChanged += (o, ev) => NumberOfIslandsParameterValue_Changed();
+      NumberOfIslandsParameterValue_Changed();
+    }
+    private void NumberOfIslandsParameterValue_Changed() {
+      var readonlyIslandIndexes = Enumerable.Range(0, NumberOfIslands.Value).Select(x => (IntValue)new IntValue(x).AsReadOnly());
+      islandIndexAssigner.RightSideParameter.Value = new ItemArray<IntValue>(readonlyIslandIndexes);
       RecalculateFixedSamplesPartitions();
     }
