Changeset 1030


Ignore:
Timestamp:
03/22/2011 04:27:20 PM (9 years ago)
Author:
muk7
Message:

added minimum time interval

File:
1 edited

Legend:

Unmodified
Added
Removed
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/episodicMemory/RetrievalQueue.java

    r1028 r1030  
    2525 * History:  
    2626 * Matthias Keysermann: 08/03/2011 - File created 
     27 * Matthias Keysermann: 22/03/2011 - added minimum time interval 
    2728 */ 
    2829 
     
    3637        private static final long serialVersionUID = 1; 
    3738 
     39        // size of FIFO queue (number of retrieval times) 
     40        // a negative number means no limit 
    3841        private final static int MAX_RETRIEVAL_TIMES_DEFAULT = 10; 
     42 
     43        // minimum time interval between retrievals (in ms) 
     44        private final static long MIN_TIME_INTERVAL_DEFAULT = 1000; 
    3945 
    4046        private long detailID; 
    4147        private int maxRetrievalTimes; 
    4248        private LinkedList<Time> retrievalTimes; 
     49        private long minTimeInterval; 
    4350 
    4451        public RetrievalQueue(long detailID) { 
    45                 this(detailID, MAX_RETRIEVAL_TIMES_DEFAULT); 
     52                this(detailID, MAX_RETRIEVAL_TIMES_DEFAULT, MIN_TIME_INTERVAL_DEFAULT); 
    4653        } 
    4754 
    48         public RetrievalQueue(long detailID, int maxRetrievalTimes) { 
     55        public RetrievalQueue(long detailID, int maxRetrievalTimes, 
     56                        long minTimeInterval) { 
    4957                this.detailID = detailID; 
    5058                // maxRetrievalTimes is the queue size 
     
    5260                this.maxRetrievalTimes = maxRetrievalTimes; 
    5361                this.retrievalTimes = new LinkedList<Time>(); 
     62                this.minTimeInterval = minTimeInterval; 
    5463        } 
    5564 
     
    5968 
    6069        public void addRetrievalTime(Time time) { 
     70 
     71                // check for minimum time interval 
     72                if (retrievalTimes.size() > 0) { 
     73                        long difference = time.getNarrativeTime() 
     74                                        - retrievalTimes.getLast().getNarrativeTime(); 
     75                        if (difference < minTimeInterval) { 
     76                                // DEBUG 
     77                                // System.out 
     78                                // .println("RetrievalQueue.java: Minimum time interval deceeded!"); 
     79                                return; 
     80                        } 
     81                } 
     82 
     83                // add retrieval time to end of queue 
    6184                retrievalTimes.add(time); 
     85                // DEBUG 
     86                // System.out.println("RetrievalQueue.java: added retrieval time for id " 
     87                // + this.getDetailID()); 
     88 
     89                // non-negative number means queue has a size limit 
    6290                if (maxRetrievalTimes >= 0) { 
    63                         // queue has a size limit 
     91                        // check for queue size limit 
    6492                        if (retrievalTimes.size() > maxRetrievalTimes) { 
    6593                                retrievalTimes.removeFirst(); 
    6694                        } 
    6795                } 
     96 
    6897        } 
    6998 
Note: See TracChangeset for help on using the changeset viewer.