aibasel / machetli Goto Github PK
View Code? Open in Web Editor NEWLicense: GNU General Public License v3.0
License: GNU General Public License v3.0
evaluate
in Evaluator
get_successors
in SuccessorGenerator
This should make the code more consistent when defining the initial state and is necessary if we want to implement evaluators with fully-implemented evaluate(state)
methods.
Make Minimizer usable as command line program for simple use cases.
The implementation of the Parser
class provides the function add_pattern
passes on its input to the constructor of _Pattern
. However, said constructor breaks upon call as it does not expect these inputs.
probably easiest by using tarski instead of doing our own stuff
related to #60
The visitor pattern should do the recursion so that it doesn't need to be re-implemented in every inherited class.
write function for PDDL visitor body that takes a visitor and a name to replace
for recovering crashed experiments
do error handling in search, so we don't need to do it in every environment
Trying successor 403120/2131151 (18%) [======> ]
Instead of passing the evaluator as a Python object to the search, we want to require it as a stand-alone script and pass the file path to this script to the search. This works more cleanly in the grid environment, where the compute nodes don't have direct access to the classes defined in the main file.
The resulting constructor could be:
Run(command, input_file=None, time_limit=1800, memory_limit=None, log_output=None
)
This would reduce code redundancy. The passed environment object would then control whether the grid functions are invoked.
It might also be a good idea to rename the function from first_choice_hill_climbing
to search
, because this is simpler and currently, first-choice hill-climbing is the only implemented search algorithm for the Minimizer.
Currently, the add_pattern method of the parser class has an argument cmd_names
, which accepts one or multiple run object names (as, e.g., defined and used here). Storing the names of the runs inside a parser object creates an unnecessary coupling between a parser and the run(s). The parser does not need to know anything about the run(s) it should be used for.
Improvement suggestion: Remove the cmd_names
argument from add_pattern
and add a parsers
argument to the constructor of the run class. This way, each run has an internal list containing the parser(s) to be applied to its output.
disallow submitting the same job without asking because it overwrites data
A specialized option of the Run
class (e.g., FastDownwardRun
) could make life easier for the user when defining a FD run by providing an interface where the planner, the PDDL files, etc. could be provided as constructor arguments instead of passing the actual entire call string to the constructor.
remove functions that are no longer used
Users might want to generate successors by applying a combination of several successor generators. The Python itertools module could be helpful for this.
The installation of minimizer
in the virtual environment as described in the documentation does not copy the file minimizer/grid/slurm-array-job.template
. This leads to the provided example grid job (issue335_PDDL/grid_test.py
) to yield an error.
Level | Error(s) | Approach |
---|---|---|
evaluate function in main Python script |
OOT, OOM | If the order of successors is not important, set the result variable to False and output error information to the main script's log file. Else, output error information to main script's log file and abort search. |
SBATCH commands | Invalid data filled into template (error during array job submission) | Output error information to main script's log file and abort search. |
Bash script of array job | Invalid ulimit input, space in path |
Output error information to main script's log file and abort search. |
Main Python script interacting with Slurm | Array job randomly killed or not responding after defined amount of time | If the order of successors is not important, set the result variable to False and output error information to the main script's log file. Else, output error information to main script's log file and abort search. |
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.