private boolean iterate(long delta, LocalSearchObjective<TestChromosome> objective, TestChromosome test, NumericalPrimitiveStatement<T> p, int statement) { boolean improvement = false; T oldValue = p.getValue(); ExecutionResult oldResult = test.getLastExecutionResult(); p.increment(delta); logger.info("Trying increment " + delta + " of " + p.getCode()); while (objective.hasImproved(test)) { oldValue = p.getValue(); oldResult = test.getLastExecutionResult(); improvement = true; delta = 2 * delta; p.increment(delta); logger.info("Trying increment " + delta + " of " + p.getCode()); } logger.info("No improvement on " + p.getCode()); p.setValue(oldValue); test.setLastExecutionResult(oldResult); test.setChanged(false); logger.info("Final value of this iteration: " + p.getValue()); return improvement; }
double value = p.getValue().doubleValue(); if (Double.isInfinite(value) || Double.isNaN(value)) { return false; logger.info("Applying search to: " + p.getCode()); return improved; logger.info("Checking after the comma: " + p.getCode()); int maxPrecision = p.getValue().getClass().equals(Float.class) ? 7 : 15; for (int precision = 1; precision <= maxPrecision; precision++) { if(LocalSearchBudget.getInstance().isFinished()) logger.debug("Finished local search with result " + p.getCode()); if(improved) { NumericalPrimitiveStatement<T> ps = (NumericalPrimitiveStatement<T>) oldTest.getStatement(oldStatement); ps.setValue(p.getValue());
LocalSearchObjective<TestChromosome> objective, int precision, NumericalPrimitiveStatement<T> p) { double value = p.getValue().doubleValue(); if (Double.isInfinite(value) || Double.isNaN(value)) { return false; oldValue = p.getValue(); ExecutionResult oldResult = test.getLastExecutionResult(); if (p.getValue().getClass().equals(Float.class)) p.setValue((T) (new Float(newValue))); else p.setValue((T) (new Double(newValue))); } else { logger.info("Restoring old value: "+value); p.setValue(oldValue); test.setLastExecutionResult(oldResult); test.setChanged(false);
/** * Change value by delta * * @param delta a double. */ public void increment(double delta) { increment((long) delta); }
private boolean iterate(double delta, double factor, LocalSearchObjective<TestChromosome> objective, TestChromosome test, NumericalPrimitiveStatement<T> p, int statement) { boolean improvement = false; T oldValue = p.getValue(); ExecutionResult oldResult = test.getLastExecutionResult(); logger.info("Trying increment " + delta + " of " + p.getCode()); p.increment(delta); while (objective.hasImproved(test)) { oldValue = p.getValue(); oldResult = test.getLastExecutionResult(); test.setChanged(false); improvement = true; delta = factor * delta; //if (delta > 1) // return improvement; logger.info("Trying increment " + delta + " of " + p.getCode()); p.increment(delta); } p.setValue(oldValue); test.setLastExecutionResult(oldResult); test.setChanged(false); return improvement; } }
oldValue = p.getValue(); ExecutionResult oldResult = test.getLastExecutionResult(); p.increment(initialDelta); logger.info("Trying increment of " + p.getCode()); oldValue = p.getValue(); oldResult = test.getLastExecutionResult(); p.setValue(oldValue); test.setLastExecutionResult(oldResult); test.setChanged(false); p.increment(-initialDelta); logger.info("Trying decrement of " + p.getCode()); done = false; iterate(-factor * initialDelta, factor, objective, test, p, statement); oldValue = p.getValue(); oldResult = test.getLastExecutionResult(); p.setValue(oldValue); test.setLastExecutionResult(oldResult); test.setChanged(false); logger.debug("Finished local search with result " + p.getCode()); return changed;
oldValue = p.getValue(); logger.info("Applying search to: " + p.getCode()); p.increment(1); logger.info("Trying increment of " + p.getCode()); if (objective.hasImproved(test)) { done = false; oldValue = p.getValue(); oldResult = test.getLastExecutionResult(); p.setValue(oldValue); test.setLastExecutionResult(oldResult); test.setChanged(false); p.increment(-1); logger.info("Trying decrement of " + p.getCode()); if (objective.hasImproved(test)) { improved = true; done = false; iterate(-2, objective, test, p, statement); oldValue = p.getValue(); oldResult = test.getLastExecutionResult(); p.setValue(oldValue); test.setLastExecutionResult(oldResult); test.setChanged(false); ps.setValue(p.getValue());