Genetic Scheduler

No algorithm description given

This is a work-in-progress to bulk-schedule meetings with a fixed number of time slots and meeting locations. It roughly aims to be a genetic approach to solving a Conference Scheduling bounty. If this algorithm can reliably generate such schedules, I'll throw together a simple wrapper to transform input and output to align with the bounty's expectations). Known issues: Recent change allows a mutation or crossover to accidentally delete meetings (i.e. not schedule all meetings) Initial population is completely random, and for large inputs, generates too many initial conflicts to resolve through the current genetic crossovers and mutations without a ridiculous number of iterations (i.e very very long time). Is not very effective at optimizing schedules Perf is mediocre and inconsistent --- Input: meetings_needed: an array of arrays of strings that identify people that need meetings scheduled. This algorithm will schedule a meeting for each of these groups of people. total_locations: the number of locations available. In the response, locations will be identified by a number between 0 and total_locations-1. total_slots: the number of time slots available. In the response, slots will be identified by a number between 0 and total_slots-1. unavailable: a JSON object mapping people to time slots that they are not available. Note, the algorithm will return an error if you specify any time slot that is greater than total_slots-1. Output: fitness: larger fitness implies a more ideal schedule. positive fitness implies the schedule has no conflicts. negative fitness implies one or more conflicts. The magnitude of fitness is a work in progress to optimize certain schedule characteristics. meetings.location: location id of a meeting. Will be between 0 and total_locations-1. meetings.slot: time slot id of a meeting. Will be between 0 and total_slots-1. meetings.people: the people scheduled for a particular meeting location and time slot. This field will be one of the meetings_needed groupings provided as input.

Tags
(no tags)

Cost Breakdown

0 cr
royalty per call
1 cr
usage per second
avg duration

Cost Calculator

API call duration (sec)
×
API calls
=
Estimated cost
per calls
for large volume discounts
For additional details on how pricing works, see Algorithmia pricing.

No permissions required

This algorithm does not require any special permissions.


To understand more about how algorithm permissions work, see the permissions documentation.

1. Type your input

2. See the result

Running algorithm...

3. Use this algorithm

curl -X POST -d '{{input | formatInput:"curl"}}' -H 'Content-Type: application/json' -H 'Authorization: Simple YOUR_API_KEY' https://api.algorithmia.com/v1/algo/anowell/GeneticScheduler/0.1.2
View cURL Docs
algo auth
# Enter API Key: YOUR_API_KEY
algo run algo://anowell/GeneticScheduler/0.1.2 -d '{{input | formatInput:"cli"}}'
View CLI Docs
import com.algorithmia.*;
import com.algorithmia.algo.*;

String input = "{{input | formatInput:"java"}}";
AlgorithmiaClient client = Algorithmia.client("YOUR_API_KEY");
Algorithm algo = client.algo("algo://anowell/GeneticScheduler/0.1.2");
AlgoResponse result = algo.pipeJson(input);
System.out.println(result.asJsonString());
View Java Docs
import com.algorithmia._
import com.algorithmia.algo._

val input = {{input | formatInput:"scala"}}
val client = Algorithmia.client("YOUR_API_KEY")
val algo = client.algo("algo://anowell/GeneticScheduler/0.1.2")
val result = algo.pipeJson(input)
System.out.println(result.asJsonString)
View Scala Docs
var input = {{input | formatInput:"javascript"}};
Algorithmia.client("YOUR_API_KEY")
           .algo("algo://anowell/GeneticScheduler/0.1.2")
           .pipe(input)
           .then(function(output) {
             console.log(output);
           });
View Javascript Docs
var input = {{input | formatInput:"javascript"}};
Algorithmia.client("YOUR_API_KEY")
           .algo("algo://anowell/GeneticScheduler/0.1.2")
           .pipe(input)
           .then(function(response) {
             console.log(response.get());
           });
View NodeJS Docs
import Algorithmia

input = {{input | formatInput:"python"}}
client = Algorithmia.client('YOUR_API_KEY')
algo = client.algo('anowell/GeneticScheduler/0.1.2')
print algo.pipe(input)
View Python Docs
library(algorithmia)

input <- {{input | formatInput:"r"}}
client <- getAlgorithmiaClient("YOUR_API_KEY")
algo <- client$algo("anowell/GeneticScheduler/0.1.2")
result <- algo$pipe(input)$result
print(result)
View R Docs
require 'algorithmia'

input = {{input | formatInput:"ruby"}}
client = Algorithmia.client('YOUR_API_KEY')
algo = client.algo('anowell/GeneticScheduler/0.1.2')
puts algo.pipe(input).result
View Ruby Docs
use algorithmia::*;

let input = {{input | formatInput:"rust"}};
let client = Algorithmia::client("YOUR_API_KEY");
let algo = client.algo('anowell/GeneticScheduler/0.1.2');
let response = algo.pipe(input);
View Rust Docs
Discussion
  • {{comment.username}}