Description Usage Arguments Details Value See Also Examples
View source: R/GrammaticalExhaustiveSearch.R
Exhaustive Search within context-free grammar.
1 2 3 4 5 6 7 | GrammaticalExhaustiveSearch(grammar, evalFunc,
max.depth = GrammarGetDepth(grammar),
startSymb = GrammarStartSymbol(grammar),
max.len = GrammarMaxSequenceLen(grammar, max.depth, startSymb),
wrappings = 3,
terminationCost = NA,
monitorFunc = NULL)
|
grammar |
A |
evalFunc |
The evaluation function, taking an expression as its input and returning the cost (i.e., the score) of the expression. |
max.depth |
Maximum depth of recursion, in case of a cyclic grammar. By default it is limited to the number of production rules in the grammar. |
startSymb |
The symbol where the generation of a new expression should start. |
max.len |
Maximum length of the sequences to search.
By default it is determined by |
wrappings |
The number of times the function is allowed to wrap around |
terminationCost |
Target cost. If an expression with this cost or less is found, the algorithm terminates. |
monitorFunc |
A function that is called at each iteration. It can be used to monitor the search. |
GrammaticalExhaustiveSearch performs an exhaustive search,
iterating through all possible expressions that can be generated by the grammar,
to find the expression that minimises evalFunc.
The search terminates when all possible expressions are exhausted,
or when an expression with a cost less than terminationCost is discovered.
If a monitorFunc is given, it is called for each expression, and it receives a
list similar to the GrammaticalExhaustiveSearch's return value with the information
availabe for that expression.
bestExpression |
The Best expresssion. |
bestSequence |
Best expresssion's generating sequence. |
bestCost |
Best expresssion's cost. |
numExpr |
Number of evaluated expressions. |
In addition, the monitorFunc receives the following additional slots:
currentExpression |
The current expresssion. |
currentSequence |
Current expresssion's generating sequence. |
currentCost |
Current expresssion's cost. |
GrammarGetNextSequence,
GrammaticalEvolution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | library("gramEvol")
ruleDef <- list(expr = gsrule("<var><op><var>"),
op = gsrule("+", "-", "*"),
var = gsrule("A", "B"))
# Create a grammar object
grammarDef <- CreateGrammar(ruleDef)
# use exhaustive search to find the sequence for creating "B - A"
evalFunc <- function(expr) {
if (as.character(expr) == "B - A") {
return(0) # Minimum error
} else {
return(1) # maximum error
}
}
res <- GrammaticalExhaustiveSearch(grammarDef, evalFunc, terminationCost = 0)
print(res)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.