source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/opt/yalmip/extras/@lmi/logic2cont.m @ 37

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

Added original make3d

File size: 1.1 KB
Line 
1function Fcont = logic2cont(Flogic)
2
3% Author Johan Löfberg
4% $Id: logic2cont.m,v 1.1 2004/08/06 14:23:37 johanl Exp $
5
6Fcont = set([]);
7M = 1e3;
8% How many elements in this clause
9n = size( Flogic.clauses{1},2);
10% Are all simple letters?
11all_letters = 1;
12j = 1;
13while all_letters & j<=n   
14    if isa(Flogic.clauses{1}{j}.data,'sdpvar')
15        all_letters = all_letters &  is(Flogic.clauses{1}{j}.data,'logic');
16    else
17        all_letters = 0;
18    end
19    j = j + 1;
20end
21
22if all_letters
23    sum_or = 0;
24    % Ah, simple constraints, just add them
25    for j = 1:n
26        sum_or = sum_or + Flogic.clauses{i}{j};
27    end
28else
29    sum_or = 0;
30    delta = binvar(size( Flogic.clauses{i},2),1);
31    for j = 1:size( Flogic.clauses{i},2)
32        clause_i_j = Flogic.clauses{i}{j};
33        if isa(clause_i_j,'constraint')
34            delta = binvar(1,1);
35            F = F + set(sdpvar(clause_i_j)+M*(1-delta)>0);
36            sum_or = sum_or + delta;
37        elseif isa(clause_i_j,'sdpvar')
38            F = F + set(clause_i_j);
39            sum_or = sum_or + clause_i_j;
40        end
41    end
42
43end
44Fcont = set(sum_or>1);
Note: See TracBrowser for help on using the repository browser.