diff --git a/resources/MatlabInterface/@JEInterface/JEInterface.m b/resources/MatlabInterface/@JEInterface/JEInterface.m index 2cb304f2..bbd1da31 100644 --- a/resources/MatlabInterface/@JEInterface/JEInterface.m +++ b/resources/MatlabInterface/@JEInterface/JEInterface.m @@ -12,9 +12,12 @@ function int = JEInterface(fhandle, datatype, range, varargin) % range: a 2 x dim array defining the solution subspace with lower and % upper bounds; or a scalar defining the bitwidth for binary % problems. -% defaultArgs: (optional) additional constant argument to the target +% initRange: in analogy to the range: a possibly different range for the +% initial solutions. It applies to double and int data types only. +% May be set equal to the range. +% defaultArgs: additional constant argument to the target % function, empty by default. -% options: (optional) options as name-value pairs defining optimization parameters, +% options: options as name-value pairs defining optimization parameters, % especially tolerance and maximum function calls. % Check makeOoptions for default settings. % diff --git a/resources/MatlabInterface/@JEInterface/testEvalFunc.m b/resources/MatlabInterface/@JEInterface/testEvalFunc.m index 8210c4a9..8b5b1b91 100644 --- a/resources/MatlabInterface/@JEInterface/testEvalFunc.m +++ b/resources/MatlabInterface/@JEInterface/testEvalFunc.m @@ -25,16 +25,17 @@ elseif strcmp(int.dataType,eva2.server.go.problems.MatlabProblemDataTypeEnum.typ % integer problem s=sprintf('Real valued problem in %d dimensions and range %s ', int.dim, mat2str(int.range)); disp(s); - size(int.range) + %size(int.range); %x=int.range(1,:)+ceil(rand(1,int.dim).*int.range(2,:)-int.range(1,:)); - x=(int.range(:,1)+ceil(rand(int.dim,1).*int.range(:,2)-int.range(:,1)))'; + x=(int.range(:,1)+floor(rand(int.dim,1).*(ones(size(int.range(:,2)))+int.range(:,2)-int.range(:,1))))'; else error('Invalid data type in testEvalFunc.m!'); end + if (isempty(int.range)) - msg=sprintf('\nTesting value: %d, bin.: %s', x, dec2bin(x, int.dim)); + msg=sprintf('\nTesting binary string %s', x); else - msg=sprintf('\nTesting value: %d', x); + msg=sprintf('\nTesting value: %s', num2str(x)); end disp(msg); diff --git a/src/eva2/server/go/problems/MatlabEvalMediator.java b/src/eva2/server/go/problems/MatlabEvalMediator.java index d0f7b031..3fdfa2d2 100644 --- a/src/eva2/server/go/problems/MatlabEvalMediator.java +++ b/src/eva2/server/go/problems/MatlabEvalMediator.java @@ -77,7 +77,9 @@ public class MatlabEvalMediator { // Integer.decode() // if (question == null) System.err.println("Error: requesting evaluation for null array!"); - } else System.err.println("Error, requesting evaluation for non array!"); + } else { // if its not an array, it must be a BitSet + if (!(x instanceof BitSet)) System.err.println("Error, requesting evaluation for invalid data type! " + question.getClass()); + } // logMPAndSysOut("Synch requesting A requestEval " + getState()); synchronized(requesting) { // logMPAndSysOut(" in synch requesting A requestEval " + getState()); diff --git a/src/eva2/server/go/problems/MatlabProblem.java b/src/eva2/server/go/problems/MatlabProblem.java index 5abec10b..921de2c9 100644 --- a/src/eva2/server/go/problems/MatlabProblem.java +++ b/src/eva2/server/go/problems/MatlabProblem.java @@ -209,7 +209,7 @@ public class MatlabProblem extends AbstractOptimizationProblem implements Interf } } else this.range=null; - if (initialRange!=null) { // these may be Matlab objects, so I do it by foot, just to be sure not to clone them within Matlab instead of here + if (initRange!=null) { // these may be Matlab objects, so I do it by foot, just to be sure not to clone them within Matlab instead of here this.initialRange = new double[initRange.length][initRange[0].length]; for (int i=0; i