feat(eo): wrap ops on float vecs into ops on int vecs

Adds wrapper classes to make any MonOp or QuadOp that operates on eoReal embbedable in any operator needing an eoInt.
This commit is contained in:
Johann Dreo 2024-09-26 13:24:10 +02:00
commit 19ec4c4ff7
8 changed files with 241 additions and 1 deletions

View file

@ -0,0 +1,35 @@
#include <iostream>
#include <eo>
#include <es.h>
using namespace std;
int main(int, char**)
{
eoIntInterval intbounds(1,5);
eoRealInterval rb(1,5);
eoRealVectorBounds realbounds(5, rb);
using Chrom = eoInt<double>;
using CrossWrapper = eoRealToIntQuadOp<Chrom>;
eoSegmentCrossover< typename CrossWrapper::EOTreal > crossreal(realbounds, /*alpha*/0);
CrossWrapper crossint(crossreal, intbounds);
Chrom sol1({1,2,3,4,5});
Chrom sol2({1,2,3,4,5});
bool changed = crossint(sol1, sol2);
assert(changed);
for(auto& x : sol1) {
assert(intbounds.isInBounds(x));
}
for(auto& x : sol2) {
assert(intbounds.isInBounds(x));
}
}