package player.tasks; import logging.Logger; import scg.gen.*; import scg.Util; import edu.neu.ccs.demeterf.lib.*; /** Solve the provided Problem instances ASAP */ public class SolveTask { protected final Logger log; /** Create a SolveTask with the given Logger */ public SolveTask(Logger l){ log = l; } /** Solve provided Problem instances */ public List<Transaction> solve(List<ProvidedChallenge> chs, final double factor, long start){ return chs.map(new List.Map<ProvidedChallenge, Transaction>(){ public Transaction map(ProvidedChallenge ch) { return solve(ch, factor); } }); } /** Do the actual solving of Problem instances */ public SolveTrans solve(ProvidedChallenge ch, double factor){ log.notify("Solving : #" + ch.getKey()); return new SolveTrans(solve(ch, ch.getPrice(), factor), ch.getKey()); } /** Solve the given Problem Instance */ protected Solution solve(ProvidedChallenge ch, double price, double factor){ return new Solution(Map.create(randomAssign(ch.getInstance().getVars(), Util.random()))); } /** Random Assignment to each of the variables */ public static List<Entry<Var, Boolean>> randomAssign(List<Var> vs, final double bias){ return vs.map(new List.Map<Var, Entry<Var, Boolean>>() { public Entry<Var, Boolean> map(Var v){ return Entry.create(v, Util.coinFlip(bias)); } }); } }