Algorithm to generate schedule/calendar of inter-dependent activities (Python, Java, any language is ok)

This project was awarded to andrewscm for $9 USD / hour.

Get free quotes for a project like this
Project Budget
$8 - $15 USD / hour
Total Bids
Project Description

Let me describe context of the problem:

We've several test-boxes (Server A, Server B, Server C, Server D). At any given time, one server is reserved for 'prod-fix'. That is, one server is exact replica of production server. While other three server are being used for testing.

We have projects targeting different release dates (may, june, july, august..). So, at the start of the year, we designate server for each release. For eg:

Server A will be used for prodfix may release, august release and december release

Server B will be used for july release, September release

and so on.

During a release cycle, the server has to go through several activities. At a high-level:

-. Env needs to be refreshed with latest code from production

- testing team needs to validate that env is setup correctly

- some db synch activities

- then we allow projects to start testing

- functional testing

- regression testing

- integration testing

and so on.

- finally, code is release to production

- right after production release, this server becomes 'prod-fix' because it has the latest code-base.

And the other server that was being used for production-support gets taken down, refreshed and readied for testing of another release and so on.

As you can imagine, we need to coordinate activities/schedule of each server and each release. So, currently we manually draw a calendar.

So, the task is to write a program/script:

that can take input of all the activities that need to be performed and then automatically generate a calendar.

For each activity, the user will specify:

1. activity name

2. Duration (business days and calendar days)

3. Order (should it occur before or after some other activity or can it happen in parallel?)

4. Day constraint (like it has to be done on a Monday of the week)

5. Also, a list of "holidays" (so holidays can be excluded from counting)

6. any specific date constraint for some activity (like this activity must be done on this date.. and accordingly rest of calendar would need to be adjusted).

7. Release Date (hard date when code from a particular release is released to production)

Based on this information, you'd draw up a calendar using all available servers (specified in admin) and generate a release calendar.

Calendar will show:

July release -> server A ->

mar 1 to mar 4: env refresh

mar 5 to mar 20: env validation

mar 21 to mar 25: deployment of test code

mar 26 to mar 30: functional testing

and so on...

Do you think you can help with this? I can share a sample calendar and explain more details over the phone.

*** I think the coding part is trivial; the work is more about thinking a proper (robust, smart, intelligent) algorithm utilizing so many constraints. ****

Awarded to:

Looking to make some money?

  • Set your budget and the timeframe
  • Outline your proposal
  • Get paid for your work

Hire Freelancers who also bid on this project

    • Forbes
    • The New York Times
    • Time
    • Wall Street Journal
    • Times Online