Skip to content
Marc Romeyn edited this page Jul 20, 2015 · 1 revision

Models

In this section we describe the data schema of the algorithm. Most of the input is immutable as the actual assignment is based only on references. The data has a hierarchical structure. Each instance of the algorithm deals with one course at a time, and each course is a separate run of the solver.

Course

type Course = {
  jobId:     Int,
  settings:  Settings,
  endpoints: Endpoints,
  students:  List[Student],
  groups:    List[Group],
  skills:    List[String],   // optional
  weights:   {
    maximallyDiverse: Float, // optional
    evenlySkilled:    Float, // optional
    friendsAndFoes:   Float, // optional
    groupPreferences: Float  // optional
  } // optional
}

Settings

type Settings = {
  iterations:     Int,    // optional,
  initialMoves:   Int,    // optional,
  startingPoints: Int,    // optional,
  tabuSize:       Int,    // optional,
  diverse:        Boolean // optional
}

Endpoints

type Endpoints = {
  success: String, // URL
  failure: String  // URL
}

Student

type Student = {
  id:          Int,
  name:        String,               // optional
  mandatory:   Boolean,              // optional
  skills:      Map{String => Float}, // optional
  weights:     {
    friendsAndFoes:   Float, // optional
    groupPreferences: Float  // optional
  }, // optional
  preferences: Map{Int => Float},    // optional
  friends:     List[Int],            // optional
  foes:        List[Int]             // optional
}

Group

type Group = {
  id:        Int,
  minSize:   Int,
  maxSize:   Int,
  mandatory: Boolean,     // optional
  name:      String,      // optional
  skills:    List[String] // optional
}

Clone this wiki locally