Optimise Europython competition

Discussion in 'Python' started by Jacob Hallen, May 15, 2005.

  1. Jacob Hallen

    Jacob Hallen Guest

    A classic dilemma for conferences is that if you have many tracks,
    you may find that all of a sudden, a room is swamped, and there is
    a queue of people wanting to get in. Another problem is that you
    risk scheduling talks against each other that have a very large
    set of interested people in common.

    At Europython we are this year going to try a new way of scheduling,
    in order to reduce these problems. Before the schedule is made, we
    will give all attendees the opportunity to register what talks they
    are most interested in. We then want to make a schedule that is
    optimised based on these data.

    Since I am no expert in optimising algorithms of this type, and since
    the time I have available for these things is limited, I'm turning to
    the readers of c.l.p and python-logic for help.

    I'm offering the following bounty for a working solution (in Python):

    - Free attendance at this years Europython, as a guest of honour
    - A Europython T-shirt in a limited special edition
    - Fame and gratitude from conference attendees who get better scheduling

    The winner of the bounty is the person who scores most points, according
    to the criteria below. If we get more than one solution that does good
    optimisation, we will award more than one bounty.

    Here are the parameters:

    1. There are 10 tracks with between 1 and 30 talks in each track.
    You may not schedule two talks in the same track against each other,
    unless there is more talks than available calendar time.

    2. A track should be continuous. Each track that is continuous gives you
    10 points.

    3. We expect about 300 attendees. About half of them are expected to
    register their interests. Interests may range from a single talk
    to more than half of all the talks. You get one point for each
    talk an attendee can attend out of the ones the attendee has registered
    interest in.

    4. Talks are of varying lengths. Lengths can be 30, 45, 60 and 90 minutes.
    The large majority of talks are 30 minutes. Only a very few are 45
    minutes.

    5. Rooms come in different sizes
    Room A has 180 seats
    Room B has 140 seats
    Room C has 140 seats
    Room D has 70 seats
    Room E has 70 seats

    Room A-D should be scheduled throughout the conference while room E
    is extra expansion space, only to be used when absolutely necessary.

    For every person scheduled above (Room capacity * (Number of responding
    attendees / Total number of attendees)) you get one point taken off
    your score.

    6. There are a total of 10 90-minute time blocks.

    Day 1: 09:00
    Day 1: 11:00
    Day 1: 14:00
    Day 1: 16:00

    Day 2: 09:00
    Day 2: 11:00
    Day 2: 14:00
    Day 2: 16:00

    Day 3: 09:00
    Day 3: 11:00

    A track should not change room in the middle of a time block. Doing
    so reduces your score by 50 points.

    7. Input data
    You get your input data in the form of a list of tuples; one tuple
    per talk.

    Each tuple looks like this:

    (<talk id>, <talk length>, <track id>, [list of interested attendees])

    Talk length is an integer, all other items are strings.

    8. Output data
    You should supply your output data in the form of a list of tuples; one
    tuple per talk.

    Each tuple should look like this:

    (<talk id>, <room>, <day>, <starting time>)

    Talk id should be the same as in the input. Room should be a one letter
    string with a value in the range A-E. Day should be a one letter string
    in the range 1-3. Starting time should be a string on the form HH:MM,
    in the 24 hour clock.

    Solutions should be sent by email to no later than
    1 June 2005. Currently we haven't started gathering real data, but there should be some available for real world testing before 1 June.

    --
     
    Jacob Hallen, May 15, 2005
    #1
    1. Advertising

  2. Jacob Hallen wrote:
    > 2. A track should be continuous. Each track that is continuous gives you
    > 10 points.


    What exactly do you mean by "continuous track"?

    Regards

    Carl Friedrich
     
    Carl Friedrich Bolz, May 16, 2005
    #2
    1. Advertising

  3. Jacob Hallen

    Jacob Hallen Guest

    In article <>,
    Carl Friedrich Bolz <> wrote:
    >Jacob Hallen wrote:
    >> 2. A track should be continuous. Each track that is continuous gives you
    >> 10 points.

    >
    >What exactly do you mean by "continuous track"?


    Continuous means that from the time of the first talk in the track until
    all talks in the track have been given, there will be a talk from the track
    in each time slot (in exceptional cases there can be an empty time slot
    inserted to make things fit, but usually that is not needed.)

    The main reason for this rule is that some people only come for a few
    talks in a specific track, and they don't want to have to stay 3 days
    because we scheduled some on Monday morning and the rest on Wednesday
    morning.

    Last year we even had 2 people driving down from Norway, paying the
    270 Euro on-site fee, just to listen to a single talk. They then had
    a chat with the speaker and went home, quite happy with their conference.

    Jacob Hallén

    --
     
    Jacob Hallen, May 23, 2005
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. -
    Replies:
    3
    Views:
    401
  2. Jon Harrop

    Optimise my ray tracer

    Jon Harrop, Jun 2, 2005, in forum: Java
    Replies:
    85
    Views:
    2,391
    Roedy Green
    Jun 26, 2005
  3. Markus
    Replies:
    3
    Views:
    317
    Georg Brandl
    Jul 25, 2006
  4. Sid
    Replies:
    24
    Views:
    559
    Steve Leach
    Aug 27, 2004
  5. Bruno Desthuilliers

    How to optimise this code?

    Bruno Desthuilliers, Aug 20, 2007, in forum: Python
    Replies:
    10
    Views:
    443
    Hyuga
    Aug 22, 2007
Loading...

Share This Page