-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsleep.java
More file actions
101 lines (73 loc) · 3.35 KB
/
sleep.java
File metadata and controls
101 lines (73 loc) · 3.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
//reason for sleeping: 1. rowing practice and 2. boring
var anonymous_util = {"rowing":0,"boring":0.5} //Mr Tod wants to improve
var direct_util = {"rowing":0,"boring":-1} //It will be awkward
//////////////////////////////////////////////////////////
var sleep = function(boring,rowing) {
// proability of going to sleep as a function of boringness and whether I went rowing
if (boring & rowing){
return true
}
if (rowing){
return flip(0.5)
}
if (boring){
return flip(0.8)
}
return false
}
/////////////////////////////////////////////////////////////
var MyWorldModel = function() {
var boring = true
var rowing = true
return sleep(boring,rowing)
}
var ToddModel = function() {
var boring = flip(0.1)// he thinks he is not boring
var rowing = flip(0.1)// probabity a given person is a rower (or some other sport?) is 0.1
return sleep(boring,rowing)
}
var boringToddModel = function() {
var boring = true // you tell him he is boring
var rowing = flip(0.1)// probabity a given person is a rower (or some other sport?) is 0.1
return sleep(boring,rowing)
}
var rowingToddModel = function() {
var boring = flip(0.1)// he thinks he is not boring
var rowing = true// "I have rowing practice"
return sleep(boring,rowing)
}
//////////////////////////////////////////////////////////////
var distOrigTodd = Infer({method: 'MCMC', kernel: 'MH', samples: 60000},
ToddModel)
var distBoringTodd = Infer({method: 'MCMC', kernel: 'MH', samples: 60000},
boringToddModel)
var explanation_score_boring = Math.exp(distBoringTodd.score(true))- Math.exp(distOrigTodd.score(true))
console.log('boring pragmatic explanation score:')
console.log(explanation_score_boring)
var distOrigTodd = Infer({method: 'MCMC', kernel: 'MH', samples: 60000},
ToddModel)
var distRowingTodd = Infer({method: 'MCMC', kernel: 'MH', samples: 60000},
rowingToddModel)
var explanation_score_rowing = Math.exp(distRowingTodd.score(true))- Math.exp(distOrigTodd.score(true))
console.log('rowing pragmatic explanation score:')
console.log(explanation_score_rowing)
var relevance_score = {"boring": explanation_score_boring,"rowing": explanation_score_rowing}
/////////////////////////////////////////////////////////////
var softmax = function(scores) {
var maxScore = Math.max.apply(null, scores)
var expScores = map(function(score) { return Math.exp(score - maxScore) }, scores) // Subtract max for numerical stability
var sumExpScores = sum(expScores)
return map(function(expScore) { return expScore / sumExpScores }, expScores)
}
// Example scores (replace with actual computed scores)
var relevance_scores = [relevance_score["boring"], relevance_score["rowing"]] // Replace with your relevance scores
var util = [anonymous_util["boring"], anonymous_util["rowing"]] // Replace with your utility scores
var combinedScores = map2(function(r, u) { return 5*u + r; }, relevance_scores, util)
var softmaxProbabilities = softmax(combinedScores)
console.log(softmaxProbabilities)
// direct
var relevance_scores = [relevance_score["boring"], relevance_score["rowing"]] // Replace with your relevance scores
var util = [direct_util["boring"], direct_util["rowing"]] // Replace with your utility scores
var combinedScores = map2(function(r, u) { return 2.5*u + r; }, relevance_scores, util)
var softmaxProbabilities = softmax(combinedScores)
console.log(softmaxProbabilities)