2 #ifndef __GUROBIFRACTIONALSCHEDULER_H__
3 #define __GUROBIFRACTIONALSCHEDULER_H__
9 #include "fractional_scheduler.h"
10 #include "../../../problems/scheduling/filtering.h"
11 #include "gurobi_model.h"
30 GurobiModel * _gmodel;
38 Model::OptimizationSense _optimization_sense;
41 bool CreateVariables();
42 bool CreateGoalFunction();
43 bool CreateCoreConstraints();
44 bool CreateUserConstraints();
46 const bool CreatedVars()
const;
47 const bool UpdatedConstrs()
const;
60 vector<BlockIndexType> _index_in_bs;
62 const BlockIndexType& block_index,
63 const unsigned int& period,
64 const unsigned int& destination);
67 const unsigned int& stock_index,
68 const unsigned int& period,
69 const unsigned int& destination);
71 LinearExpr RealProcVar(
72 const BlockIndexType& block_index,
73 const unsigned int& period,
74 const unsigned int& destination);
76 LinearExpr RealProcVar2P(
77 const BlockIndexType & block_index,
78 const unsigned int & period,
79 const unsigned int & destination);
81 bool SetFractionalSchedule();
82 unsigned long _nb_prec;
127 void WriteLP(
const string outfile);
136 void WriteSol(
const string outfile);
144 double GetSol(
const BlockIndexType& block_index,
145 const unsigned int& period,
146 const unsigned int& destination);
177 static string ProcVarName(
178 const BlockIndexType& block_index,
179 const unsigned int& period,
180 const unsigned int& destination);
181 static string ProcVarName2P(
182 const BlockIndexType & block_index,
183 const unsigned int & period,
184 const unsigned int & destination);
185 static string StockVarName(
186 const unsigned long& stock_index,
187 const unsigned int& period,
188 const unsigned int& destination);
198 const double GetDual(
const string & cname);
const delphos::FractionalSchedule & GetFractionalSchedule()
Returns the result fractional schedule.
Definition: gurobi_fractional_scheduler.cpp:1192
void WriteSol(const string outfile)
Writes the solution in given file.
Definition: gurobi_fractional_scheduler.cpp:995
void SetOptimizationSense(const Model::OptimizationSense &sense)
Set the sense of the optimization model.
Definition: gurobi_fractional_scheduler.cpp:980
A constraint on the addition of the attributes of a block.
Definition: constraint.h:264
A constraint limiting the period at which a block should be mined.
Definition: filtering.h:62
double GetSol(const BlockIndexType &block_index, const unsigned int &period, const unsigned int &destination)
Returns the solution value for a block period and destination.
Definition: gurobi_fractional_scheduler.cpp:1004
Defines a scheduling instance to be solved.
Definition: instance.h:41
A constraint that prevents certain blocks to be sent to given processes.
Definition: filtering.h:107
Abstracts a Gurobi LP solver that can solve a scheduling instance.
Definition: gurobi_fractional_scheduler.h:28
A constraint on the average values of attributes of blocks.
Definition: constraint.h:426
double GetObjValue()
Returns the objective value of the optimized model.
Definition: gurobi_fractional_scheduler.cpp:316
void ComputeExpectedTime(const string column)
Computes the expected times.
Definition: gurobi_fractional_scheduler.cpp:1070
void SetLogFile(const string &name)
Set the use of the log with given file name.
Definition: gurobi_fractional_scheduler.cpp:983
A geometric constraint.
Definition: constraint.h:632
A constraint that forces a block to be mined before or at some period.
Definition: filtering.h:19
GurobiFractionalScheduler(delphos::SchedulingInstance &si)
Creates a gurobi fractional scheduler with given scheduling instance.
Definition: gurobi_fractional_scheduler.cpp:5
Defines a fractional scheduling of blocks.
Definition: fractional_schedule.h:22
void WriteLP(const string outfile)
Writes the LP model in given file.
Definition: gurobi_fractional_scheduler.cpp:988
virtual ~GurobiFractionalScheduler()
The destructor.
Definition: gurobi_fractional_scheduler.cpp:15
Defines the base class for all constraints.
Definition: constraint.h:33
bool CreateModel()
Inits the solver and load the model in gurobi.
Definition: gurobi_fractional_scheduler.cpp:1031
A precedence constraint.
Definition: constraint.h:513
virtual bool Run()
Generates the model in Gurobi and optimize it.
Definition: gurobi_fractional_scheduler.cpp:270
A block selection precedence constraint.
Definition: constraint.h:572
Dummy class that define required methods for a solver of a scheduling instance.
Definition: fractional_scheduler.h:14
GurobiModel & GetMathematicalModel()
Returns the mathematical model.
Definition: gurobi_fractional_scheduler.cpp:311
const double GetDual(const string &cname)
Returns the dual value of given constraint.
Definition: gurobi_fractional_scheduler.cpp:1018
const bool IsStock()
Return true only if the inner scheduling instance has stoks.
Definition: gurobi_fractional_scheduler.cpp:973