MineLink
 All Data Structures Functions Variables Pages
delphos::NewmanHeuristic Class Reference

Class that defines a sliding time window heuristic with lagrangean relaxion that solve a scheduling instance. More...

#include <swheuristics.h>

Inheritance diagram for delphos::NewmanHeuristic:
Inheritance graph
Collaboration diagram for delphos::NewmanHeuristic:
Collaboration graph

Public Member Functions

 NewmanHeuristic (delphos::SchedulingInstance &si, const unsigned int &sub_window_size, const unsigned int &step, const string &sched_name=Scheduler::GUROBI_MIPScheduler)
 Creates a sliding time window heuristic with lagrangean relaxion with given scheduling instance and parameters. More...
 
 NewmanHeuristic (delphos::SchedulingInstance &si, const unsigned int &step, const string &sched_name=Scheduler::GUROBI_MIPScheduler)
 Creates a sliding time window heuristic with lagrangean relaxion with given scheduling instance and parameters. More...
 
virtual bool Run ()
 Runs the Newman heuristic.
 
void SetBZ ()
 Sets the use of Bienstock Zuckerberg algorithm to compute the relaxed problem.
 
- Public Member Functions inherited from delphos::SlidingTimeWindowHeuristicRelaxed
 SlidingTimeWindowHeuristicRelaxed (delphos::SchedulingInstance &si, const unsigned int &window_size, const unsigned int &sub_window_size, const unsigned int &step, const string &sched_name=Scheduler::GUROBI_MIPScheduler)
 Creates a relaxed sliding time window heuristic with given scheduling instance and parameters. More...
 
 SlidingTimeWindowHeuristicRelaxed (delphos::SchedulingInstance &si, const unsigned int &window_size, const unsigned int &sub_window_size, const string &sched_name=Scheduler::GUROBI_MIPScheduler)
 Creates a relaxed sliding time window heuristic with given scheduling instance and parameters. More...
 
 SlidingTimeWindowHeuristicRelaxed (delphos::SchedulingInstance &si, const unsigned int &window_size, const string &sched_name=Scheduler::GUROBI_MIPScheduler)
 Creates a relaxed sliding time window heuristic with given scheduling instance and parameters. More...
 
- Public Member Functions inherited from delphos::SlidingTimeWindowHeuristic
 SlidingTimeWindowHeuristic (delphos::SchedulingInstance &si, const unsigned int &window_size, const unsigned int &sub_window_size, const unsigned int &step, const string &sched_name=Scheduler::GUROBI_MIPScheduler)
 Creates a sliding time window heuristic with given scheduling instance and parameters. More...
 
 SlidingTimeWindowHeuristic (SchedulingInstance &si, const unsigned int &window_size, const unsigned int &sub_window_size, const string &sched_name=Scheduler::GUROBI_MIPScheduler)
 Creates a sliding time window heuristic with given scheduling instance and parameters. More...
 
 SlidingTimeWindowHeuristic (delphos::SchedulingInstance &si, const unsigned int &window_size, const string &sched_name=Scheduler::GUROBI_MIPScheduler)
 Creates a sliding time window heuristic with given scheduling instance and parameters. More...
 
void SetVerbose ()
 Set the verbose mode on.
 
void SetVerbose (const string &path)
 Set the verbose mode on and set the path of the log file. More...
 
void SetSupPBTimeLimit (const double &tlimit)
 Set the sub problem time limit. More...
 
const bool GetVerbose () const
 Returns the verbose status. Can be true or false.
 
const string GetPath () const
 Returns the path of the log file.
 
void SetGap (const float &gap)
 Set the gap of the sub-problems. More...
 
const float GetGap () const
 Returns the desired relative integer gap of the sub problems.
 
void SetEmphasis (const Model::Emphasis &emphasis)
 Set the emphasis mode for each resolution of sub-problem. More...
 
const Model::Emphasis GetEmphasis () const
 Returns the emphasis mode for each resolution of sub-problem.
 
void SetSense (const Model::OptimizationSense &sense)
 Set the sense of the optimization model. More...
 
const Model::OptimizationSense GetSense () const
 Returns the sense of optimization.
 
const string & GetLogFileName () const
 Returns the log file name.
 
void SetNumThread (const unsigned int &nthread)
 Set the number of threads used for the optimization of each sub problem.
 
void SetNoOutput ()
 Set No Output.
 
- Public Member Functions inherited from delphos::SchedulingHeuristic
 SchedulingHeuristic (SchedulingInstance &si)
 Creates a heuristic with given scheduling instance. More...
 
virtual ~SchedulingHeuristic ()
 The destructor.
 
const ScheduleGetSchedule ()
 Returns the result schedule.
 
void SetCallBack (delphos::CallBackPtr fp)
 Set a time advance user callback. More...
 
delphos::CallBackPtr GetCallBack ()
 Returns the call back if it exists.
 
const bool Optimized ()
 Returns true only if the MIP have been succesfully optimized.
 
void SetLogFile (const string &name)
 Set the use of the log with given file name. More...
 
- Public Member Functions inherited from delphos::Scheduler
 Scheduler (delphos::SchedulingInstance &si)
 Creates a new scheduler. More...
 
virtual ~Scheduler ()
 The destructor.
 
delphos::SchedulingInstanceGetInstance ()
 Returns the associated scheduling instance.
 
const bool IsStock ()
 Returns true only if the inner scheduling instance has stoks.
 
- Public Member Functions inherited from delphos::BlockModelEntity
 BlockModelEntity (delphos::BlockModel &bm)
 Creates a new block instance associated to a given block model. More...
 
delphos::BlockModelGetBlockModel ()
 Retrieves the block model to which the entity is associated. More...
 
const delphos::BlockModelGetBlockModel () const
 Retrieves the block model to which the entity is associated. More...
 

Additional Inherited Members

- Static Public Attributes inherited from delphos::Scheduler
static const string CBC_MIPScheduler =string("CBC_MIPScheduler")
 Name of the CBC MIP scheduler.
 
static const string CBC_SlidingTimeWindowHeuristic =string("CBC_SlidingTimeWindowHeuristic")
 Name of the CBC implemtation of the sliding time window heuristic.
 
static const string GUROBI_MIPScheduler =string("GUROBI_MIPScheduler")
 Name of the gurobi MIP scheduler.
 
static const string GUROBI_SlidingTimeWindowHeuristic =string("GUROBI_SlidingTimeWindowHeuristic")
 Name of the gurobi implemtation of the sliding time window heuristic.
 

Detailed Description

Class that defines a sliding time window heuristic with lagrangean relaxion that solve a scheduling instance.

This is a rolling time heuristic in which subproblem the time horizon is always equal to full model horizon. Only start time and start time of lagrangean relaxation window are rolling.

Constructor & Destructor Documentation

delphos::NewmanHeuristic::NewmanHeuristic ( delphos::SchedulingInstance si,
const unsigned int &  sub_window_size,
const unsigned int &  step,
const string &  sched_name = Scheduler::GUROBI_MIPScheduler 
)

Creates a sliding time window heuristic with lagrangean relaxion with given scheduling instance and parameters.

Parameters
siThe scheduling instance of the heuristics.
sub_window_sizeThe sub window size of the heuristic.
stepThe step of the heuristic.
sched_nameThe scheduler name that will be used to solve the sub-problems. First, the relaxed problem is solved by Bienstock Zuckerberg algorithm for all time window to get dual values(multipliers). At the first iteration a sub problem that corresponds to all the periods is solved. In this problem, the sum and average constraints corresponding to the time window : [sub_window_size+1,horizon] are penalized with the corresponding multiplier in the objective and all variables in this time window are relaxed. The solution part for the first step periods is fixed. Then, rolling step periods on start of time window, the process is repeated still reaching the horizon. So horizon>=sub_windows_size>=step. If Gurobi is available, it is used as default solver. On the other hand, coin CBC is used as default solver. The implementation of the heuristic creates a schedule and not a fractional schedule. If the scheduling instance has got the PCPSP flag on, an exception is thrown. The constraint types not supported yet by this implementation are: GeometricConstraint,MinExractPeriodConstraint, DoNotMineBeforeConstraint,ForceMiningByConstraint and DoNotSentToConstraint.
delphos::NewmanHeuristic::NewmanHeuristic ( delphos::SchedulingInstance si,
const unsigned int &  step,
const string &  sched_name = Scheduler::GUROBI_MIPScheduler 
)

Creates a sliding time window heuristic with lagrangean relaxion with given scheduling instance and parameters.

Parameters
siThe scheduling instance of the heuristics.
stepThe step of the heuristic.
sched_nameThe scheduler name that will be used to solve the sub-problems. First, the relaxed problem is solved by Bienstock Zuckerberg algorithm for all time window to get dual values(multipliers). At the first iteration a sub problem that corresponds to all the periods is solved. In this problem, the sum and average constraints corresponding to the time window : [2,horizon] are penalized with the corresponding multiplier in the objective and all variables in this time window are relaxed. The solution part for the first step periods is fixed. Then, rolling step periods on start of time window, the process is repeated still reaching the horizon. So horizon>=step. If Gurobi is available, it is used as default solver. On the other hand, coin CBC is used as default solver. The implementation of the heuristic creates a schedule and not a fractional schedule. If the scheduling instance has got the PCPSP flag on, an exception is thrown. The constraint types not supported yet by this implementation are: GeometricConstraint,MinExractPeriodConstraint, DoNotMineBeforeConstraint,ForceMiningByConstraint and DoNotSentToConstraint.

The documentation for this class was generated from the following files: