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

Class that defines a twos phase Reblocking heuristic that solve a scheduling instance. First phase is a topological aggregation. The second phase is a topoligcal desaggregation that permit to obtain a feasible solution to original problem. This implementation of the heuristic is not working for a model that got multi fractional destination variables. If the scheduling instance has got the PCPSP flag on, an exception is thrown. This implementation of the heuristic is working only for a simple slope precedence. RampPrecedenceConstaint, sinking constraints, GeometricConstraint and BlockSelectionPrecedenceConstraint not implemented. Use of BlockSelection not null in all Constraints not implemented. More...

#include <aggheuristics.h>

Inheritance diagram for delphos::HReb:
Inheritance graph
Collaboration diagram for delphos::HReb:
Collaboration graph

Public Member Functions

 HReb (delphos::SchedulingInstance &si, const double &slope_ang, const unsigned int &nblevels, const string &agg_sched_name=Scheduler::GUROBI_SlidingTimeWindowHeuristic, const string &desagg_sched_name=Scheduler::GUROBI_SlidingTimeWindowHeuristic, const double &rx=0.0, const double &ry=0.0, const double &rz=0.0)
 Creates a twos phase Reblocking heuristic that solve a scheduling instance. More...
 
virtual ~HReb ()
 The destructor.
 
bool Run ()
 Runs the heuristic.
 
void SetGap (const float &gap)
 Set the gap of the sub-problems. More...
 
void SetSTWHParam (const unsigned int &window_size, const unsigned int &sub_window_size, const unsigned int &step, const bool &backward=true)
 Set the Sliding time window heuristic parameter. More...
 
double GetObjective ()
 Returns the objective value.
 
double GetAggregatedObjective ()
 Returns the objective value of the Aggregated model.
 
void SetLastFixedPeriod (const unsigned int &lastperiod)
 Set the last fixed period. More...
 
delphos::BlockModelGetAggregatedModel ()
 Returns the aggregated block model.
 
void SetNumThread (const unsigned int &nthread)
 Set the number of threads used for the optimization of each sub problem.
 
void SetVerbose ()
 Set the verbose mode on.
 
- 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 twos phase Reblocking heuristic that solve a scheduling instance. First phase is a topological aggregation. The second phase is a topoligcal desaggregation that permit to obtain a feasible solution to original problem. This implementation of the heuristic is not working for a model that got multi fractional destination variables. If the scheduling instance has got the PCPSP flag on, an exception is thrown. This implementation of the heuristic is working only for a simple slope precedence. RampPrecedenceConstaint, sinking constraints, GeometricConstraint and BlockSelectionPrecedenceConstraint not implemented. Use of BlockSelection not null in all Constraints not implemented.

Constructor & Destructor Documentation

delphos::HReb::HReb ( delphos::SchedulingInstance si,
const double &  slope_ang,
const unsigned int &  nblevels,
const string &  agg_sched_name = Scheduler::GUROBI_SlidingTimeWindowHeuristic,
const string &  desagg_sched_name = Scheduler::GUROBI_SlidingTimeWindowHeuristic,
const double &  rx = 0.0,
const double &  ry = 0.0,
const double &  rz = 0.0 
)

Creates a twos phase Reblocking heuristic that solve a scheduling instance.

Parameters
siThe scheduling instance to be solved.
slope_angThe slope angle of the precedence.
nblevelsNumber of benches to consider as limit for precedences.
agg_sched_nameThe name of the scheduler used for the aggregation phase.
desagg_sched_nameThe name of the scheduler used for the desaggregation phase.
rxThe block dimensions in the X axis of aggregated block model.
ryThe block dimensions in the Y axis of aggregated block model.
rzThe block dimensions in the Z axis of aggregated block model. This implementation of the heuristic is not working for a model that got multi fractional destination variables. If the scheduling instance has got the PCPSP flag on, an exception is thrown. GeometricConstraint and BlockSelectionPrecedenceConstraint not implemented. Use of BlockSelection not null in Constraints not implemented.

Member Function Documentation

void delphos::HReb::SetGap ( const float &  gap)
virtual

Set the gap of the sub-problems.

Parameters
gapThe desired realtive integer gap of the sub problems.

Reimplemented from delphos::Scheduler.

void delphos::HReb::SetLastFixedPeriod ( const unsigned int &  lastperiod)

Set the last fixed period.

Parameters
lastperiodThe last period to be fixed.
void delphos::HReb::SetSTWHParam ( const unsigned int &  window_size,
const unsigned int &  sub_window_size,
const unsigned int &  step,
const bool &  backward = true 
)

Set the Sliding time window heuristic parameter.

Parameters
window_sizeThe window size.
sub_window_sizeThe sub window size.
stepThe step.
backwardThe flag that defines for which stage the parameters applies.

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