blob: dcc704eb940d8e56f21c90ef58b4a026cddddf50 (
plain)
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
|
package optimization.linesearch;
public class WolfeConditions {
/**
* Sufficient Increase number. Default constant
*/
/**
* Value for suficient curvature:
* 0.9 - For newton and quase netwon methods
* 0.1 - Non linear conhugate gradient
*/
int debugLevel = 0;
public void setDebugLevel(int level){
debugLevel = level;
}
public static boolean suficientDecrease(DifferentiableLineSearchObjective o, double c1){
double value = o.getOriginalValue()+c1*o.getAlpha()*o.getInitialGradient();
// System.out.println("Sufficient Decrease original "+value+" new "+ o.getCurrentValue());
return o.getCurrentValue() <= value;
}
public static boolean sufficientCurvature(DifferentiableLineSearchObjective o, double c1, double c2){
// if(debugLevel >= 2){
// double current = Math.abs(o.getCurrentGradient());
// double orig = -c2*o.getInitialGradient();
// if(current <= orig){
// return true;
// }else{
// System.out.println("Not satistfying curvature condition curvature " + current + " wants " + orig);
// return false;
// }
// }
return Math.abs(o.getCurrentGradient()) <= -c2*o.getInitialGradient();
}
}
|