当我试图运行我的代码时,我只是遇到了以下错误。我不明白我做错了什么。有什么建议吗?
com.cra.figaro.algorithm.NotATargetException
at com.cra.figaro.algorithm.ProbQueryAlgorithm$class.check(ProbQueryAlgorithm.scala:68)
at com.cra.figaro.algorithm.ProbQueryAlgorithm$class.probability(ProbQueryAlgorithm.scala:138)
at com.cra.figaro.algorithm.sampling.WeightedSampler.probability(WeightedSampler.scala:25)
at prob1.BetaBinomial$.runner1(BetaBinomial.scala:24)我用runner1("HHHHTHHHHHHTHHTHHHTHH")在SBT中执行,我在figaro中有其他的代码正在工作,但是这个代码不能启动。
package prob1
import com.cra.figaro.library.atomic.continuous.Beta
import com.cra.figaro.library.atomic.discrete.Binomial
import com.cra.figaro.language.Flip
import com.cra.figaro.algorithm.sampling.Importance
object BetaBinomial {
def runner1(data: String){
val outcomes = data
val numTosses = outcomes.length
val numObservedHeads = outcomes.count((c: Char) => c == 'H')
val bias = Beta(2,5)
val numberOfHeads = Binomial(numTosses, bias)
val nextToss = Flip(bias)
numberOfHeads.observe(numObservedHeads)
val algorithm = Importance(bias)
algorithm.start()
Thread.sleep(1000)
algorithm.stop()
//This is where i get the error
val probHeads = algorithm.probability(nextToss, true)
println("Probability of heads = " + probHeads)
algorithm.kill()
numberOfHeads.unobserve()
}
}发布于 2014-09-19 15:24:10
我不熟悉figaro,但是查看ProbQueryAlgorithm.check的实现表明您指定的目标不是queryTargets的一部分。queryTargets在Importance/WeightedSampler的构造函数中初始化
abstract class WeightedSampler(override val universe: Universe, targets: Element[_]*) extends ProbQueryAlgorithm with Sampler {
lazy val queryTargets = targets.toList
...
}
abstract class Importance(universe: Universe, targets: Element[_]*)
extends WeightedSampler(universe, targets: _*) {
...
}你试过这个吗?
val algorithm = Importance(bias, nextToss)https://stackoverflow.com/questions/25936808
复制相似问题