Advertisement
Guest User

Untitled

a guest
Nov 21st, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. class AlgoDM {
  2.  
  3. private static final int K1 = 1000, K2 = 10, K2_ = 1000;
  4. private static final int K3 = 5, K4 = 2;
  5. private static final double ALPH = 1.0;
  6.  
  7. public static Wreck getWreckForReaper (Problem pb) {
  8.  
  9. int pid = 0;
  10. int[] scores = pb.scores;
  11. int[] rages = pb.rages;
  12. Reaper[] reapers = pb.reapers;
  13. Destroyer[] destroyers = pb.destroyers;
  14. Doof[] doofs = pb.doofs;
  15. Tanker[] tankers = pb.tankers;
  16. Wreck[] wrecks = pb.wrecks;
  17.  
  18. int i_adv = scores[2] > scores[1]? 2 : 1;
  19. Reaper reaper_0 = reapers[pid];
  20. Destroyer destroyer_0 = destroyers[pid];
  21. Doof doof_0 = doofs[pid];
  22.  
  23. double r_adj = 900;
  24. Map<Wreck,List<Wreck>> mp_adj_wrecks = Problem.getAdjWrecks (wrecks, r_adj);
  25.  
  26. Wreck wrk_opt = null;
  27. int opt_score = Integer.MIN_VALUE;
  28. for (Wreck wrk : wrecks) {
  29.  
  30. int score = 0;
  31.  
  32. // 1. introduire la distance.
  33. score += K1 * (reaper_0.distance(wrk) <= wrk.r ? 1 : 0);
  34. score += K2 * (int)( (Problem.MAP_RADIUS* 2 - reaper_0.distance(wrk)) / K2_ ) ; //12000
  35.  
  36. // 2. introduire la quantité de l'eau
  37. List<Wreck> vois_wrk = mp_adj_wrecks.get(wrk);
  38. int water = wrk.water;
  39. for (Wreck wrk_ : vois_wrk) {
  40. water += wrk_.water;
  41. //if (wrk.distance(wrk_) < Looter.LOOTER_RADIUS)
  42. // score += (wrk.water + wrk_.water) * K4;
  43. }
  44. score += water * K3;
  45.  
  46. if (score > opt_score) {
  47. wrk_opt = wrk;
  48. opt_score = score;
  49. }
  50. }
  51.  
  52. return wrk_opt;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement