Added Levenberg-Marquardt algorithm and svd Golub-Kahan #513
@ -21,7 +21,7 @@ fun streamLm(lm_func: KFunction3<MutableStructure2D<Double>, MutableStructure2D<
|
|||||||
var example_number = startData.example_number
|
var example_number = startData.example_number
|
||||||
var p_init = startData.p_init
|
var p_init = startData.p_init
|
||||||
var t = startData.t
|
var t = startData.t
|
||||||
val y_dat = startData.y_dat
|
var y_dat = startData.y_dat
|
||||||
val weight = startData.weight
|
val weight = startData.weight
|
||||||
val dp = startData.dp
|
val dp = startData.dp
|
||||||
val p_min = startData.p_min
|
val p_min = startData.p_min
|
||||||
@ -46,18 +46,19 @@ fun streamLm(lm_func: KFunction3<MutableStructure2D<Double>, MutableStructure2D<
|
|||||||
)
|
)
|
||||||
emit(result.result_parameters)
|
emit(result.result_parameters)
|
||||||
delay(launchFrequencyInMs)
|
delay(launchFrequencyInMs)
|
||||||
p_init = generateNewParameters(p_init, 0.1)
|
p_init = result.result_parameters
|
||||||
|
y_dat = generateNewYDat(y_dat, 0.1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun generateNewParameters(p: MutableStructure2D<Double>, delta: Double): MutableStructure2D<Double>{
|
fun generateNewYDat(y_dat: MutableStructure2D<Double>, delta: Double): MutableStructure2D<Double>{
|
||||||
val n = p.shape.component1()
|
val n = y_dat.shape.component1()
|
||||||
val p_new = zeros(ShapeND(intArrayOf(n, 1))).as2D()
|
val y_dat_new = zeros(ShapeND(intArrayOf(n, 1))).as2D()
|
||||||
for (i in 0 until n) {
|
for (i in 0 until n) {
|
||||||
val randomEps = Random.nextDouble(delta + delta) - delta
|
val randomEps = Random.nextDouble(delta + delta) - delta
|
||||||
p_new[i, 0] = p[i, 0] + randomEps
|
y_dat_new[i, 0] = y_dat[i, 0] + randomEps
|
||||||
}
|
}
|
||||||
return p_new
|
return y_dat_new
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun main(){
|
suspend fun main(){
|
||||||
|
Loading…
Reference in New Issue
Block a user