Files
dev/script/tutorial/42_MaximumSearch.js
2018-04-17 12:05:48 +02:00

39 lines
1.7 KiB
JavaScript
Executable File

///////////////////////////////////////////////////////////////////////////////////////////////////
// Using bsearch(Binary Search) and hsearch(Hill Climbing Search) to find optimum
///////////////////////////////////////////////////////////////////////////////////////////////////
var FitnessFunction = Java.extend(ReadonlyRegisterBase)
add_device(new FitnessFunction("fitness") {
doRead: function () {
return 1000.0 - (Math.pow(ao1.take()-18, 2) + Math.pow(ao2.take()-6, 2))
},
}, true)
//Plot Fitness Function
r = ascan([ao1, ao2], fitness, [0.0,0.0], [21.0,26.0], [1.0, 1.0], title = "Fitness")
//Binary Search
strategy = "Normal" // or "Boundary" or "FullNeighborhood"
r = bsearch([ao1, ao2], fitness, [0.0,0.0], [21.0,26.0], [0.1, 0.1], maximum=true, strategy = strategy, latency = 0.01, relative=false, before_read=undefined, after_read=undefined, title = "Binary Search")
//Relative search:
//ao1.write(10.5); ao2.write(13.0)
//r = bsearch([ao1, ao2], fitness, [-10.5,-13.0], [10.5,13.0], [0.1, 0.1],maximum=true, strategy = strategy, latency = 0.01, relative = true, before_read=undefined, after_read=undefined, title = "Binary Search")
print ("--------------- Binary Search -----------------")
print (r)
print (r.print())
print (r.getRecords().length)
//Hill Climbing Search
ao1.write(10.5)
ao2.write(13.0)
r = hsearch([ao1, ao2], fitness,[0.0,0.0], [21.0,26.0], [1.0, 1.0], [0.1, 0.1], 1, maximum=true, latency = 0.01, relative=false, before_read=undefined, after_read=undefined, title = "Hill Climbing")
print ("--------------- Hill Climbing Search -----------------")
print (r)
print (r.print())
print (r.getRecords().length)