Matlab interface bugfix
This commit is contained in:
parent
9dfcf4d71a
commit
d27b78092b
@ -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.
|
||||
%
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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());
|
||||
|
@ -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<this.initialRange.length; i++) {
|
||||
for (int j=0; j<this.initialRange[0].length; j++) this.initialRange[i][j]=initRange[i][j];
|
||||
@ -583,17 +583,22 @@ public class MatlabProblem extends AbstractOptimizationProblem implements Interf
|
||||
return initialRange;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getAdditionalDataHeader() {
|
||||
return ToolBox.appendArrays(super.getAdditionalDataHeader(), "matlabSol");
|
||||
}
|
||||
@Override
|
||||
public String[] getAdditionalDataInfo() {
|
||||
return ToolBox.appendArrays(super.getAdditionalDataInfo(), "Additional solution representation");
|
||||
}
|
||||
@Override
|
||||
public Object[] getAdditionalDataValue(PopulationInterface pop) {
|
||||
String addStr=((AbstractEAIndividual)pop.getBestIndividual()).getStringRepresentation();
|
||||
return ToolBox.appendArrays(super.getAdditionalDataValue(pop), addStr);
|
||||
public String getName() {
|
||||
return "MatlabProblem";
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public String[] getAdditionalDataHeader() {
|
||||
// return ToolBox.appendArrays(super.getAdditionalDataHeader(), "matlabSol");
|
||||
// }
|
||||
// @Override
|
||||
// public String[] getAdditionalDataInfo() {
|
||||
// return ToolBox.appendArrays(super.getAdditionalDataInfo(), "Additional solution representation");
|
||||
// }
|
||||
// @Override
|
||||
// public Object[] getAdditionalDataValue(PopulationInterface pop) {
|
||||
//// String addStr=((AbstractEAIndividual)pop.getBestIndividual()).getStringRepresentation();
|
||||
// String addStr=BeanInspector.toString(pop.getBestIndividual());
|
||||
// return ToolBox.appendArrays(super.getAdditionalDataValue(pop), addStr);
|
||||
// }
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user