views:

228

answers:

4

I'm working on a Java application which should allow users to optimize their daily schedule. For that, I need a framework that helps calculate optimal times for "tasks" taking note of:

  1. Required resources and resource usage limits
  2. Dependencies between tasks (can do with only F->S relations though)
  3. Earliest and latest start-finish times, slack times
  4. Baseline vs. actual times - allowing to report actual start and finish times, updating the rest of the tasks accordingly

Some clarifications: I am not looking for neither a framework to draw these gantts, nor a framework that deals with one specific problem domain (such as classrooms), and definitely not a framework that deals with thread scheduling.

Thanks!

A: 

This is a list or more or less relevant projects.

It appears that you want not a framework, but rather a complete solution that handles tasks events from their business perpective. Like for example JSF is a framework, but Alfresco is a CMS (system), which may use multiple frameworks to achieve a business goal.

That said, if the above list doesn't contain anything that fits you, you should use existing frameworks like JodaTime and JFreeChart and create your own task system.

Bozho
Unfortunately the list is not helpful. It only provides utilities to work on dates and calendars, or "schedules", but not "scheduling". For that matter, JodaTime helps me only slightly with mundane functions and JFreeChart is unneeded completely as I stated I do not need a visualization framework. The missing piece is scheduling tasks taking note of resources and dependencies.. Doing what MS Project is doing, for that matter, but slightly simpler and without the visualization.
Aviad Ben Dov
A: 

You could check for a project management software. It seems you need it written in java with the ability to modify the code. It really narrows down the list but I made a quick scan and I see at least 2 of them which could help (Endeavour and Project.net).

Damien
+3  A: 

I don't think there is a framework that will suit your needs out of the box. I know you said you're not looking for a job/thread scheduler, but I think your best bet is probably to roll your own optimization/prioritization code around a "dumb" job/thread scheduling framework like Quartz (or whatever you have in place). If you go with Quartz, the API can probably provide you with some information useful for items 3 and 4 of your optimization criteria. Additionally, Quartz has a job "priority" concept, so once you've computed the optimized priority, it should make scheduling the execution easy.

If you do find a framework that does what you ask, please post back here -- I'm sure there are others who could use something similar.

Segphault
I know about these scheduling frameworks; I was looking for a way that allows me to skip looking into their code and figuring out which bits and bolts I need... But if I'll have to, that's what I'll do.
Aviad Ben Dov
A: 

Perhaps what you need is something like evolutionary/genetic algorithm to generate an optimized schedule?

If yes, you may have a look at this Watchmaker Framework: http://watchmaker.uncommons.org/

With evolutionary/genetic algorithm, it randomly generate a pool of schedule. Your main focus will be defining the scoring criteria to evaluate each schedule generated. Then let it(the schedules generated) evolve from generation to generation until it is optimum enough for you.

ThiamTeck