contrib/gdl-benchmark/run-temperance.ros @ 9da17791e5da
Add benchmarking package and setup instructions
| author | Steve Losh <steve@stevelosh.com> |
|---|---|
| date | Wed, 24 Aug 2016 14:45:17 +0000 |
| parents | 7514865459fd |
| children | 45622a0c4e96 |
#!/bin/sh #|-*- mode:lisp -*-|# #| exec ros -Q -- $0 "$@" |# ;;;; Dependencies ------------------------------------------------------------- (ql:quickload :uiop :silent t) (ql:quickload :unix-opts :silent t) (ql:quickload :split-sequence :silent t) (ql:quickload :losh :silent t) (ql:quickload :temperance :silent t) ;;;; Package ------------------------------------------------------------------ (defpackage #:temperance.contrib.gdl-benchmark (:use #:cl #:losh #:temperance.quickutils #:temperance)) (in-package #:temperance.contrib.gdl-benchmark) ;;;; Benchmarking ------------------------------------------------------------- (defun run (modes limit gdl-file trace-file) (print modes) (print limit) (print gdl-file) (print trace-file)) ;;;; CLI ---------------------------------------------------------------------- (defun program-name () ;; dammit roswell (let ((ros-opts (uiop:getenv "ROS_OPTS"))) (if ros-opts (read-from-string (second (assoc "script" (let ((*read-eval*)) (read-from-string ros-opts)) :test 'equal))) (first (opts:argv))))) (opts:define-opts (:name :help :description "print this help text" :short #\h :long "help") (:name :verbose :description "verbose output" :short #\v :long "verbose")) (defparameter *required-options* (format nil "Required parameters: SEARCH-MODES A space-separated list of one or more of {dfs, fdfs, mc}. LIMIT A positive integer denoting the playclock limit (for dfs/mc) or depth limit (for fdfs). GDL-FILE Path to the GDL file to run. Does NOT need the version with the extra base propositions. TRACE-FILE Path to the corresponding trace file.")) (defparameter *verbose* nil) (defun usage () (let ((prog (program-name))) (opts:describe :prefix (format nil "~A - benchmark Temperance for GDL reasoning" prog) :suffix *required-options* :usage-of prog :args "SEARCH-MODES LIMIT GDL-FILE TRACE-FILE"))) (defun die (message &rest args) (apply #'format *error-output* message args) #+sbcl (sb-ext:exit :code 1) #-sbcl (quit)) (defun main (&rest argv) (block nil (multiple-value-bind (options arguments) (opts:get-opts argv) (setf *verbose* (getf options :verbose)) (when (or (getf options :help) (not (= 4 (length arguments)))) (usage) (return)) (destructuring-bind (modes limit gdl-file trace-file) arguments (run (split-sequence:split-sequence #\space modes :remove-empty-subseqs t) (handler-case (parse-integer limit) (parse-error (e) (declare (ignore e)) (die "ERROR: limit '~A' is not an integer~%" limit))) gdl-file trace-file)))))