![]() |
MineLink
|
Class that defines a sliding time window heuristic with lagrangean relaxion that solve a scheduling instance. More...
#include <swheuristics.h>
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. | |
![]() | |
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... | |
![]() | |
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. | |
![]() | |
SchedulingHeuristic (SchedulingInstance &si) | |
Creates a heuristic with given scheduling instance. More... | |
virtual | ~SchedulingHeuristic () |
The destructor. | |
const Schedule & | GetSchedule () |
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... | |
![]() | |
Scheduler (delphos::SchedulingInstance &si) | |
Creates a new scheduler. More... | |
virtual | ~Scheduler () |
The destructor. | |
delphos::SchedulingInstance & | GetInstance () |
Returns the associated scheduling instance. | |
const bool | IsStock () |
Returns true only if the inner scheduling instance has stoks. | |
![]() | |
BlockModelEntity (delphos::BlockModel &bm) | |
Creates a new block instance associated to a given block model. More... | |
delphos::BlockModel & | GetBlockModel () |
Retrieves the block model to which the entity is associated. More... | |
const delphos::BlockModel & | GetBlockModel () const |
Retrieves the block model to which the entity is associated. More... | |
Additional Inherited Members | |
![]() | |
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. | |
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.
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.
si | The scheduling instance of the heuristics. |
sub_window_size | The sub window size of the heuristic. |
step | The step of the heuristic. |
sched_name | The 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.
si | The scheduling instance of the heuristics. |
step | The step of the heuristic. |
sched_name | The 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. |