diff --git a/README.md b/README.md
index c6d74fd..150538f 100644
--- a/README.md
+++ b/README.md
@@ -44,7 +44,7 @@ First, you need to add the following repository, which is a repository that can
```
Than you can add the dependency on our `aitoa-code` repository into your `dependencies` section.
-Here, `0.8.56` is the current version of `aitoa-code`.
+Here, `0.8.57` is the current version of `aitoa-code`.
Notice that you may have more dependencies in your `dependencies` section, say on `junit`, but here I just put the one for `aitoa-code` as example.
```xml
@@ -52,7 +52,7 @@ Notice that you may have more dependencies in your `dependencies` section, say o
com.github.thomasWeise
aitoa-code
- 0.8.56
+ 0.8.57
```
diff --git a/pom.xml b/pom.xml
index 2e4c414..bcb7912 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
aitoa
aitoa-code
- 0.8.56
+ 0.8.57
jar
aitoa-code
Example Source Codes from the Book "Introduction to Optimization Algorithms"
diff --git a/src/main/java/aitoa/examples/jssp/EJSSPExperimentStage.java b/src/main/java/aitoa/examples/jssp/EJSSPExperimentStage.java
index 9efd8cf..6d21631 100644
--- a/src/main/java/aitoa/examples/jssp/EJSSPExperimentStage.java
+++ b/src/main/java/aitoa/examples/jssp/EJSSPExperimentStage.java
@@ -518,7 +518,7 @@ public void configureBuilderForProblem(
IMetaheuristic>> list =
new ArrayList<>();
- for (final int mu : new int[] { 2, 3, 4, 10 }) {
+ for (final int mu : new int[] { 2, 3, 4, 10, 1000 }) {
list.add(() -> new EDA<>(mu, 32768, //
new JSSPUMDAModel(problem.instance)));
list.add(() -> new EDA<>(mu, 4096, //
@@ -534,6 +534,8 @@ public void configureBuilderForProblem(
if (mu < lambda) {
list.add(() -> new EDAWithClearing<>(mu, lambda, //
new JSSPUMDAModel(problem.instance)));
+ list.add(() -> new EDA<>(mu, lambda, //
+ new JSSPUMDAModel(problem.instance)));
}
}
}
diff --git a/src/main/java/aitoa/examples/jssp/JSSPUMDAModel.java b/src/main/java/aitoa/examples/jssp/JSSPUMDAModel.java
index 5b60eae..5e4b11c 100644
--- a/src/main/java/aitoa/examples/jssp/JSSPUMDAModel.java
+++ b/src/main/java/aitoa/examples/jssp/JSSPUMDAModel.java
@@ -235,11 +235,16 @@ public String toString() {
*/
static final int find(final long value, final long[] array,
final int length) {
- int i = Math.abs(//
+ final int i = Math.abs(//
Arrays.binarySearch(array, 0, length, value) + 1);
- while (array[i] == value) {
- ++i;
- }
+// The code below would be needed if there could be two elements
+// in array with the same value. This can only happen if one
+// index would have probability 0.
+// This is not possible in the current configuration, so it is
+// commented out.
+// while (array[i] == value) {
+// ++i;
+// }
return i;
}
}
diff --git a/src/test/java/aitoa/examples/jssp/TestJSSPUMDAModel.java b/src/test/java/aitoa/examples/jssp/TestJSSPUMDAModel.java
index 5aa3935..181e445 100644
--- a/src/test/java/aitoa/examples/jssp/TestJSSPUMDAModel.java
+++ b/src/test/java/aitoa/examples/jssp/TestJSSPUMDAModel.java
@@ -127,92 +127,95 @@ public final void testFind() {
Assert.assertEquals(3, JSSPUMDAModel.find(7, array, 4));
}
- /**
- * Test whether the internal find function works correct with
- * 0s
- */
- @SuppressWarnings("static-method")
- @Test(timeout = 3600000)
- public final void testFind2() {
- final long[] data = { 0, 0, 1, 2, 3 };
- final long[] array = new long[data.length];
-
- long sum = 0L;
- for (int i = 0; i < array.length; i++) {
- sum += data[i];
- array[i] = sum;
- }
- Assert.assertEquals(6, sum);
-
- Assert.assertEquals(2,
- JSSPUMDAModel.find(0, array, array.length));
- Assert.assertEquals(3,
- JSSPUMDAModel.find(1, array, array.length));
- Assert.assertEquals(3,
- JSSPUMDAModel.find(2, array, array.length));
- Assert.assertEquals(4,
- JSSPUMDAModel.find(3, array, array.length));
- Assert.assertEquals(4,
- JSSPUMDAModel.find(4, array, array.length));
- Assert.assertEquals(4,
- JSSPUMDAModel.find(5, array, array.length));
- }
-
- /**
- * Test whether the internal find function works correct with
- * 0s
- */
- @SuppressWarnings("static-method")
- @Test(timeout = 3600000)
- public final void testFind3() {
- final long[] data = { 0, 0, 1, 0, 1, 0, 1 };
- final long[] array = new long[data.length];
-
- long sum = 0L;
- for (int i = 0; i < array.length; i++) {
- sum += data[i];
- array[i] = sum;
- }
- Assert.assertEquals(3, sum);
-
- Assert.assertEquals(2,
- JSSPUMDAModel.find(0, array, array.length));
- Assert.assertEquals(4,
- JSSPUMDAModel.find(1, array, array.length));
- Assert.assertEquals(6,
- JSSPUMDAModel.find(2, array, array.length));
- }
-
- /**
- * Test whether the internal find function works correct with
- * 0s
- */
- @SuppressWarnings("static-method")
- @Test(timeout = 3600000)
- public final void testFind4() {
- final long[] data = { 0, 0, 1, 0, 0, 0, 3, 0, 1, 0, 2, 0 };
- final long[] array = new long[data.length];
-
- long sum = 0L;
- for (int i = 0; i < array.length; i++) {
- sum += data[i];
- array[i] = sum;
- }
- Assert.assertEquals(7, sum);
-
- Assert.assertEquals(2,
- JSSPUMDAModel.find(0, array, array.length));
- Assert.assertEquals(6,
- JSSPUMDAModel.find(1, array, array.length));
- Assert.assertEquals(6,
- JSSPUMDAModel.find(2, array, array.length));
- Assert.assertEquals(6,
- JSSPUMDAModel.find(3, array, array.length));
- Assert.assertEquals(8,
- JSSPUMDAModel.find(4, array, array.length));
- Assert.assertEquals(10,
- JSSPUMDAModel.find(5, array, array.length));
- Assert.assertEquals(10,
- JSSPUMDAModel.find(6, array, array.length));
- }
+// The tests below are only relevant in cases where an index
+// could have zero probability. This is not possible in the
+// current implementation.
+// /**
+// * Test whether the internal find function works correct with
+// * 0s
+// */
+// @SuppressWarnings("static-method")
+// @Test(timeout = 3600000)
+// public final void testFind2() {
+// final long[] data = { 0, 0, 1, 2, 3 };
+// final long[] array = new long[data.length];
+//
+// long sum = 0L;
+// for (int i = 0; i < array.length; i++) {
+// sum += data[i];
+// array[i] = sum;
+// }
+// Assert.assertEquals(6, sum);
+//
+// Assert.assertEquals(2,
+// JSSPUMDAModel.find(0, array, array.length));
+// Assert.assertEquals(3,
+// JSSPUMDAModel.find(1, array, array.length));
+// Assert.assertEquals(3,
+// JSSPUMDAModel.find(2, array, array.length));
+// Assert.assertEquals(4,
+// JSSPUMDAModel.find(3, array, array.length));
+// Assert.assertEquals(4,
+// JSSPUMDAModel.find(4, array, array.length));
+// Assert.assertEquals(4,
+// JSSPUMDAModel.find(5, array, array.length));
+// }
+//
+// /**
+// * Test whether the internal find function works correct with
+// * 0s
+// */
+// @SuppressWarnings("static-method")
+// @Test(timeout = 3600000)
+// public final void testFind3() {
+// final long[] data = { 0, 0, 1, 0, 1, 0, 1 };
+// final long[] array = new long[data.length];
+//
+// long sum = 0L;
+// for (int i = 0; i < array.length; i++) {
+// sum += data[i];
+// array[i] = sum;
+// }
+// Assert.assertEquals(3, sum);
+//
+// Assert.assertEquals(2,
+// JSSPUMDAModel.find(0, array, array.length));
+// Assert.assertEquals(4,
+// JSSPUMDAModel.find(1, array, array.length));
+// Assert.assertEquals(6,
+// JSSPUMDAModel.find(2, array, array.length));
+// }
+//
+// /**
+// * Test whether the internal find function works correct with
+// * 0s
+// */
+// @SuppressWarnings("static-method")
+// @Test(timeout = 3600000)
+// public final void testFind4() {
+// final long[] data = { 0, 0, 1, 0, 0, 0, 3, 0, 1, 0, 2, 0 };
+// final long[] array = new long[data.length];
+//
+// long sum = 0L;
+// for (int i = 0; i < array.length; i++) {
+// sum += data[i];
+// array[i] = sum;
+// }
+// Assert.assertEquals(7, sum);
+//
+// Assert.assertEquals(2,
+// JSSPUMDAModel.find(0, array, array.length));
+// Assert.assertEquals(6,
+// JSSPUMDAModel.find(1, array, array.length));
+// Assert.assertEquals(6,
+// JSSPUMDAModel.find(2, array, array.length));
+// Assert.assertEquals(6,
+// JSSPUMDAModel.find(3, array, array.length));
+// Assert.assertEquals(8,
+// JSSPUMDAModel.find(4, array, array.length));
+// Assert.assertEquals(10,
+// JSSPUMDAModel.find(5, array, array.length));
+// Assert.assertEquals(10,
+// JSSPUMDAModel.find(6, array, array.length));
+// }
}