Skip to content

Commit 8f938c5

Browse files
authored
3 analyzers - numerical, feasibility, infeasibility
1 parent c671788 commit 8f938c5

File tree

10 files changed

+4222
-5
lines changed

10 files changed

+4222
-5
lines changed

Project.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ uuid = "d1179b25-476b-425c-b826-c7787f0fff83"
33
version = "0.1.0"
44

55
[deps]
6-
DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
6+
Dualization = "191a621a-6537-11e9-281d-650236a99e60"
77
JuMP = "4076af6c-e467-56ae-b986-b466b2749572"
88
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
99
MathOptInterface = "b8f27783-ece8-5eb3-8dc8-9495eed66fee"
10-
OrderedCollections = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
1110
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
1211

1312
[compat]
13+
Dualization = "0.5.9"
14+
JuMP = "1.24.0"
1415
MathOptInterface = "1.37.0"

src/ModelAnalyzer.jl

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,60 @@
44
# in the LICENSE.md file or at https://opensource.org/licenses/MIT.
55

66
module ModelAnalyzer
7+
8+
abstract type AbstractIssue end
9+
10+
abstract type AbstractData end
11+
12+
abstract type AbstractAnalyzer end
13+
14+
function summarize(io::IO, ::Type{T}; verbose = true) where {T<:AbstractIssue}
15+
if verbose
16+
return _verbose_summarize(io, T)
17+
else
18+
return _summarize(io, T)
19+
end
20+
end
21+
22+
function summarize(io::IO, issue::AbstractIssue; verbose = true)
23+
if verbose
24+
return _verbose_summarize(io, issue)
25+
else
26+
return _summarize(io, issue)
27+
end
28+
end
29+
30+
function summarize(
31+
io::IO,
32+
issues::Vector{T};
33+
verbose = true,
34+
max_issues = typemax(Int),
35+
) where {T<:AbstractIssue}
36+
summarize(io, T, verbose = verbose)
37+
print(io, "\n## Number of issues\n\n")
38+
print(io, "Found ", length(issues), " issues")
39+
print(io, "\n\n## List of issues\n\n")
40+
for issue in first(issues, max_issues)
41+
print(io, " * ")
42+
summarize(io, issue, verbose = verbose)
43+
print(io, "\n")
44+
end
45+
return
46+
end
47+
48+
function summarize(data::AbstractData; kwargs...)
49+
return summarize(stdout, data; kwargs...)
50+
end
51+
52+
function analyze end
53+
function list_of_issues end
54+
function list_of_issue_types end
55+
56+
function _verbose_summarize end
57+
function _summarize end
58+
59+
include("numerical.jl")
60+
include("feasibility.jl")
61+
include("infeasibility.jl")
62+
763
end

0 commit comments

Comments
 (0)