Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class AlgoDM {
- private static final int K1 = 1000, K2 = 10, K2_ = 1000;
- private static final int K3 = 5, K4 = 2;
- private static final double ALPH = 1.0;
- public static Wreck getWreckForReaper (Problem pb) {
- int pid = 0;
- int[] scores = pb.scores;
- int[] rages = pb.rages;
- Reaper[] reapers = pb.reapers;
- Destroyer[] destroyers = pb.destroyers;
- Doof[] doofs = pb.doofs;
- Tanker[] tankers = pb.tankers;
- Wreck[] wrecks = pb.wrecks;
- int i_adv = scores[2] > scores[1]? 2 : 1;
- Reaper reaper_0 = reapers[pid];
- Destroyer destroyer_0 = destroyers[pid];
- Doof doof_0 = doofs[pid];
- double r_adj = 900;
- Map<Wreck,List<Wreck>> mp_adj_wrecks = Problem.getAdjWrecks (wrecks, r_adj);
- Wreck wrk_opt = null;
- int opt_score = Integer.MIN_VALUE;
- for (Wreck wrk : wrecks) {
- int score = 0;
- // 1. introduire la distance.
- score += K1 * (reaper_0.distance(wrk) <= wrk.r ? 1 : 0);
- score += K2 * (int)( (Problem.MAP_RADIUS* 2 - reaper_0.distance(wrk)) / K2_ ) ; //12000
- // 2. introduire la quantité de l'eau
- List<Wreck> vois_wrk = mp_adj_wrecks.get(wrk);
- int water = wrk.water;
- for (Wreck wrk_ : vois_wrk) {
- water += wrk_.water;
- //if (wrk.distance(wrk_) < Looter.LOOTER_RADIUS)
- // score += (wrk.water + wrk_.water) * K4;
- }
- score += water * K3;
- if (score > opt_score) {
- wrk_opt = wrk;
- opt_score = score;
- }
- }
- return wrk_opt;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement