⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logic2cont.m

📁 optimization toolbox
💻 M
字号:
function Fcont = logic2cont(Flogic)

% Author Johan L鰂berg
% $Id: logic2cont.m,v 1.1 2004/08/06 14:23:37 johanl Exp $

Fcont = set([]);
M = 1e3;
% How many elements in this clause
n = size( Flogic.clauses{1},2);
% Are all simple letters?
all_letters = 1;
j = 1;
while all_letters & j<=n    
    if isa(Flogic.clauses{1}{j}.data,'sdpvar')
        all_letters = all_letters &  is(Flogic.clauses{1}{j}.data,'logic');
    else
        all_letters = 0;
    end
    j = j + 1;
end

if all_letters
    sum_or = 0;
    % Ah, simple constraints, just add them
    for j = 1:n
        sum_or = sum_or + Flogic.clauses{i}{j};
    end
else
    sum_or = 0;
    delta = binvar(size( Flogic.clauses{i},2),1);
    for j = 1:size( Flogic.clauses{i},2)
        clause_i_j = Flogic.clauses{i}{j};
        if isa(clause_i_j,'constraint')
            delta = binvar(1,1);
            F = F + set(sdpvar(clause_i_j)+M*(1-delta)>0);
            sum_or = sum_or + delta;
        elseif isa(clause_i_j,'sdpvar')
            F = F + set(clause_i_j);
            sum_or = sum_or + clause_i_j;
        end
    end

end
Fcont = set(sum_or>1);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -