最適化アルゴリズム-二分法検索
2108 ワード
二分法で検索して、Edwinの「最適化導論」第四版を参考にして、アルゴリズムはgo言語で実現します.
/*****************************************
* FileName : binary_search.go
* Author : fredric
* Date : 2017.09.01
* Note :
* History :
*****************************************/
package search
import(
"fmt"
)
func _get_differential(x float64) float64 {
// (x - 0.7) * (x - 0.7)
// 2 * (x - 0.7)
return 2 * (x - 0.7)
}
/*
*
* [a0, b0] , (a0 + b0)/2
* 0, ; 0 ;=0
*/
func DoBinarySearch(){
a0 := 0.0
b0 := 2.0
delta := 0.05
for b0 - a0 >= delta{
mid := (b0 + a0)/2.0
diff := _get_differential(mid)
if diff > 0{
b0 = mid
}else if diff < 0 {
a0 = mid
}else{
break;
}
}
fmt.Printf("a0=%f, b0=%f
", a0, b0)
}