Skip to content

Commit

Permalink
chore: populate the repository (#1)
Browse files Browse the repository at this point in the history
  • Loading branch information
triceo authored Mar 14, 2024
1 parent 733c525 commit f025690
Show file tree
Hide file tree
Showing 2,726 changed files with 4,113,537 additions and 0 deletions.
6 changes: 6 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: "maven" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
66 changes: 66 additions & 0 deletions .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: Test coverage

on:
# Enables the workflow to run on PRs from forks;
# token sharing is safe here, because enterprise is a private repo and therefore fully under our control.
pull_request_target:
branches: [main, '*.x']
types:
- opened
- reopened
- synchronize
paths-ignore:
- 'LICENSE*'
- '.gitignore'
- '**.md'
- '**.adoc'
- '*.txt'

jobs:
build:
runs-on: ubuntu-latest
concurrency:
group: pr-${{ github.event_name }}-${{ github.head_ref }}
cancel-in-progress: true
timeout-minutes: 120
steps:
- name: Setup Temurin 21 and Maven
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: 'maven'

# Clone timefold-solver
- name: Checkout timefold-solver
uses: actions/checkout@v4
with:
repository: TimefoldAI/timefold-solver
path: ./timefold-solver
- name: Quickly build timefold-solver
working-directory: ./timefold-solver
shell: bash
run: mvn -B -Dquickly clean install

# Clone timefold-solver-enterprise
- name: Checkout timefold-solver-enterprise
uses: actions/checkout@v4
with:
repository: TimefoldAI/timefold-solver-enterprise
token: ${{ secrets.JRELEASER_GITHUB_TOKEN }} # Safe; only used to clone the repo and not stored in the fork.
path: ./timefold-solver-enterprise
- name: Quickly build timefold-solver-enterprise
working-directory: ./timefold-solver-enterprise
shell: bash
run: mvn -B -Dquickly clean install

# Clone timefold-solver-benchmarks
- name: Checkout timefold-solver-benchmarks
uses: actions/checkout@v4
with:
repository: TimefoldAI/timefold-solver-benchmarks
path: ./timefold-solver-benchmarks
- name: Build and test timefold-solver-benchmarks
working-directory: ./timefold-solver-benchmarks
shell: bash
run: mvn -B clean verify
60 changes: 60 additions & 0 deletions .github/workflows/turtle.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: Turtle Tests

on:
schedule:
- cron: '0 2 * * 6' # Every Saturday at 2am UTC

jobs:
test:
concurrency:
group: turtle-${{ matrix.example }}
cancel-in-progress: true
runs-on: ubuntu-latest
strategy:
matrix:
example: [cloudbalancing, conferencescheduling, curriculumcourse, examination, flightcrewscheduling, machinereassignment, meetingscheduling, nurserostering, pas, projectjobscheduling, taskassigning, tennis, travelingtournament, tsp, vehiclerouting]
steps:
- name: Setup Temurin 21 and Maven
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: 'maven'

# Clone timefold-solver
- name: Checkout timefold-solver
uses: actions/checkout@v4
with:
repository: TimefoldAI/timefold-solver
path: ./timefold-solver
- name: Quickly build timefold-solver
working-directory: ./timefold-solver
shell: bash
run: mvn -B -Dquickly clean install

# Clone timefold-solver-enterprise
- name: Checkout timefold-solver-enterprise
uses: actions/checkout@v4
with:
repository: TimefoldAI/timefold-solver-enterprise
token: ${{ secrets.JRELEASER_GITHUB_TOKEN }} # Safe; only used to clone the repo and not stored in the fork.
path: ./timefold-solver-enterprise
- name: Quickly build timefold-solver-enterprise
working-directory: ./timefold-solver-enterprise
shell: bash
run: mvn -B -Dquickly clean install

# Clone timefold-solver-benchmarks
- name: Checkout timefold-solver-benchmarks
uses: actions/checkout@v4
with:
repository: TimefoldAI/timefold-solver-benchmarks
path: ./timefold-solver-benchmarks
- name: Build and test timefold-solver-benchmarks
working-directory: ./timefold-solver-benchmarks
shell: bash
run: mvn clean install -DskipTests

- name: Run the test per example
working-directory: ./timefold-solver-benchmarks/examples
run: mvn -B -Dai.timefold.solver.benchmarks.examples.turtle=${{matrix.example}} -Dai.timefold.solver.benchmarks.examples.turtle.runTimeLimitMinutes=300 test
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
*.log
hs_err_pid*
/.idea
/target
/local
*.iml
dependency-reduced-pom.xml
/results
/async-profiler*/**/*
32 changes: 32 additions & 0 deletions README.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
= Select Benchmarks for Timefold Solver

This repository is a continuous work in progress, and it will change as our needs change.
There are no guarantees that anything in this repository will still be here tomorrow,
or that it will look anything like it looks today,
or that it will work against any particular version of the Solver.

== Usage

To run the benchmarks, you need access to Timefold Solver Enterprise Edition.
Having acquired that, run any of the benchmarks:

[source,shell]
----
./run-coldstart.sh
./run-scoredirector.sh
----

In the default configuration, the benchmark will run for many hours and fully occupy 1 CPU.
Only run the benchmark on a quiet machine, otherwise results will be skewed.

=== Async profiler

The benchmark can optionally produce flame graphs using https://github.com/async-profiler/async-profiler[Async Profiler].
On the first run, if Async Profiler is not found, a message will be logged.
Let the message point you in the right direction.

== Configuring the benchmark

The benchmark is configured using the `coldstart-benchmark.properties` and `scoredirector-benchmark.properties` file.
The file is well-commented, and should be self-explanatory.
Modify it to suit your needs.
21 changes: 21 additions & 0 deletions coldstart-benchmark.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Not including this file with your benchmarks will execute all examples with the default values.

# Possible values: conference_scheduling,tsp,vehicle_routing
example=conference_scheduling,tsp,vehicle_routing

# How many forks to run each example with.
# Default is 160.
#forks=160

# How many warmup iterations to run each example with.
# Default is 0.
#warmup_iterations=0

# How many measurement iterations to run each example with.
# Default is 1.
#measurement_iterations=1

# Ratio of benchmark score error to benchmark score above which warnings will be output.
# The higher the threshold, the less reliable the benchmark score is.
# Default is 0.04 (±4%).
#relative_score_error_threshold=0.04
Loading

0 comments on commit f025690

Please sign in to comment.