Package de.torstennahm.integrate.sparse.index

Examples of de.torstennahm.integrate.sparse.index.Index


      primaryCompleted = false;
    }
   
    IntegrationResult integrate() throws IntegrationFailedException {
      result = new SparseResult();
      Index zeroIndex = new FastIndex();
     
      Visualizers.submitToList(visualizers, new Integrand(evaluator));
      Visualizers.submitToList(visualizers, new StartIntegration());
     
      if (dimension == 0) {
        currentDimension = 1;
      } else {
        currentDimension = dimension;
      }
     
      if (! condition.stop(result)) {
        activateIndex(zeroIndex, Double.POSITIVE_INFINITY);
      }
     
      while (! condition.stop(result)) {
        Index index = hybridManager.nextIndex();
        if (index == null) {
          throw new IntegrationFailedException("Could not expand index set");
        }
        EvalData evalData = indexMap.get(index);
       
        evalData.completed = true;
       
        double estimate = index.equals(zeroIndex) ? Double.POSITIVE_INFINITY : Math.abs(evalData.contribution);
        boolean couldExpandFully = true;
        for (int i = 0; i < currentDimension; i++) {
          Index succIndex = index.add(i, 1);
          if (isValid(indexMap, succIndex)) {
            if (evaluator.canEvaluate(succIndex)) {
              activateIndex(succIndex, estimate);
            } else {
              couldExpandFully = false;
View Full Code Here


      return evalData != null && evalData.completed;
    }
   
    private boolean isValid(Map<Index, EvalData> indexMap, Index index) {
      for (IntEntry entry : index) {
        Index pred = index.add(entry.getNumber(), -1);
        if (! isCompleted(pred)) {
          return false;
        }
      }
     
View Full Code Here

    Map<Index, IndexData> indexMap = new HashMap<Index, IndexData>();
   
    Visualizers.submitToList(visualizers, new Integrand(evaluator));
    Visualizers.submitToList(visualizers, new StartIntegration());
   
    Index zeroIndex = new FastIndex();
   
    if (! condition.stop(result)) {
      IndexData indexData = evaluateIndex(zeroIndex, evaluator, result, visualizers);
      indexMap.put(zeroIndex, indexData);
      indexData.priority = 0.0;
      queue.add(indexData);
    }
   
    while (! condition.stop(result)) {
      if(queue.isEmpty()) {
        throw new IntegrationFailedException("Index queue is empty");
      }
     
      IndexData indexData = queue.poll();
      Index index = indexData.index;
     
      indexData.completed = true;
      Visualizers.submitToList(visualizers, new IndexStatus(index, "expanded"));
     
      boolean couldExpandFully = true;
      for (int i = 0; i < dimension; i++) {
        Index succIndex = index.add(i, 1);
        if (isValid(indexMap, succIndex)) {
          if (evaluator.canEvaluate(succIndex)) {
            IndexData succData = evaluateIndex(succIndex, evaluator, result, visualizers);
            indexMap.put(succIndex, succData);
            queue.add(succData);
View Full Code Here

    return -Math.max((1 - workWeight) * relResult, workWeight * relEvals);
  }
 
  private boolean isValid(Map<Index, IndexData> indexMap, Index index) {
    for (IntEntry entry : index) {
      Index pred = index.add(entry.getNumber(), -1);
      IndexData predData = indexMap.get(pred);
      if (predData == null || ! predData.completed) {
        return false;
      }
    }
View Full Code Here

    Visualizers.submitToList(visualizers, new StartIntegration());
   
    lastValue = Double.NaN;
    int lastLevel = 0;
    while (! condition.stop(result)) {
      Index index = indexGenerator.next();
     
      int level = index.sum();
      if (level > lastLevel) {
        result.errorEstimate = Math.abs(result.value - lastValue);
        lastValue = result.value;
        lastLevel = level;
      }
View Full Code Here

      Visualizers.submitToList(visualizers, new StartIntegration());
     
      activateIndex(zeroIndex);
     
      while (! condition.stop(result)) {
        Index index = hybridManager.nextIndex();
        if (index == null) {
          throw new IntegrationFailedException("Could not expand index set");
        }
       
        EstimateData indexData = indexMap.get(index);
       
        if (indexData.calls != 0) {
          indexData.contribution = evaluateIndex(index);
          indexData.completed = true;
         
          if (Math.abs(indexData.contribution) > indexData.estimate
          &&  Math.abs(indexData.contribution) > MathTN.FUDGE * Math.abs(result.value)) {
            higherThanEstimate++;
            higherContributions += Math.abs(indexData.contribution);
            Visualizers.submitToList(visualizers, new IndexStatus(index, ">estimate"));
          }
         
          estimator.log(result.calls, result.value);
          result.errorEstimate = estimator.getEstimate();
         
          for (int i = 0; i < dimension; i++) {
            Index succIndex = index.add(i, 1);
            if (isValid(succIndex)) {
              activateIndex(succIndex);
            }
          }
        } else {
View Full Code Here

      Visualizers.submitToList(visualizers, new IndexContributionEstimate(index, data.estimate));
    }
   
    private boolean isValid(Index index) {
      for (IntEntry entry : index) {
        Index pred = index.add(entry.getNumber(), -1);
        if (! isCompleted(pred)) {
          return false;
        }
      }
     
View Full Code Here

        double logSum = 0.0;
       
        int entries = 0;
        for (Iterator<IntEntry> iter = index.iterator(); iter.hasNext(); entries++) {
          IntEntry entry = iter.next();
          Index pred = index.add(entry.getNumber(), -1);
         
          EstimateData predData = indexMap.get(pred);
          logSum += Math.log(Math.abs(predData.contribution));
        }
       
        return Math.exp(logSum / entries);
      } else if (mode == MINIMUM) {
        double estimate = Double.POSITIVE_INFINITY;
       
        for (IntEntry entry : index) {
          Index pred = index.add(entry.getNumber(), -1);
          EstimateData predData = indexMap.get(pred);
          estimate = Math.min(Math.abs(predData.contribution), estimate);
        }
       
        return estimate;
      } else if (mode == MAXIMUM) {
        double estimate = 0.0;
       
        for (IntEntry entry : index) {
          Index pred = index.add(entry.getNumber(), -1);
          EstimateData predData = indexMap.get(pred);
          estimate = Math.max(Math.abs(predData.contribution), estimate);
        }
       
        return estimate;
View Full Code Here

TOP

Related Classes of de.torstennahm.integrate.sparse.index.Index

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.