Documentation

LeanPool.GrahamLPT.Defs

Identical-machine scheduling #

Machine loads and makespans, list schedules with arbitrary tie breaking, LPT schedules, and the two families attaining Graham's bounds. Processing times are real numbers; nonnegativity and positivity are imposed by the individual results that require them.

def GrahamLPT.loadBefore {m n : ℕ} (p : Fin n → ℝ) (σ : Fin n → Fin m) (k : ℕ) (i : Fin m) :

The load of machine i from the jobs of index below k under the assignment σ.

Equations
Instances For
    def GrahamLPT.load {m n : ℕ} (p : Fin n → ℝ) (σ : Fin n → Fin m) (i : Fin m) :

    The load of machine i: the total length of the jobs assigned to it.

    Equations
    Instances For
      def GrahamLPT.makespan {m n : ℕ} [NeZero m] (p : Fin n → ℝ) (σ : Fin n → Fin m) :

      The makespan of an assignment: its largest machine load.

      Equations
      Instances For
        def GrahamLPT.optMakespan (m : ℕ) [NeZero m] {n : ℕ} (p : Fin n → ℝ) :

        The optimal makespan: the least makespan over all assignments of the n jobs to the m machines.

        Equations
        Instances For
          def GrahamLPT.IsListSchedule {m n : ℕ} (p : Fin n → ℝ) (σ : Fin n → Fin m) :

          A list schedule in the index order: each job k goes to a machine whose load from the jobs before k is least, under any tie-breaking.

          Equations
          Instances For
            def GrahamLPT.IsLPTSchedule {m n : ℕ} (p : Fin n → ℝ) (σ : Fin n → Fin m) :

            An LPT schedule: a list schedule of the jobs taken in some nonincreasing order of length.

            Equations
            Instances For
              def GrahamLPT.grahamJobs (m : ℕ) :
              Fin (2 * m + 1) → ℝ

              Graham's instance for LPT: the 2m + 1 lengths 2m − 1, 2m − 1, 2m − 2, 2m − 2, …, m + 1, m + 1, m, m, m.

              Equations
              Instances For
                def GrahamLPT.grahamOrder (m : ℕ) (i : Fin (2 * m + 1)) :
                Fin (2 * m + 1)

                The order 2m − 1, …, m + 1, m, m, 2m − 1, …, m + 1, m of Graham's instance, as the job at each position: position i < m − 1 holds job 2i (length 2m − 1 − i), positions m − 1 and m hold jobs 2m − 2 and 2m − 1 (length m), position m + 1 + a with a < m − 1 holds job 2a + 1 (length 2m − 1 − a), and position 2m holds job 2m (length m).

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  def GrahamLPT.unitJobs (m : ℕ) :
                  Fin (m * (m - 1) + 1) → ℝ

                  Graham's instance for list scheduling: m(m − 1) unit jobs followed by one job of length m.

                  Equations
                  Instances For