Crashing cost is always positive, and we have
0 ≤
≤
for each activity. If
=
then we say
the activity can be externalized.
Another concern that has to be addressed is the
relationship between activities. For this purpose, we
introduce a graph A in which each arc indicates that
the predecessor activity must be completed before
starting the successor activity. Unlike (Brucker,
1999) we will not introduce waiting times between
two activities, as those can be modelled by adding
additional dummy activities with a fixed duration
between activities that need to be separated, which
means that the graph can be seen as a subset of V×V,
at the cost of over-dimensioning the set V.
Actual starting times are kept in a variable vector
∈ℕ
and actual crashing times are kept in
a variable vector ∈ℕ
.
3.2 The Linear Programming Model
proposed – A General Description
Three different objectives have to be taken in account
in order to plan a project: reaching goals, as perceived
by the client, the time needed to do so and the money
used to do so. However, these are all dependent on
each other and for this reason, as described above,
past approaches made some of them constraints and
other objectives. It is also important to take into
account, as mentioned above, the objective of
customer satisfaction which is absent in classical
crashing models.
On the one hand, our model focuses on two
resources: time (the project completion time), and
money (budget available for crashing activities and
carrying tasks), to reach a fixed goal. What is more,
we keep track of project’s achievement throughout
the duration of the project by introducing meetings
with the client to take into account client satisfaction
at different points during the project, because we
assume that the customer, though interested in the
development of the project, does not need to be aware
of every activity but rather has knowledge about the
state of a project at a number of given times
(meetings) during the project.
In order to address the three objectives: early
completion time, minimal cost and maximal ongoing
customer satisfaction, we decided:
- to make the time objective a constraint - a project
deadline will be imposed;
- to make the cost objective both a model objective
(the total cost of activities crashing should be
minimal) and a constraint: in each consecutive
period between two meetings with the customer
there is a budget available for carrying out
activities, including crashing;
- to make the customer satisfaction a model
objective. For this reason, the objective function
will focus on money.
Thus, our model will have two objectives: the
total cost of crashing the activities (minimised) and
the satisfaction of the customer throughout project
realisation (maximised). The latter objective is
difficult to express in a formal way and to measure,
as it is immaterial. We have decided to measure it in
monetary units - project planners will be asked to
express the customer satisfaction in terms of value.
This translation is crucial, as it will play an important
role when we combine the objectives, which will be
discussed later on. The problem of expressing
consumer satisfaction in monetary units will be
discussed further in the next subsection.
To account for time-wise gain in this objective
function, bounties are awarded for early activity
completion. These bounties are awarded for each
activity if the given activity is started before the j-th
meeting with the client. For this we introduce ⊂ℕ
the set of meetings and ∈ℕ
the vector of meeting
dates.
is the bounty awarded for activity i if it has
completed before meeting j. For the purpose of
calculation, we use a matrix
∈ℝ
×
where
=
−
. This comes in handy as we can
now attribute a bounty for meeting j without checking
whether or not we already gave a bounty for week
j − 1. However, it can be noted that activities that are
not valued by the client, or activities that need to be
completed in order to have a value for the client, must
be treated with caution. In the first case no bounty
should be awarded for the activity, and, in the second
case, bounties should be awarded for an event that
depends on and only on the completion of the activity.
Things such as finishing a user interface, or giving a
functional preview to the client, should be modelled
through events and awarded with big bounties, as
even if they have shallow meaning in terms of work-
involvement, they play a great role in client
satisfaction. It needs to be remembered that bounties
are not used to congratulate a team on its fast work,
but to represent the value-added of having the client
implied in the development. For this reason, bounties
should be calculated based on their capacity to get the
client further involved in the project.
We obtain a bi-criteria linear programming
problem, which can be solved in many ways. Here we
assume the weighting approach with equal weights
given to both objectives, but of course the approach
to solving the bi-criteria problem could be changed,
either by modifying the weights or by using a
different method to combine the criteria.