首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Scala中使用Figaro时的com.cra.figaro.algorithm.NotATargetException

在Scala中使用Figaro时的com.cra.figaro.algorithm.NotATargetException
EN

Stack Overflow用户
提问于 2014-09-19 14:56:07
回答 1查看 142关注 0票数 1

当我试图运行我的代码时,我只是遇到了以下错误。我不明白我做错了什么。有什么建议吗?

代码语言:javascript
复制
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中有其他的代码正在工作,但是这个代码不能启动。

代码语言:javascript
复制
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()
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-19 15:24:10

我不熟悉figaro,但是查看ProbQueryAlgorithm.check的实现表明您指定的目标不是queryTargets的一部分。queryTargetsImportance/WeightedSampler的构造函数中初始化

代码语言:javascript
复制
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: _*) {
  ...
}

你试过这个吗?

代码语言:javascript
复制
val algorithm = Importance(bias, nextToss)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25936808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档