{"size": 1125, "ext": "scrbl", "max_stars_repo_path": "scribblings/pareto-frontier.scrbl", "max_stars_repo_name": "sorawee/pareto-frontier", "max_stars_repo_stars_event_min_datetime": "2021-09-27T14:49:20.000Z", "max_stars_repo_stars_event_max_datetime": "2021-09-27T14:49:20.000Z", "max_issues_repo_path": "scribblings/pareto-frontier.scrbl", "max_issues_repo_name": "sorawee/pareto-frontier", "max_issues_repo_issues_event_min_datetime": null, "max_issues_repo_issues_event_max_datetime": null, "max_forks_repo_path": "scribblings/pareto-frontier.scrbl", "max_forks_repo_name": "sorawee/pareto-frontier", "max_forks_repo_forks_event_min_datetime": null, "max_forks_repo_forks_event_max_datetime": null}
{"max_stars_count": 1, "max_issues_count": null, "max_forks_count": null, "avg_line_length": 33.0882352941, "max_line_length": 98, "alphanum_fraction": 0.5982222222}
#lang scribble/manual
@require[scribble/example
         @for-label[pareto-frontier
                    racket/base
                    racket/list
                    racket/contract]]

@(define evaluator (make-base-eval))
@(evaluator '(require pareto-frontier
                      racket/list))

@title{pareto-frontier}
@author[@author+email["Sorawee Porncharoenwase" "sorawee.pwase@gmail.com"]]

@defmodule[pareto-frontier]

This library provides functions to compute the Pareto frontier set.

@defproc[(pareto-frontier-3 [xs list?]
                            [first-key (-> any/c any/c)]
                            [second-key (-> any/c any/c)]
                            [third-key (-> any/c any/c)])
         list?]{
  Computes the three dimensional Pareto frontier of @racket[xs]
  according to three objectives: @racket[first-key], @racket[second-key], and @racket[third-key].
  In our formulation, if @racket[a] is less then @racket[b], then @racket[a] dominates @racket[b].

  @examples[#:eval evaluator
    (pareto-frontier-3
     (list (list 1 9 3) (list 2 9 4) (list 10 8 10))
     first second third)
  ]
}
