static void Main(string[] args) { string ars = System.IO.File.ReadAllText(@"day1_0/ARs.json"); string dtos = System.IO.File.ReadAllText(@"day1_0/DTOs.json"); string consts = System.IO.File.ReadAllText(@"day1_0/constants.json"); List <AR> ARlist = JsonConvert.DeserializeObject <List <AR> >(ars); List <DTO> DTOlist = JsonConvert.DeserializeObject <List <DTO> >(dtos); Costants constlist = JsonConvert.DeserializeObject <Costants>(consts); max_mem = constlist.MEMORY_CAP; //merge AR con DTO List <ARDTO> ar_dto = new List <ARDTO>(); DTOlist.ForEach(d => { ARDTO ardto = new ARDTO(ARlist.Find(a => a.id == d.ar_id), d); ar_dto.Add(ardto); }); GeneratePlans(ar_dto); Console.WriteLine("\nSTOP"); Console.ReadLine(); }
// Creazione di un piano con una lista randomizzata public void BuildPlan() { bool ok; //indica se i vincoli sono rispettati int i = 0; if (current_mem == 0) { plan.Add(instance.GetARDTO(0)); current_mem += plan[0].memory; i++; } //Console.WriteLine("id_ar\t\tid_dto\t\trank\thigh\tstart\t\t\tstop\t\t\tmemory"); int n = instance.GetARDTOs().Count; for (; i < n; i++) { ARDTO newArdto = instance.GetARDTO(i); ok = true; int j; for (j = 0; j < plan.Count; j++) { //controllo che non ci sia un overlap temporale con i precedenti if (newArdto.stop_time >= plan[j].start_time && newArdto.start_time <= plan[j].stop_time) { ok = false; break; } //controllo che l'id_ar non sia già presente in quelli aggiunti if (newArdto.id_ar == plan[j].id_ar) { ok = false; break; } } if (ok) { //controllo memoria libera if (current_mem + newArdto.memory <= instance.GetMaxMem()) { //ardto[i].PrintAll(); plan.Add(newArdto); current_mem += newArdto.memory; } } } }
public Instance(string ars, string dtos, string consts, int seed) { List <AR> ARlist = JsonConvert.DeserializeObject <List <AR> >(ars); List <DTO> DTOlist = JsonConvert.DeserializeObject <List <DTO> >(dtos); Costants constlist = JsonConvert.DeserializeObject <Costants>(consts); rnd = new Random(seed); max_mem = constlist.MEMORY_CAP; max_rank = constlist.RANK; //merge AR con DTO ar_dto = new List <ARDTO>(); DTOlist.ForEach(d => { ARDTO ardto = new ARDTO(ARlist.Find(a => a.id == d.ar_id), d); ar_dto.Add(ardto); }); }