Re: Resources

Dag Andersen <[email protected]>
Newsgroups gmane.comp.kde.kplato
Message-ID <[email protected]>
On Lørdag den 18. oktober 2003 13:33, John Lamb wrote:
> Dag Andersen wrote:
> > Hi John,
> > did you get anywhere with this?
>
> Sadly, not very far. I did check far enough into the existing code
> to convince myself that it should still work.
>
> I'd like to do something more. Maybe modify the existing code so
> that it can calculate some start and finish times when there are
> resources. 
I'm having a look at coding a little bit of this to get a feel for it. 
It will be *very* basic, though, and only include something like 
this:
- Project resourcedialog to define available resources. (actually 
filling in functionallity to existing dialog) Done and committed.
- New resourcedialog for tasks, to be able to define the amount and 
type of resources a task needs.
- Very simple algorithm to allocate resources during PERT/CPM 
calculations.

I hope to have something committed in a few days but the code is 
starting to look a bit messy, so we'll see...

>To do this it would help a lot to separate out the code
> that does actual PERT/CPM calculations. It is much easier to write
> this if we know precisely what may be modified by the calculations.
> Also, its eaier from my point of view. I'm only really good at
> programming algorithms.
>
> The only information a basic PERT/CPM algorithm needs are:
> 1. A start time for the project.
> 2. A duration for each node.
> 3. The list of dependent (dependChildNodes).
> Therefore the algorithm doesn't need to be rerun unless one of
> these is changed.
>
> The algorithm calculates (i.e. The only things it modifies are).
> 1. Earliest start for node.
> 2. Latest start for node.
> 3. Earliest finish for node.
> 4. Latest finish for node.
> It also does (if I recall correctly) a sanity check: it won't try
> to calculate if, for example, task C follows B, which follows A,
> which follows C.
>
> Everything else can be hidden or protected from the calculations.
> I'd actually like to get rid of some of the things I put in like
> dummy start and end nodes, which only make things a bit simpler for
> the algorithm.
>
> If this had a separate interface from the stuff that handles the
> work breakdown structure, who is responsible for the task, loading,
> saving, dialog handling, etc., it would be easier to write
> algorithm code that could be compiled and linked separately.
>
> Resources are a bit harder (actually NP-hard) and an algorithm (or
> heuristic since it won't guarantee to find the 'optimal' solution)
> would need some of the resource information.
>
> > It seems I will have a little time I can use on kplato the next
> > weeks, so...
> >
> > On Søndag den 25. maj 2003 17:38, John Lamb wrote:
> >>I've had some thoughts on how to use resources within the PERT
> >>calculations. These are only half-formed and would need
> >> development before I could implement them in code.
> >>
> >>As a motivating example consider the following resources
> >> available over five days.
> >>
> >>Alice:   C++ programmer available Monday-Friday
> >>Bob:     C++/Python programmer available Monday, Wednesday and
> >>Friday Charlie: Python programmer available any 2.5 days.
> >>
> >>We can imagine various combinations of these forming actual
> >>resources (or resource groups)
> >>
> >>C++ programmers:     contains Alice and Bob   (OR)
> >>Python programmers:  contains Bob and Charlie (OR)
> >>programmers:         contains C++ OR Python programmers
> >>programming team:    contains ONE C++ programmer AND TWO Python
> >>                      programmer
> >
> > I don't quite see where you are going, so let me try to map it to
> > kplato classes:
> > C++ programmers: KPTResourceGroup
> > 	Alice:	KPTResource
> > 	Bob:		KPTResource	Note
> > Python programmers: KPTResourceGroup
> > 	Bob:		KPTResource	Note
> > 	Charlie:	KPTResource
> >
> > programmers:	New super resource group, or note?
>
> Resource group
>
> > programming team: Is this also a new type of resource group, or
> > could it be constructed when user assigns resources to a task.
>
> It could be constructed when user assigns resources. There are some
> cases where you might want a combined resource. For example, you
> might want to specify a task could be done with resources A and B
> or with resources C and D. I guess that is unusual and it might be
> better to leave it at resource and resource group.
>
> If we want an algorithm that takes resources into account it needs
> to know (but not change) a list of Resources/ResourceGroups for
> each task. It would also create (or revise) a list of specific
> resources assigned to the task when it did the PERT/CPM
> calculations.
>
> > Note:
> > I have also thougt that one resource could be member of two or
> > more resource groups. Could this be solved by linking KPTResource
> > to KPTResourceGroup and thus avoid defining supergroups?
>
> I don't know what you mean by 'linking' but I think you're right. I
> was probably getting carried away by the idea of recursive
> programming on a class hierarchy.
Well, now each resource is owned by one resource group, I thought it 
could be fruitfull to have resources that could be member of more 
than one group, to take care of ie persons which have different 
skills (C++/python programming, for instance). But this will not give 
us combined resource teams, though.
>
> >>+ + +
> >>
> >>At the moment KPTResource contains time slots (appointments)
> >>structured as KPTAppointments much like a histogram (in the sense
> >>used by the GNU Scientific Library*). Essentially a histogram
> >>comprises a start time and set of pairs (duration: amount). I'd
> >>also add a total availability to allow for flexible resources.
> >> So, for example, if a day has eight hours, we'd have
> >
> > Do you mean to replace
> >         KPTDuration m_availableFrom;
> >         KPTDuration m_availableUntil;
> >         QPtrList<KPTDuration> m_workingHours;
> > with this new data structure?
>
> Probably better to put on the list of things that could be done
> eventually. I guess it would be better to start with code that
> handles resources more simply.
>
> >>+ + +
> >>
> >>I think it would be valuable for an Atom to have availability
> >> (and hence any resource can calcuate availability) but resources
> >> separately have appointment (or assignment) to a task. I think
> >> at the moment KPTAppointment has a task assigned (could be
> >> null?)).
> >>
> >>Essentially I envisage three levels of task<->resource
> >> information
> >>
> >>1. (a) Resource availability (appointments not assigned to a
> >> task) (b) Resource suitability (A task specifies a (combined)
> >> resource)
> >
> > Isn't this the result of user specifying that a task needs a
> > number of resources from one or more resource type(s) and/or
> > requestin use of specific resource(s)?
>
> If we don't use combined resources, yes.

-- 
Mvh,
Dag Andersen
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.