Matlab interface now uses true binary data type for binary problems
This commit is contained in:
@@ -2,13 +2,24 @@ function [ z ] = convertUnsignedJE( int, x )
|
||||
%CONVERTUNSIGNEDJE Convert signed 32-bit integer to unsigned.
|
||||
% Detailed explanation goes here
|
||||
|
||||
z=zeros(size(x,1),size(x,2), 'uint32');
|
||||
for j=1 : size(x,1)
|
||||
for i=1 : size(x,2)
|
||||
if (x(j,i) < 0)
|
||||
z(j,i) = 1+bitxor(uint32(-x(j,i)), int.hexMask);
|
||||
if strcmp(class(x),'java.util.BitSet')
|
||||
z=num2str(10^(int.dim-1));
|
||||
for i=1:int.dim
|
||||
if (x.get(i-1)) % Java indices start at zero!
|
||||
z(i)='1';
|
||||
else
|
||||
z(j,i) = x(j,i);
|
||||
z(i)='0';
|
||||
end
|
||||
end
|
||||
else
|
||||
z=zeros(size(x,1),size(x,2), 'int32');
|
||||
for j=1 : size(x,1)
|
||||
for i=1 : size(x,2)
|
||||
if (x(j,i) < 0)
|
||||
z(j,i) = 1+bitxor(uint32(-x(j,i)), int.hexMask);
|
||||
else
|
||||
z(j,i) = x(j,i);
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@@ -78,7 +78,7 @@ try
|
||||
% disp(sprintf('running mediator id %d',cnt));
|
||||
int.mediator.run(cnt);
|
||||
% disp(sprintf('after running mediator id %d',cnt));
|
||||
cnt=cnt+1;
|
||||
cnt=cnt+1;
|
||||
if (~int.mediator.isFinished())
|
||||
% disp('getting question');
|
||||
x = int.mediator.getQuestion();
|
||||
|
@@ -6,11 +6,13 @@ if (isempty(int.range))
|
||||
% binary problem
|
||||
s=sprintf('Binary problem of bitwidth %d', int.dim);
|
||||
disp(s);
|
||||
numInts=ceil(int.dim/wordwidth);
|
||||
%numInts=ceil(int.dim/wordwidth);
|
||||
% generate trial vector
|
||||
x=ceil(rand(1,numInts).*(2^wordwidth));
|
||||
overheadBits=numInts*wordwidth-int.dim;
|
||||
x(numInts)=bitshift(x(numInts),-overheadBits); % shift right by overhead
|
||||
%x=ceil(rand(1,numInts).*(2^wordwidth));
|
||||
%overheadBits=numInts*wordwidth-int.dim;
|
||||
%x(numInts)=bitshift(x(numInts),-overheadBits); % shift right by overhead
|
||||
bs=eva2.tools.math.RNG.randomBitSet(0.5, int.dim);
|
||||
x=convertUnsignedJE(int, bs);
|
||||
else
|
||||
% double problem
|
||||
x=rand(1, int.dim);
|
||||
@@ -35,9 +37,10 @@ try
|
||||
res = feval(int.f, x, int.args);
|
||||
end
|
||||
catch ME
|
||||
disp('Function evaluation failed:');
|
||||
disp('JEInterface: Test function evaluation failed:');
|
||||
disp(ME.message);
|
||||
error(['Test failed! ' ME.message]);
|
||||
rethrow(ME);
|
||||
%error(['Test failed! ' ME.message]);
|
||||
end
|
||||
|
||||
disp('Function returned: ');
|
||||
|
Reference in New Issue
Block a user