mirror of
				https://github.com/RAIRLab/Spectra.git
				synced 2025-10-26 22:51:19 +00:00 
			
		
		
		
	Thoughts on new heuristic
This commit is contained in:
		
							parent
							
								
									135852b74b
								
							
						
					
					
						commit
						f6e1dc19eb
					
				
					 1 changed files with 66 additions and 0 deletions
				
			
		|  | @ -0,0 +1,66 @@ | |||
| package org.rairlab.planner.heuristics; | ||||
| 
 | ||||
| import org.rairlab.planner.State; | ||||
| import org.rairlab.planner.Action; | ||||
| import org.rairlab.planner.State; | ||||
| 
 | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.Optional; | ||||
| 
 | ||||
| /* | ||||
|  * IN PROGRESS | ||||
| 
 | ||||
|  * Heuristic that returns the number of actions | ||||
|  * needed to perform to satisfy a goal where | ||||
|  * preconditions and deletes of actions are not | ||||
|  * taken into account. | ||||
|  * | ||||
|  * The difficult part here is how do we deal with effect computation? | ||||
|  * Since normally free variables are instantiated. | ||||
|  * I think in this case, we keep it as free variables. | ||||
|  * (Gotta make sure it's fresh and distinct wrt to the other formulae) | ||||
|  * | ||||
|  * Then for the goal condition check we see if the two | ||||
|  * formulas "unify" with each other... | ||||
|  */ | ||||
| public class DeletePrecondRelax { | ||||
| 
 | ||||
|     private List<Action> actions; | ||||
|     private State goal; | ||||
|     private Map<State, Integer> cache; | ||||
|     private Optional<Integer> bound = Optional.empty(); | ||||
| 
 | ||||
|     public DeletePrecondRelax(List<Action> actions, State goal) { | ||||
|         this.actions = actions; | ||||
|         this.goal = goal; | ||||
|         this.cache = new HashMap<State, Integer>(); | ||||
|     } | ||||
| 
 | ||||
|     public int h(State s) { | ||||
|         if (cache.containsKey(s)) { | ||||
|             return cache.get(s); | ||||
|         } | ||||
|         int ch = compute_h(s); | ||||
|         this.cache.put(s, ch); | ||||
|         return ch; | ||||
|     } | ||||
| 
 | ||||
|     // TODO: Fill in... | ||||
|     public int compute_h(State s) { | ||||
|         return 0; | ||||
|     } | ||||
| 
 | ||||
|     public Optional<Integer> getBound() { | ||||
|         return bound; | ||||
|     } | ||||
| 
 | ||||
|     public void setBound(int b) { | ||||
|         bound = Optional.of(b); | ||||
|     } | ||||
| 
 | ||||
|     public void clearBound() { | ||||
|         bound = Optional.empty(); | ||||
|     } | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue