fm.generate_fm_randomwalk {Rfmtool} | R Documentation |
Function for generating several k-additive fuzzy measure
Description
Generates num k-additive fuzzy measures in the standard or Mobius representation using random walk of length markov of stepsize step.
Usage
fm.generate_fm_randomwalk(num, n, kadd, markov, option, step, Fn, env)
Arguments
num |
Generated num random fuzzy measures stored consecutively in standard or cardinality ordering in the array v. |
n |
Number of inputs |
kadd |
kadd is the value of k-additivity, which is used for reducing the complexity of fuzzy measures. default value is kadd = n. 1 < kadd < n+1; if kdd=n - f.m. is unrestricted. The parameter kadd only matters for options 3 and 5 |
markov |
Number of Markov steps to take, the randomness increases with that number. |
option |
Option = 0 - normal, 1 convex (supermodular), 2 antibuoyant, 3 kadditive , 4 belief measure, 5 kadditive convex. The measure generated is in standard representation fo all options except 3,5. The parameter kadd only matters for options 3 and 5. In that case the measure is in more compact Mobius representation. |
step |
The maximum size of random steps (with respect to each value). The actual step is a random value up to Step. |
Fn |
The callback function to verify any additional conditions on generated FM. Provided by the user. if not NULL, is a callback function to perform additional check at every Markov step of the current set function, i.e., any extra conditions |
env |
Environment variable obtained from fm.Init(n). |
Value
output |
The output is named list with the first element v being the fuzzy measure and the second being the length of the array containing it |
Author(s)
Gleb Beliakov, Andrei Kelarev, Quan Vu, Daniela L. Calderon, Deakin University
Examples
Fn <- function(n,v){
out <- 0.0
for(i in 1:n) out<- out+v[i];
if(out>1) {
return(0)
} else
return(1)
}
env<-fm.Init(3)
step <- 0.0010
Option <- 3
n <- 3
fuzzymeasures <- fm.generate_fm_randomwalk(2, 3, 2, 1000, Option, step, Fn, env)
print(fuzzymeasures)
print(fuzzymeasures$length)