Originally posted by: andrei.zaharia
Hi
I am trying to model a business case but i'm having some difficulties.
The simplified business case: We have a fix number of flight (with caracteristics) that must be allocated to a number of resources (ex.: all arrival flights in a given period of time must be allocated to arrival gates). For each flight we know the time it occupies a gate.
The allocation must tell us how many gates we need to process all the flights and the beginning and end occupation time for each flight.
The flights are defined as a tuple and we get from the data file the set of flights:
int nbFlights = ...;
tuple Flight {
int id;
string flightCategory;
int occupationTime;
};
{Flight} flights = ...;
Each flight has an earliest start of processing calculated based on its arrival time:
int earliestStartOfProcessing [flights] = ...;
The resources are also as a tuple:
tuple Resource {
int id;
string name;
int maxUtilizationTime;
}
Since we need the start/end occupation time for each flight assigned to a resource i declared the decision variable:
dvar interval itvs[r in resources, f in flights];
and the usage for each resource:
cumulFunction usage[r in resources] = sum (f in flights) pulse(itvs[r][f], f.occupationTime);
The objective would be to minimize the resources used. We can say equivalently that we need for each resource to maximize the usage (maximize the number of occupied time).
I am not sure how to model the objective. Any help would be appreciated.
Example of the data file:
nbFlights = 3;
flights = {
<1, "DOM", 10>,
<2, "INT", 30>,
<3, "SCH", 20>
};
earliestStartOfProcessing = [0, 5, 10];
Thank you,
Andrei
#DecisionOptimization#OPLusingCPOptimizer