Skip to content

Commit

Permalink
Merge pull request #154 from sisl/fix_ilp
Browse files Browse the repository at this point in the history
Fix iLP #149
  • Loading branch information
tomerarnon committed Aug 12, 2020
2 parents 6b15e75 + 17ffd24 commit 20f0355
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 11 deletions.
15 changes: 9 additions & 6 deletions src/optimization/iLP.jl
Expand Up @@ -45,7 +45,8 @@ function solve(solver::ILP, problem::Problem)
encode_network!(model, nnet, neurons, δ, StandardLP())
optimize!(model)
termination_status(model) != OPTIMAL && return AdversarialResult(:unknown)
return interpret_result(solver, value(o), problem.input)
x = value.(first(neurons))
return interpret_result(solver, x, problem.input)
end

encode_network!(model, nnet, neurons, δ, LinearRelaxedLP())
Expand All @@ -55,17 +56,19 @@ function solve(solver::ILP, problem::Problem)
x = value.(first(neurons))
matched, index = match_activation(nnet, x, δ)
if matched
return interpret_result(solver, value(o), problem.input)
return interpret_result(solver, x, problem.input)
end
add_constraint!(model, nnet, neurons, δ, index)
end
end

function interpret_result(solver::ILP, o, input)
if o >= maximum(input.radius)
return AdversarialResult(:holds, o)
function interpret_result(solver::ILP, x, input)
radius = abs.(x .- center(input))

if all(radius .>= radius_hyperrectangle(input))
return AdversarialResult(:holds, minimum(radius))
else
return AdversarialResult(:violated, o)
return AdversarialResult(:violated, minimum(radius))
end
end

Expand Down
6 changes: 1 addition & 5 deletions src/optimization/mipVerify.jl
Expand Up @@ -43,9 +43,5 @@ function solve(solver::MIPVerify, problem::Problem)
if termination_status(model) == INFEASIBLE
return AdversarialResult(:holds)
end
if value(o) >= maximum(problem.input.radius)
return AdversarialResult(:holds)
else
return AdversarialResult(:violated, value(o))
end
return AdversarialResult(:violated, value(o))
end

0 comments on commit 20f0355

Please sign in to comment.