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)); +// } }