- Added some new heuristics testing.
This commit is contained in:
		
							parent
							
								
									8f896432d1
								
							
						
					
					
						commit
						0a74c87934
					
				| @ -48,7 +48,7 @@ def parse(scout): | |||||||
|     return (ra,rb,rp,nc,st) |     return (ra,rb,rp,nc,st) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def test_goal_selector(goalselector, options): | def test_goal_selector(goalselector, options,branchbound): | ||||||
|     """Test with a given goal selector |     """Test with a given goal selector | ||||||
| 
 | 
 | ||||||
|        in: |        in: | ||||||
| @ -85,6 +85,9 @@ def test_goal_selector(goalselector, options): | |||||||
|         proofs = proofs + rp |         proofs = proofs + rp | ||||||
|         claims = claims + nc |         claims = claims + nc | ||||||
|         states = states + st |         states = states + st | ||||||
|  | 
 | ||||||
|  |         if (bounds * states) > branchbound: | ||||||
|  |             return (-1,0,0,0,0,0) | ||||||
|      |      | ||||||
|     return (attacks,bounds,proofs,claims,np,states) |     return (attacks,bounds,proofs,claims,np,states) | ||||||
| 
 | 
 | ||||||
| @ -106,8 +109,15 @@ class maxor: | |||||||
|         self.dir = dir |         self.dir = dir | ||||||
|         self.min = mymin |         self.min = mymin | ||||||
|         self.max = mymax |         self.max = mymax | ||||||
|  |         if dir & 1: | ||||||
|  |             self.data = mymax | ||||||
|  |         else: | ||||||
|  |             self.data = mymin | ||||||
|      |      | ||||||
|     def reg(self,data): |     def get(self): | ||||||
|  |         return self.data | ||||||
|  | 
 | ||||||
|  |     def reg(self,d): | ||||||
|         """Store a new data element |         """Store a new data element | ||||||
| 
 | 
 | ||||||
|            in: |            in: | ||||||
| @ -116,21 +126,23 @@ class maxor: | |||||||
|                formatted element, plus increase/decrease |                formatted element, plus increase/decrease | ||||||
|             notifications according to initial settings. |             notifications according to initial settings. | ||||||
|         """ |         """ | ||||||
| 
 |          | ||||||
|  |         self.data = d | ||||||
|         res = "" |         res = "" | ||||||
|         if self.min >= data: |         if self.min >= d: | ||||||
|             self.min = data |  | ||||||
|             if (self.dir & 2): |             if (self.dir & 2): | ||||||
|                 res = res + "-" |                 res = res + "-" | ||||||
|         if self.max <= data: |             self.min = d | ||||||
|             self.max = data |         if self.max <= d: | ||||||
|             if (self.dir & 1): |             if (self.dir & 1): | ||||||
|                 res = res + "+" |                 res = res + "+" | ||||||
|  |             self.max = d | ||||||
|         if res == "": |         if res == "": | ||||||
|             return res |             return res | ||||||
|         else: |         else: | ||||||
|             return "[" + res + "]" |             return "[" + res + "]" | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| # Main code | # Main code | ||||||
| def main(): | def main(): | ||||||
|     parser = OptionParser() |     parser = OptionParser() | ||||||
| @ -150,27 +162,31 @@ def main(): | |||||||
|     boundstatesmax = maxor(2) |     boundstatesmax = maxor(2) | ||||||
| 
 | 
 | ||||||
|     for g in range(1,63): |     for g in range(1,63): | ||||||
|         if (g & 8) == 0 and (g & 4) == 0 : |             (ra,rb,rp,nc,np,st) = test_goal_selector(g, options, | ||||||
|             (ra,rb,rp,nc,np,st) = test_goal_selector(g, options) |                     boundstatesmax.get()) | ||||||
| 
 |  | ||||||
|             # Scores: bounds are negative |  | ||||||
|             score1 = ra + rp - rb |  | ||||||
|             score2 = ra + (3 * rp) - (2 * rb) |  | ||||||
|             boundstates = rb * st |  | ||||||
| 
 | 
 | ||||||
|             res = str(g) |             res = str(g) | ||||||
|  |             if ra < 0: | ||||||
|  |                 # Error: not well bounded | ||||||
|  |                 res += "\tWent over bound, stopped investigation." | ||||||
|  |             else: | ||||||
|  |                 # Scores: bounds are negative | ||||||
|  |                 score1 = ra + rp - rb | ||||||
|  |                 score2 = ra + (3 * rp) - (2 * rb) | ||||||
|  |                 boundstates = rb * st | ||||||
| 
 | 
 | ||||||
|             def shows (res, mx, data): |  | ||||||
|                 return res + "\t" + str(data) + mx.reg(data) |  | ||||||
| 
 | 
 | ||||||
|             res = shows (res, ramax, ra) |                 def shows (res, mx, data): | ||||||
|             res = shows (res, rbmax, rb) |                     return res + "\t" + str(data) + mx.reg(data) | ||||||
|             res = shows (res, rpmax, rp) | 
 | ||||||
|             res = res + "\t" + str(nc) |                 res = shows (res, ramax, ra) | ||||||
|             res = shows (res, score1max, score1) |                 res = shows (res, rbmax, rb) | ||||||
|             res = shows (res, score2max, score2) |                 res = shows (res, rpmax, rp) | ||||||
|             res = shows (res, statesmax, st) |                 res = res + "\t" + str(nc) | ||||||
|             res = shows (res, boundstatesmax, boundstates) |                 res = shows (res, score1max, score1) | ||||||
|  |                 res = shows (res, score2max, score2) | ||||||
|  |                 res = shows (res, statesmax, st) | ||||||
|  |                 res = shows (res, boundstatesmax, boundstates) | ||||||
| 
 | 
 | ||||||
|             print res |             print res | ||||||
|     print |     print | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user