a.figaro.algorithm.factored.VariableElimination
a.figaro.algorithm.sampling.Importance
a.figaro.language._
a.figaro.inuous.{Normal, Uniform}
a.figaro.library.atomic.discrete.Binomial
a.figaro.librarypound.If
val sunnyToday = Flip(0.2)
println(VariableElimination.probability(sunnyToday, true))
val language = Select(0.5 -> "Java",0.3 -> "Scala",0.2 -> "Python"
)
println(VariableElimination.probability(language, "Scala"))
val numSunnyDayInWeek = Binomial(7, 0.5)
println(VariableElimination.probability(numSunnyDayInWeek, 3))
val temperature = Normal(40, 100)
val greaterThan50 = (d: Double) => d > 50
println(Importance.probability(temperature, greaterThan50))
val temperature2 = Uniform(10, 81)
println(Importance.probability(temperature2, greaterThan50))
val sunnyToday = Flip(0.2)
val greetingToday = If(sunnyToday,Select(0.6 -> "Hello World!", 0.4 -> "Howdy, universe!"),Select(0.2 -> "Hello World!", 0.8 -> "Oh no, not again!")
)
println(VariableElimination.probability(greetingToday, "Hello World!"))sunnyToday.observe(true)
println(VariableElimination.probability(greetingToday, "Hello World!"))
val goodMood = Dist(0.2 -> Flip(0.6),0.8 -> Flip(0.2)
)
println(VariableElimination.probability(goodMood, true))
val sunnyTodayProbability = Uniform(0, 0.6)
val sunnyToday2 = Flip(sunnyTodayProbability)
println(Importance.probability(sunnyToday2, true))val tempMean = Normal(40, 36)
val temperature = Normal(tempMean, 100)
println(Importance.probability(temperature, (d: Double) => d > 50))
val sunnyDaysInMonth = Binomial(30, 0.2)
val getQuality = (i: Int) => if (i > 10) "good" else if (i > 5) "average" else "poor"
val monthQuality = Apply(sunnyDaysInMonth, getQuality)
println(VariableElimination.probability(monthQuality, "good"))val teamWinsInMonth = Binomial(5, 0.4)
val monthQuality2 = Apply(sunnyDaysInMonth, teamWinsInMonth,(days: Int, wins: Int) => {val x = days * winsif (x > 20) "good" else if (x > 10) "average" else "poor"})
println(VariableElimination.probability(monthQuality2, "good"))
val goodMood2 = Chain(monthQuality,(s: String) =>if (s == "good") Flip(0.9)else if (s == "average") Flip(0.6)else Flip(0.1)
)
println(VariableElimination.probability(goodMood2, true))val sunnyToday3 = Flip(0.2)
val goodMood3 = Chain(monthQuality, sunnyToday3,(quality: String, sunny: Boolean) => {(quality, sunny) match {case ("good", true) => Flip(0.9)case ("average", true) => Flip(0.7)case (_, true) => Flip(0.4)case ("good", false) => Flip(0.6)case ("average", false) => Flip(0.3)case (_, false) => Flip(0.05)}})
println(VariableElimination.probability(goodMood3, true))
val sunntDayInMonth = Binomial(30, 0.2)
val monthQuality = Apply(sunntDayInMonth,(i: Int) => if (i > 10) "good" else if (i > 5) "average" else "poor"
)
val goodMood = Chain(monthQuality,(s: String) => {if (s == "good") Flip(0.9)else if (s == "average") Flip(0.6)else Flip(0.1)})
println(VariableElimination.probability(goodMood, true))// 设置条件,会清楚之前所有的条件
sunntDayInMonth.setCondition((i: Int) => i > 8)
println(VariableElimination.probability(goodMood, true))// 添加条件
sunntDayInMonth.addCondition((i: Int) => i % 3 == 2)
println(VariableElimination.probability(goodMood, true))// 移除条件
veConditions()
println(VariableElimination.probability(goodMood, true))
goodMood.setConstraint((b: Boolean) => if (b) 0.5 else 1.0)
println(VariableElimination.probability(goodMood, true))val result1 = Flip(0.4)
val result2 = Flip(0.4)
val result3 = Flip(0.4)val allWins = Apply(result1, result2, result3,(w1: Boolean, w2: Boolean, w3: Boolean) => w1 && w2 && w3
)
println(VariableElimination.probability(allWins, true))def makeStreaky(r1: Element[Boolean], r2: Element[Boolean]): Unit = {val pair = Apply(r1, r2, (b1: Boolean, b2: Boolean) => (b1, b2))pair.setConstraint((bb: (Boolean, Boolean)) => if (bb._1 == bb._2) 1.0 else 0.5)
}makeStreaky(result1, result2)
makeStreaky(result2, result3)
println(VariableElimination.probability(allWins, true))
本文发布于:2024-02-05 04:48:29,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170724496163171.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |