1 #ifndef __SWHEURISTICS_H__
2 #define __SWHEURISTICS_H__
4 #include "heuristics.h"
6 #include "../fractional_scheduler/fractional_scheduler.h"
7 #include "../../../data_structures/bm/functors.h"
9 #include "gurobi_model.h"
10 #include "../ipscheduler/gurobimipscheduler.h"
13 #include "cbc_model.h"
14 #include "../ipscheduler/cbcmipscheduler.h"
35 unsigned int _window_size;
36 unsigned int _sub_window_size;
40 Model::Emphasis _emph;
42 Model::OptimizationSense _sense;
43 unsigned int _numthread;
44 double _subpb_timelimit;
49 const unsigned int GetWindowSize()
const;
50 const unsigned int GetSubWindowSize()
const;
51 const unsigned int GetStep()
const;
57 map<string, double> & tonnages);
59 void CopyToFullSchedule(
64 map<string, double> & tonnages);
84 const unsigned int & window_size,
85 const unsigned int & sub_window_size,
86 const unsigned int & step,
88 const string& sched_name=Scheduler::GUROBI_MIPScheduler);
90 const string& sched_name=Scheduler::CBC_MIPScheduler);
106 const unsigned int & window_size,
107 const unsigned int & sub_window_size,
109 const string& sched_name=Scheduler::GUROBI_MIPScheduler);
111 const string& sched_name=Scheduler::CBC_MIPScheduler);
130 const unsigned int & window_size,
132 const string& sched_name=Scheduler::GUROBI_MIPScheduler);
134 const string& sched_name=Scheduler::CBC_MIPScheduler);
152 void SetVerbose(
const string & path);
158 void SetSupPBTimeLimit(
const double& tlimit);
164 const bool GetVerbose()
const;
169 const string GetPath()
const;
175 void SetGap(
const float & gap);
180 const float GetGap()
const;
187 void SetEmphasis(
const Model::Emphasis & emphasis);
192 const Model::Emphasis GetEmphasis()
const;
199 void SetSense(
const Model::OptimizationSense & sense);
204 const Model::OptimizationSense GetSense()
const;
209 const string & GetLogFileName()
const;
214 void SetNumThread(
const unsigned int& nthread);
232 bool RelaxSecondWindowVariables(
MIPScheduler& mip,
const unsigned int & from,
const unsigned int & to,
const unsigned int & current);
254 const unsigned int & window_size,
255 const unsigned int & sub_window_size,
256 const unsigned int & step,
257 const string& sched_name=Scheduler::GUROBI_MIPScheduler);
276 const unsigned int & window_size,
277 const unsigned int & sub_window_size,
278 const string& sched_name=Scheduler::GUROBI_MIPScheduler);
297 const unsigned int & window_size,
298 const string& sched_name=Scheduler::GUROBI_MIPScheduler);
315 bool SetUserConstraintsAndPenalizations(
317 const unsigned int & big_window_to,
318 const unsigned int & sub_window_to,
319 const unsigned int & current_from ,
320 map<string,double> & duals );
345 const unsigned int & sub_window_size,
346 const unsigned int & step,
347 const string& sched_name=Scheduler::GUROBI_MIPScheduler);
369 const unsigned int & step,
370 const string& sched_name=Scheduler::GUROBI_MIPScheduler);
387 vector<double> _esperate_times;
399 SlidingTimeWindowHeuristicRegret(
401 const unsigned int & window_size,
402 const unsigned int & sub_window_size,
403 const unsigned int & step,
404 const vector<double>& esperate_times,
405 const string& sched_name=Scheduler::GUROBI_MIPScheduler);
Abstracts a set of blocks (subset of a blockmodel).
Definition: blocksel.h:33
Class that defines relaxed sliding time window heuristic that solve a scheduling instance.
Definition: swheuristics.h:229
Class that defines a sliding time window heuristic with lagrangean relaxion that solve a scheduling i...
Definition: swheuristics.h:312
Defines a scheduling instance to be solved.
Definition: instance.h:41
Class that defines sliding time window heuristic that solve a scheduling instance.
Definition: swheuristics.h:33
Dummy class that define required methods for a heuristic that solve a scheduling instance.
Definition: heuristics.h:18
Dummy class that define required methods for a MIP solver of a scheduling instance.
Definition: mip_scheduler.h:24
Defines a scheduling of blocks.
Definition: schedule.h:23
Dummy class that define required methods for a solver of a scheduling instance.
Definition: fractional_scheduler.h:14