Line | |
---|
1 | function [f,err] = fmincon_funn(cbData,nRow,x,njdiff,dXjbase,reserved,inParam) |
---|
2 | |
---|
3 | persistent prob Af A bf b |
---|
4 | |
---|
5 | if nargin == 7 |
---|
6 | prob = inParam; |
---|
7 | ind = find(prob.map==0); |
---|
8 | Af = prob.A(ind,:); |
---|
9 | bf = prob.b(ind); |
---|
10 | A = spalloc(max(prob.map),size(prob.A,1),0); |
---|
11 | for i = 1:max(prob.map) |
---|
12 | ind = find(prob.map==i); |
---|
13 | A(i,ind) = prob.b(ind)'; |
---|
14 | end |
---|
15 | return |
---|
16 | end |
---|
17 | |
---|
18 | x = x(1:size(prob.A,2)); |
---|
19 | if nRow == -1 |
---|
20 | z = Af*x; |
---|
21 | f = full(log(bf'*exp(z))); |
---|
22 | else |
---|
23 | g = A*exp(prob.A*x); |
---|
24 | ind = find(g<1e-2); |
---|
25 | if ~isempty(ind) |
---|
26 | g(ind) = exp(log(1e-2)+(g(ind)-1e-2)/1e-2); |
---|
27 | end |
---|
28 | g = log(g); |
---|
29 | |
---|
30 | if length(prob.h) > 0 |
---|
31 | g = [log(prob.h) + prob.G*x;g]; |
---|
32 | end |
---|
33 | |
---|
34 | f = g(nRow+1); |
---|
35 | end |
---|
36 | err = 0; |
---|
Note: See
TracBrowser
for help on using the repository browser.