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
|
// Example where user provides gradient of the constraints
function y=fun(x)
y=x(1)*x(1)+x(2)*x(2);
endfunction
x0 = [1,2];
A=[1,1 ; 1,1/4 ; 1,-1 ; -1/4,-1 ; -1,-1 ; -1,1];
b=[2;1;2;1;-1;2];
Aeq = [1,3]
beq= [5]
lb = [0 0]
ub = [2 1.5]
function [c,ceq]=nlc(x)
c = [x(1)^2 - x(2)^2 + 0.5 , x(1)^2 + x(2)^2 - 2.5];
ceq = [];
endfunction
//Gradient of Non-Linear Constraints
function [cg,ceqg] = cGrad(x)
cg=[2*x(1) , -2*x(2); 2*x(1) , 2*x(2)];
ceqg=[];
endfunction
options = list("MaxIter", [150], "CpuTime", [500], "GradCon", cGrad)
//Output
//Optimal Solution Found.
// hessian =
//
// 3353468.3 3.95D-323
// 0. 0.
// gradient =
//
// 1.0000000 3.
// lambda =
//
// lower: [1.818D-08,6.061D-09]
// upper: [6.061D-09,0.6917463]
// ineqlin: [0.3458731,7.273D-08,3.030D-09,3.463D-09,9.091D-09,9.091D-09]
// eqlin: -2.2520096
// ineqnonlin: [6.061D-09,0.9061364]
// eqnonlin: [0x0 constant]
// output =
//
// Iterations: 20
// Cpu_Time: 0.34
// Objective_Evaluation: 23
// Dual_Infeasibility: 2.793D-09
// Message: "Optimal Solution Found"
// exitflag =
//
// 0
// fopt =
//
// 2.5
// x0pt =
//
// 0.5000000
// 1.5
[x0pt,fopt,exitflag,gradient,hessian] = intfmincon(f,x0,intcon, A, b, Aeq, beq, lb, ub, nlc, options)
|