source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/opt/yalmip/modules/global/decide_branch_variables.m @ 37

Last change on this file since 37 was 37, checked in by (none), 14 years ago

Added original make3d

File size: 1.7 KB
Line 
1function vars = decide_branch_variables(p)
2
3if size(p.bilinears,1)==0
4    if p.K.s(1)>0
5        if any(p.K.s>p.K.rank)
6            vars = p.linears;
7            return
8        end
9    end
10end
11
12if p.options.bmibnb.lowrank==0
13    nonlinear = find(~(sum(p.monomtable~=0,2)==1 & sum(p.monomtable,2)==1));
14    vars      =  find(sum(abs(full(p.monomtable(nonlinear,:))),1));
15    if ~isempty(p.evalVariables)
16        temp = [];
17        for i = 1:length(p.evalMap)
18            temp = [temp p.evalMap{i}.variableIndex];
19        end
20        vars = union(vars,temp);
21    end
22else
23    % Try to find a bi-partite structure
24    pool1 = p.bilinears(1,2);
25    pool2 = p.bilinears(1,3);
26   
27    for i = 2:size(p.bilinears,1)
28        v1 = p.bilinears(i,2);
29        v2 = p.bilinears(i,3);
30        if v1==v2
31            % We are fucked
32            pool1 = [pool1 v1];
33            pool2 = [pool2 v2];
34        else
35            if ismember(v1,pool1)
36                pool2 = [pool2 v2];
37            elseif ismember(v1,pool2)
38                pool1 = [pool1 v2];
39            elseif ismember(v2,pool1)
40                pool2 = [pool2 v1];
41            elseif ismember(v2,pool2)
42                pool1 = [pool1 v1];
43            else
44                % No member yet
45                pool1 = [pool1 v1];
46                pool2 = [pool2 v2];
47            end
48        end
49    end
50    pool1 = unique(pool1);
51    pool2 = unique(pool2);
52    if isempty(intersect(pool1,pool2))
53        if length(pool1)<=length(pool2)
54            vars = pool1;
55        else
56            vars = pool2;
57        end
58    else
59        nonlinear = find(~(sum(p.monomtable~=0,2)==1 & sum(p.monomtable,2)==1));
60        vars =  find(sum(abs(full(p.monomtable(nonlinear,:))),1));
61    end
62end
Note: See TracBrowser for help on using the repository browser.