/** De enige functie die een override behoeft is de fitnessfunctie */ @Override public double fitness(Specimen s) { int Er = s.getIncorrectSamples(); int Ne = s.getExamplesCount(); int Na = s.getAttributeCount(); int Net = s.getSampleCount(); int Nat = s.getSampleAttributeCount(); // Double-cast om integerdeling te voorkomen double c1 = (double) (Net + 1) / (2 * Net + Nat + 3); double c2 = c1; double c3 = (double) (Nat + 1) / (2 * Net + Nat + 3); return (c1 * (Net - Er) / Net + c2 * (Net - Ne) / (Net - 1) + c3 * (Nat - Na) / (Nat - 1)); }
@Override public void actor1(Specimen state) { state.arr = new float[10]; }
public void resolveNames(Long batchSize) { StopWatch watchForEntireRun = new StopWatch(); watchForEntireRun.start(); StopWatch watchForBatch = new StopWatch(); watchForBatch.start(); Long count = 0L; Index<Node> studyIndex = graphService.index().forNodes("studies"); IndexHits<Node> studies = studyIndex.query("title", "*"); for (Node studyNode : studies) { final Study study1 = new Study(studyNode); final Iterable<Relationship> specimens = study1.getSpecimens(); for (Relationship collected : specimens) { Specimen specimen = new Specimen(collected.getEndNode()); final Relationship classifiedAs = specimen .getUnderlyingNode() .getSingleRelationship(RelTypes.CLASSIFIED_AS, Direction.OUTGOING); if (classifiedAs == null) { final Relationship describedAs = specimen .getUnderlyingNode() .getSingleRelationship(RelTypes.ORIGINALLY_DESCRIBED_AS, Direction.OUTGOING); final TaxonNode describedAsTaxon = new TaxonNode(describedAs.getEndNode()); try { if (taxonFilter.shouldInclude(describedAsTaxon)) { TaxonNode resolvedTaxon = taxonIndex.getOrCreateTaxon(describedAsTaxon); if (resolvedTaxon != null) { specimen.classifyAs(resolvedTaxon); } } } catch (NodeFactoryException e) { LOG.warn( "failed to create taxon with name [" + describedAsTaxon.getName() + "] and id [" + describedAsTaxon.getExternalId() + "]", e); } finally { count++; if (count % batchSize == 0) { watchForBatch.stop(); final long duration = watchForBatch.getTime(); if (duration > 0) { LOG.info( "resolved batch of [" + batchSize + "] names in " + getProgressMsg(batchSize, duration)); } watchForBatch.reset(); watchForBatch.start(); } } } } } studies.close(); watchForEntireRun.stop(); LOG.info( "resolved [" + count + "] names in " + getProgressMsg(count, watchForEntireRun.getTime())); }