Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Jirka Fink
large_scale_optimization
Commits
2ee0ea48
Commit
2ee0ea48
authored
Nov 09, 2021
by
Jirka Fink
Browse files
Add 5th assignment
parent
861eba13
Changes
13
Hide whitespace changes
Inline
Side-by-side
05-lagrange_assignment/assignment.py
0 → 100644
View file @
2ee0ea48
import
numpy
import
gurobipy
as
gp
from
gurobipy
import
GRB
# Returns the best possible lower bound for a given GAP instance obtained from applying the Lagrangian relaxation on all uniqueness constraints.
# See task.md for more details.
def
lagrange_generalized_assignment_problem
(
instance
):
#TODO: Find the lower bound here
# Try to find a greedy feasible solution for GAP
# If successfull, returns a list which assigns jobs to agents
# Otherwise, throw an exception (ValueError: min() arg is an empty sequence)
# Note that determining whether an instance of GAP has a feasible solution is NP-complete (use 3-partition for reduction)
def
get_greedy_solution
(
instance
):
assignment
=
[
-
1
]
*
instance
.
jobs
# For a job j, assignment[j] is the assigned agent
process
=
list
(
range
(
instance
.
jobs
))
# Jobs that has not been assigned yet
remains
=
instance
.
capacity
.
copy
()
# Remaining capacity of each agent
while
process
:
# From all unassigned jobs j and agents a having sufficient capacity for j, choose (a,j) with minimal weight
w
,
a
,
j
=
min
((
instance
.
weight
[
a
][
j
],
a
,
j
)
for
j
in
process
for
a
in
range
(
instance
.
agents
)
if
instance
.
weight
[
a
][
j
]
<=
remains
[
a
])
assignment
[
j
]
=
a
process
.
remove
(
j
)
remains
[
a
]
-=
w
return
assignment
# Solve the knapsack problem: Given weight and price of items and capacity, find
# a subset of items with weights at the capacity and maximizing their total cost
# Returns a pair of the total cost and idices of items in an optimal subset
# Note that items of non-positive items are ignored
def
solve_knapsack
(
weight
,
price
,
capacity
):
assert
len
(
weight
)
==
len
(
price
)
# Lists for dynamic programming
max_cost
=
[
0
]
*
(
capacity
+
1
)
# Maximal possible cost reaching every total weight
last_index
=
[
-
1
]
*
(
capacity
+
1
)
# Index of the last added item
for
j
,
w
,
p
in
zip
(
range
(
len
(
weight
)),
weight
,
price
):
# Index, weight and price of each item
if
p
>
0
:
# Ignore items of non-positive items
for
i
in
reversed
(
range
(
capacity
-
w
+
1
)):
# Try to insert the item j to all total weights
if
max_cost
[
i
+
w
]
<
max_cost
[
i
]
+
p
:
# Adding item i increases the cost
max_cost
[
i
+
w
]
=
max_cost
[
i
]
+
p
last_index
[
i
+
w
]
=
j
solution
=
[]
m
=
numpy
.
argmax
(
max_cost
)
# Total weight with maximal cost
objective
=
max_cost
[
m
]
# Using last_index reconstruct an optimal solution
while
last_index
[
m
]
>=
0
:
solution
.
append
(
last_index
[
m
])
m
-=
weight
[
last_index
[
m
]]
return
(
objective
,
solution
)
if
__name__
==
"__main__"
:
# Some unit tests for our knapsack problem
assert
solve_knapsack
([
1
],
[
2
],
6
)
==
(
2
,
[
0
])
assert
solve_knapsack
([
1
],
[
-
2
],
6
)
==
(
0
,
[])
assert
solve_knapsack
([
4
,
6
],
[
2
,
5
],
100
)
==
(
7
,
[
1
,
0
])
assert
solve_knapsack
([
4
,
6
],
[
2
,
5
],
7
)
==
(
5
,
[
1
])
assert
solve_knapsack
([
4
,
6
],
[
2
,
5
],
5
)
==
(
2
,
[
0
])
assert
solve_knapsack
([
4
,
6
,
10
],
[
2
,
5
,
9
],
12
)
==
(
9
,
[
2
])
assert
solve_knapsack
([
4
,
6
,
10
],
[
2
,
5
,
6
],
12
)
==
(
7
,
[
1
,
0
])
assert
solve_knapsack
([
4
,
6
,
10
],
[
2
,
5
,
6
],
15
)
==
(
8
,
[
2
,
0
])
05-lagrange_assignment/assignment_tests.py
0 → 100644
View file @
2ee0ea48
import
sys
import
copy
from
time
import
time
from
prettytable
import
PrettyTable
from
assignment
import
lagrange_generalized_assignment_problem
# Instance of the General assignment problem (GAP)
class
Instance
:
def
__init__
(
self
,
agents
,
jobs
,
cost
,
weight
,
capacity
):
self
.
agents
=
agents
# The number of agents (e.g. central stores)
self
.
jobs
=
jobs
# The number of jobs (e.g. consumers)
self
.
cost
=
cost
# Cost of assigning a job to an agent; the first index is an agent, the second one is a job
self
.
weight
=
weight
# How much resources a job consume from an agent; the first index is an agent, the second one is a job
self
.
capacity
=
capacity
# The capacity of each agent
# Returns the instance of GAP stored in a given file
# http://people.brunel.ac.uk/~mastjjb/jeb/orlib/gapinfo.html
def
load
(
filename
):
content
=
[
int
(
y
)
for
x
in
open
(
filename
,
"r"
)
for
y
in
x
.
split
()
]
content
.
reverse
()
content
.
pop
()
agents
=
content
.
pop
()
jobs
=
content
.
pop
()
cost
=
[
[
content
.
pop
()
for
j
in
range
(
jobs
)
]
for
a
in
range
(
agents
)
]
weight
=
[
[
content
.
pop
()
for
j
in
range
(
jobs
)
]
for
a
in
range
(
agents
)
]
capacity
=
[
content
.
pop
()
for
a
in
range
(
agents
)
]
return
Instance
(
agents
,
jobs
,
cost
,
weight
,
capacity
)
def
verify_solution
(
instance
,
solution
,
bound
):
if
abs
(
solution
-
bound
)
>
0.0001
:
return
(
False
,
"Incorrect bound"
)
return
(
True
,
"Correct bound"
)
def
run_test
(
filename
,
bound
):
instance
=
load
(
filename
)
solution
=
lagrange_generalized_assignment_problem
(
copy
.
deepcopy
(
instance
))
return
verify_solution
(
instance
,
solution
,
bound
)
+
(
instance
,)
def
main
():
tests
=
{
"first"
:
(
"gap1.txt"
,
258.5
,
1
),
"second"
:
(
"gap2.txt"
,
274.3878787878788
,
1
),
"third"
:
(
"gap3.txt"
,
434.99189237716774
,
1
),
"fourth"
:
(
"gap4.txt"
,
417.7556653611704
,
2
),
"fifth"
:
(
"gap5.txt"
,
402.8431003822761
,
1
),
"sixth"
:
(
"gap6.txt"
,
522.2637096268518
,
2
),
"seventh"
:
(
"gap7.txt"
,
643.210566967029
,
3
),
"eigth"
:
(
"gap8.txt"
,
793.0298487147554
,
6
),
"ninth"
:
(
"gap9.txt"
,
480.81566820276504
,
2
),
"tenth"
:
(
"gap10.txt"
,
634.1139438624057
,
5
),
}
if
len
(
sys
.
argv
)
==
1
:
results
=
PrettyTable
([
"Instance name"
,
"Points"
,
"Filename"
,
"Jobs"
,
"Agents"
,
"Time limit [s]"
,
"Your time [s]"
,
"Evaluation"
])
for
name
in
tests
:
print
(
"Running test"
,
name
)
filename
,
bound
,
time_limit
=
tests
[
name
]
start_time
=
time
()
status
,
msg
,
instance
=
run_test
(
filename
,
bound
)
running_time
=
time
()
-
start_time
print
(
msg
)
print
()
results
.
add_row
([
name
,
1
,
filename
,
instance
.
jobs
,
instance
.
agents
,
time_limit
,
running_time
,
msg
])
print
(
results
)
else
:
name
=
sys
.
argv
[
1
]
if
name
in
tests
:
filename
,
optimal_length
,
time_limit
=
tests
[
name
]
status
,
msg
,
instance
=
run_test
(
filename
,
optimal_length
)
print
(
msg
)
else
:
print
(
"Unknown test"
,
name
)
"""
To run all tests, run the command
$ python3 assignment_tests.py
To run a test NAME, run the command
$ python3 assignment_tests.py NAME
"""
if
__name__
==
"__main__"
:
main
()
05-lagrange_assignment/gap1.txt
0 → 100644
View file @
2ee0ea48
5
5 15
17 21 22 18 24 15 20 18 19 18 16 22 24 24 16
23 16 21 16 17 16 19 25 18 21 17 15 25 17 24
16 20 16 25 24 16 17 19 19 18 20 16 17 21 24
19 19 22 22 20 16 19 17 21 19 25 23 25 25 25
18 19 15 15 21 25 16 16 23 15 22 17 19 22 24
8 15 14 23 8 16 8 25 9 17 25 15 10 8 24
15 7 23 22 11 11 12 10 17 16 7 16 10 18 22
21 20 6 22 24 10 24 9 21 14 11 14 11 19 16
20 11 8 14 9 5 6 19 19 7 6 6 13 9 18
8 13 13 13 10 20 25 16 16 17 10 10 5 12 23
36 34 38 27 33
5 15
19 23 24 20 20 25 16 21 24 15 17 17 20 20 20
25 24 16 21 19 17 17 19 23 21 21 23 20 15 16
16 21 25 22 24 24 16 17 15 18 15 17 18 24 18
25 24 18 19 15 18 20 22 23 18 16 19 17 15 22
25 19 21 22 20 15 20 19 18 18 17 23 17 25 25
16 12 8 20 18 10 12 8 14 23 19 14 15 15 24
16 18 19 22 13 20 9 7 25 10 20 13 11 15 16
6 20 20 5 14 12 6 15 22 18 13 23 23 18 25
18 23 25 17 25 13 23 23 13 20 20 23 17 19 24
12 17 15 25 22 5 24 19 12 25 23 21 23 19 18
36 37 38 48 44
5 15
22 21 16 17 21 15 17 22 22 25 18 20 24 15 22
23 24 19 15 16 21 15 25 16 21 20 19 16 23 20
21 20 21 25 21 20 21 19 17 16 25 19 15 15 15
17 21 25 25 23 22 20 19 20 25 15 20 21 25 23
15 25 23 19 17 17 25 24 24 17 24 19 18 19 16
23 10 15 13 17 10 13 6 9 21 20 7 9 25 8
17 13 8 23 11 18 7 22 13 5 24 24 15 10 22
22 17 22 23 20 11 17 25 23 9 22 20 15 9 25
5 19 25 16 15 10 18 9 11 20 7 21 15 8 25
22 9 10 23 19 21 17 15 15 17 25 19 10 9 21
32 37 44 35 40
5 15
15 25 20 18 19 21 18 22 24 15 25 17 17 15 22
20 18 25 25 16 24 22 24 17 18 23 25 21 25 24
25 19 18 18 23 18 15 22 23 16 25 22 22 15 16
19 19 23 17 19 19 22 19 23 22 24 22 25 19 16
25 24 17 19 25 19 23 19 25 15 19 21 18 19 22
20 20 18 9 18 5 16 18 13 24 21 23 15 19 9
5 12 18 8 22 19 19 11 7 19 20 17 21 25 5
18 8 8 9 20 20 23 13 15 12 6 12 25 25 23
17 19 24 9 16 22 10 17 12 17 15 21 16 18 6
14 6 20 6 21 5 11 23 20 21 20 18 13 13 21
39 36 37 38 37
5 15
25 25 18 24 20 19 25 24 23 15 18 18 25 15 22
25 18 17 22 21 23 20 23 16 19 15 18 16 23 16
18 16 19 15 15 18 15 20 19 24 22 20 25 16 21
18 21 16 18 17 24 18 23 22 16 17 22 22 18 16
17 18 15 21 23 21 24 23 20 22 19 15 22 22 25
16 20 9 22 17 19 20 22 20 13 6 20 23 19 7
12 22 18 18 6 13 17 17 17 14 20 12 17 14 22
5 19 19 14 24 16 7 8 9 22 13 23 24 15 20
20 8 6 9 5 17 23 18 14 12 14 17 15 23 21
6 6 24 24 8 7 5 25 21 18 12 20 20 7 12
40 38 38 35 34
05-lagrange_assignment/gap10.txt
0 → 100644
View file @
2ee0ea48
5
10 40
17 21 25 19 24 22 24 20 23 15 16 17 23 21 20 21 22 19 24 22 16
23 24 16 24 15 17 17 19 19 25 18 21 15 21 23 18 21 19 16
16 16 18 15 16 22 20 24 25 23 20 25 15 16 22 19 22 16 23 18 21
24 22 22 17 25 15 24 16 16 18 20 15 15 16 24 16 20 17 21
25 24 24 18 20 19 25 17 19 19 22 18 19 19 24 22 22 20 16 25 19
25 19 21 20 24 20 20 15 24 23 23 17 15 24 20 23 19 19 22
21 18 19 21 23 15 17 19 25 25 15 20 18 18 15 21 22 16 25 17 17
16 15 17 24 25 24 22 23 24 20 17 20 16 24 18 21 22 20 16
23 22 15 17 25 25 24 20 21 23 17 23 21 18 18 22 18 15 15 21 19
24 16 19 20 16 23 17 15 24 15 24 19 21 17 16 16 22 16 24
19 17 19 24 25 23 19 15 22 23 15 22 19 19 17 16 22 19 20 22 25
15 24 24 24 22 22 19 21 23 24 17 23 17 20 22 20 25 19 20
17 25 23 21 21 16 18 19 20 19 17 21 23 16 19 23 23 18 24 15 19
22 25 21 19 17 25 18 22 21 16 15 20 15 19 24 25 18 15 21
15 23 18 15 24 18 16 24 25 24 17 25 21 22 22 18 20 16 16 23 23
23 15 24 20 20 18 25 16 22 20 23 15 17 19 16 18 16 16 23
18 23 24 21 18 16 18 24 16 21 21 23 25 17 19 20 17 15 23 16 24
21 22 15 19 22 22 17 25 21 16 15 21 20 25 21 16 17 15 21
21 16 17 18 18 23 18 22 24 22 21 17 24 25 24 15 25 17 15 19 20
20 25 25 18 25 17 21 21 15 24 16 24 17 22 15 22 19 24 17
9 14 23 14 12 6 15 16 15 12 14 18 9 22 8 23 6 19 6 8 8
15 7 16 24 5 18 16 13 13 11 7 19 19 15 21 20 18 11 8
21 24 24 19 14 22 9 24 19 24 11 23 18 22 9 9 14 15 21 5 25
5 20 13 7 6 8 16 21 22 5 18 10 20 8 9 14 9 5 22
18 12 6 14 17 7 24 20 19 10 13 25 23 7 6 9 17 9 6 21 24
13 18 5 21 21 15 11 15 15 15 18 21 9 22 8 8 18 13 12
23 7 9 13 7 17 14 10 17 9 11 22 25 19 12 5 20 5 24 22 7
11 24 19 8 15 9 21 11 9 15 12 18 25 8 14 20 21 22 8
7 8 13 10 12 25 7 5 14 17 16 15 10 9 6 16 6 23 23 10 16
5 16 11 23 15 6 13 12 21 10 15 21 12 14 14 24 22 13 5
17 9 22 8 19 8 7 11 14 14 17 23 25 21 12 20 8 20 9 5 8
16 16 23 22 20 17 21 11 12 9 15 21 17 13 18 23 6 8 20
14 12 24 12 14 5 24 11 13 21 15 18 14 18 5 11 21 16 5 17 6
10 21 11 13 24 13 25 10 21 11 22 11 16 15 17 21 11 21 24
22 20 21 12 17 24 21 7 9 23 13 11 19 17 17 20 14 10 11 16 8
7 21 16 24 9 16 15 10 23 10 13 9 6 18 23 19 22 13 18
6 11 16 17 6 8 18 24 19 9 18 18 7 13 11 20 19 22 19 20 14
10 6 6 25 7 8 18 19 17 6 25 13 12 22 23 8 12 5 19
7 14 11 6 11 25 18 10 9 10 13 23 12 17 11 14 12 19 20 8 8
8 20 25 19 21 25 23 23 11 19 13 21 25 20 22 16 8 24 20
44 48 46 47 43 48 49 49 46 51
10 40
17 17 16 22 24 15 19 21 19 25 25 16 18 19 21 17 15 20 20 15 20
17 23 15 16 21 25 18 23 15 22 22 15 24 25 24 21 19 23 18
21 20 19 22 20 18 20 17 15 21 16 17 15 21 25 22 24 20 22 20 16
25 22 24 25 23 15 25 21 15 16 19 18 23 22 19 16 15 19 15
25 21 23 16 16 22 18 25 23 23 23 23 21 18 19 19 19 22 22 20 16
25 19 24 18 18 18 16 23 22 25 25 22 24 16 19 25 20 15 18
18 16 21 19 25 25 24 17 18 25 20 21 22 23 20 22 25 25 19 22 23
19 17 16 16 21 25 21 23 20 20 15 18 21 21 20 17 15 24 22
19 18 21 25 25 21 23 15 16 21 18 23 21 24 23 23 20 20 23 24 15
24 20 20 19 18 17 21 24 19 19 17 24 17 23 18 25 22 17 25
25 17 18 19 25 23 23 17 17 21 24 18 19 15 16 21 24 20 15 25 22
16 17 16 24 15 19 17 25 16 25 21 20 17 25 22 15 16 20 15
22 24 22 17 21 24 15 23 23 17 16 25 16 17 23 19 17 16 25 24 22
16 18 22 17 16 22 15 17 20 25 17 23 23 18 24 15 19 25 23
16 25 22 16 25 19 20 22 16 22 23 25 22 18 23 25 20 15 19 20 20
17 20 17 21 25 16 17 17 24 18 21 15 17 18 20 15 21 19 18
22 16 23 23 17 15 20 23 20 19 22 21 20 16 21 17 19 18 15 25 25
15 17 22 23 20 21 19 20 19 17 22 25 20 18 22 16 23 16 21
25 24 24 20 18 19 16 22 25 24 19 23 23 19 15 22 20 24 17 24 20
23 25 23 18 17 20 18 16 21 21 16 20 15 25 15 25 20 17 15
18 9 22 18 13 10 13 15 7 13 13 13 23 7 13 8 18 10 6 19 13
19 20 17 24 15 16 23 17 13 18 9 17 17 5 5 16 16 9 17
10 10 15 12 15 20 10 8 5 12 13 5 21 18 12 12 16 5 10 13 13
9 15 14 21 19 5 23 11 9 21 20 23 9 8 22 13 17 19 7
25 19 16 18 15 12 5 17 9 18 23 7 22 9 13 7 20 13 25 13 16
25 6 12 10 25 14 23 16 6 22 12 17 7 15 10 25 5 20 25
5 5 19 23 22 18 12 12 16 16 9 19 13 11 21 10 12 19 10 17 18
8 17 5 13 21 24 9 15 11 10 21 5 14 21 8 9 7 13 11
22 24 17 12 14 10 19 11 23 24 12 18 8 18 20 24 18 14 23 24 13
15 5 25 11 9 13 20 5 17 15 12 22 12 8 6 7 17 18 17
5 9 11 10 18 7 25 24 6 15 21 6 9 9 25 20 5 25 21 24 18
21 19 12 21 11 22 10 22 23 7 10 13 5 22 15 17 8 6 19
10 18 23 7 14 16 5 25 5 16 21 17 5 12 24 21 19 23 15 15 8
21 16 17 16 9 17 25 11 20 24 25 6 20 19 12 19 9 25 5
10 13 16 21 17 22 8 23 10 9 21 18 12 6 6 24 13 19 18 9 11
13 8 20 24 8 12 10 24 6 25 11 21 21 10 10 16 15 24 15
21 17 6 12 22 11 12 6 7 14 19 9 7 18 18 9 25 13 20 22 21
5 17 16 12 13 18 18 5 6 24 25 9 17 13 22 23 23 8 15
25 19 10 15 22 17 24 7 12 24 6 18 22 22 10 19 15 9 10 18 5
24 22 17 9 20 7 14 21 5 22 24 7 20 16 17 7 9 7 14
45 43 49 43 49 47 50 47 47 48
10 40
20 16 15 25 15 16 17 20 22 21 22 18 16 21 24 19 23 15 20 22 23
22 16 23 19 17 20 25 21 16 15 17 17 17 19 16 20 16 22 17
16 20 19 23 23 18 21 19 22 17 16 20 25 17 18 18 19 15 20 23 15
24 24 23 22 18 15 21 17 24 18 17 22 23 21 15 17 16 24 15
24 22 15 20 22 20 24 17 16 18 18 22 24 25 20 18 17 15 17 19 23
22 20 23 24 18 20 21 23 23 20 23 22 16 25 15 24 20 16 23
23 23 25 23 19 21 15 25 20 21 18 15 17 21 24 23 21 16 18 24 18
16 23 25 20 16 25 15 19 23 25 22 17 25 24 17 18 17 21 20
25 21 21 20 22 15 16 17 17 20 20 22 22 22 17 18 18 20 22 19 18
17 25 25 21 15 18 22 18 16 15 25 17 23 18 22 17 24 22 25
21 22 18 25 21 15 20 20 21 17 22 15 18 16 18 24 21 18 21 22 23
17 25 21 17 24 21 20 22 15 21 20 24 22 22 21 22 16 24 20
19 18 20 19 20 20 25 19 20 23 17 16 19 24 17 23 24 17 22 23 16
22 21 15 17 19 17 15 19 25 15 22 16 23 21 24 16 24 24 24
21 21 21 25 18 25 23 21 25 17 19 25 20 25 15 17 20 23 21 15 24
20 15 22 24 15 21 21 25 25 19 22 22 16 16 19 18 21 15 25
25 18 22 19 19 18 17 19 21 17 16 24 23 25 17 16 24 19 20 17 23
19 20 23 18 18 25 23 18 19 23 25 23 24 22 16 25 23 19 22
15 25 23 21 21 21 19 24 23 21 20 16 25 19 20 17 23 22 20 19 16
18 19 17 25 17 16 24 24 20 21 25 16 23 16 19 24 17 17 18
5 11 18 13 21 19 25 14 9 22 12 20 21 8 20 11 14 10 10 11 23
5 21 16 22 6 16 24 18 15 13 10 15 20 7 13 13 24 24 22
18 25 6 15 15 17 25 20 9 21 24 18 8 21 23 20 12 10 11 17 17
16 12 8 19 19 24 14 12 23 6 17 19 13 21 24 12 13 22 12
24 20 14 15 18 14 24 12 9 21 19 20 10 23 8 23 22 6 11 23 9
11 12 25 13 21 18 7 16 25 7 24 25 5 21 24 14 10 15 6
22 8 11 22 6 6 20 12 13 13 18 18 13 13 5 9 12 22 5 16 11
19 7 19 16 7 8 8 24 8 18 19 17 21 24 17 9 23 19 12
22 6 21 14 12 20 9 19 15 7 21 25 21 25 11 19 19 25 11 9 5
9 15 12 13 10 6 21 13 9 20 23 19 11 20 7 17 20 16 9
17 22 24 6 13 15 11 16 20 6 21 22 12 25 14 6 15 12 13 5 14
10 5 21 20 23 19 7 5 10 8 13 18 14 16 9 8 9 17 9
5 14 25 20 18 13 24 13 22 7 25 13 9 15 9 19 12 8 11 6 14
16 25 19 24 11 5 25 24 7 19 20 14 24 11 21 12 6 5 18
7 14 5 25 14 20 25 18 14 12 20 18 17 7 15 6 25 5 13 23 24
25 13 18 14 18 5 12 20 6 12 8 25 19 19 9 24 8 21 22
11 10 24 25 20 21 20 21 11 20 10 9 13 17 21 18 16 6 21 18 21
25 11 7 20 21 22 7 15 11 14 15 21 22 10 12 7 14 9 14
19 21 20 16 10 25 22 7 6 17 17 22 23 17 20 18 24 24 15 15 10
14 11 7 9 23 6 13 23 23 23 20 14 8 10 14 10 21 8 7
49 52 51 45 48 44 48 50 50 50
10 40
15 22 22 22 23 25 22 25 21 23 19 24 18 24 19 22 18 23 21 22 22
16 24 16 21 17 25 25 24 21 20 23 21 19 23 19 15 19 18 24
16 19 21 18 18 21 21 16 16 17 21 25 19 24 19 19 24 21 17 24 24
23 18 19 25 15 22 22 24 23 23 19 19 19 22 19 25 16 24 25
19 20 16 21 15 17 22 17 21 20 18 21 21 25 24 16 23 19 19 24 21
19 19 24 15 25 16 15 23 22 25 17 15 21 18 17 17 16 16 25
18 23 24 17 17 25 24 15 16 22 24 17 22 19 18 18 25 20 18 22 23
15 19 15 24 22 19 15 24 15 25 21 22 17 23 25 17 20 19 21
19 19 16 22 24 15 20 19 22 20 23 20 18 24 20 16 16 19 18 25 20
16 24 22 15 23 18 20 19 18 19 18 23 19 20 23 20 19 21 17
23 16 19 15 19 20 21 24 18 22 21 25 25 23 22 23 15 19 18 20 15
22 21 25 25 16 17 16 24 22 15 17 20 24 24 18 22 21 18 17
22 21 15 25 23 16 24 22 23 15 20 22 15 15 24 21 16 20 20 22 15
23 21 23 21 24 24 24 21 16 19 23 18 24 25 21 18 18 20 21
21 19 15 20 23 24 16 19 18 20 17 15 21 18 15 16 17 19 18 17 20
22 24 15 18 19 18 25 20 21 18 18 15 20 16 17 19 16 21 22
21 18 25 15 20 18 15 15 16 25 21 24 16 25 20 21 18 18 25 20 25
20 16 20 19 25 15 22 20 19 15 23 17 19 18 23 24 18 19 17
19 17 21 19 17 15 23 15 16 20 20 21 23 23 15 18 18 19 24 20 24
20 18 15 15 21 16 24 22 16 15 15 19 20 22 23 19 21 24 21
25 14 15 6 23 24 7 10 9 11 8 8 11 22 6 14 25 20 20 25 10
6 19 13 18 22 17 21 9 15 7 18 20 19 5 19 12 9 17 6
7 8 6 23 5 19 18 14 23 10 15 8 7 19 12 25 15 22 6 9 11
12 18 21 25 20 8 16 10 13 18 8 24 14 24 6 24 6 7 6
13 5 24 5 9 9 22 12 12 20 25 14 9 17 16 18 19 10 15 5 16
8 10 12 22 21 11 14 24 20 11 21 18 15 9 19 18 8 10 14
9 22 9 21 22 25 17 20 20 25 8 19 24 7 18 5 19 6 18 20 20
18 13 5 10 25 20 6 9 17 7 9 13 21 13 9 21 17 11 20
7 23 21 13 19 22 25 22 18 5 5 8 8 17 22 14 10 12 11 22 15
23 9 15 18 10 15 6 9 8 21 7 16 23 16 12 9 8 5 14
12 25 18 22 13 25 22 23 23 11 21 8 20 10 25 18 12 18 5 19 9
5 20 16 23 14 13 16 14 25 7 14 23 17 14 9 13 17 15 11
5 10 24 22 23 10 15 11 15 8 9 25 15 5 15 10 10 22 17 5 15
13 21 23 15 20 11 5 14 11 8 23 8 9 21 18 6 7 15 19
22 25 13 14 11 11 24 23 9 12 7 14 20 22 13 16 25 21 13 19 25
18 8 5 10 6 5 18 23 25 24 16 6 23 11 21 16 17 20 17
7 24 6 7 22 19 9 19 20 23 8 16 25 22 11 12 10 12 9 24 7
21 16 7 23 7 6 9 5 13 9 16 10 19 12 15 13 5 15 18
5 16 23 12 25 8 10 17 5 11 16 14 23 17 14 19 14 20 22 10 21
15 25 17 10 12 16 8 24 8 9 9 17 10 14 8 13 7 14 18
46 44 46 49 45 51 44 51 44 46
10 40
24 18 17 19 19 24 20 23 15 25 21 18 18 18 19 20 25 15 23 21 25
21 17 21 22 19 20 17 18 19 16 22 20 21 21 16 24 16 20 24
16 16 23 21 25 20 16 25 20 19 24 17 25 24 15 18 25 20 23 15 16
19 17 16 15 16 18 19 20 18 21 21 17 22 23 25 22 17 16 19
25 19 20 25 20 20 24 20 24 20 23 21 18 20 18 20 22 22 20 15 21
17 22 20 24 24 15 21 15 25 18 21 24 17 20 19 20 18 22 20
21 24 18 18 17 17 20 17 21 20 18 18 22 23 19 25 19 21 23 20 17
21 22 22 18 22 16 16 19 23 15 21 17 18 22 17 16 21 18 19
24 16 19 15 23 22 17 23 25 16 22 17 21 22 22 16 20 23 21 25 18
16 25 22 18 21 22 24 19 19 21 20 22 25 25 20 25 22 15 22
19 25 18 18 24 22 16 22 21 19 15 18 16 22 25 25 23 16 20 18 15
23 19 16 19 20 21 17 23 21 18 16 21 18 20 16 16 21 16 16
18 16 24 18 17 20 19 24 17 18 24 18 24 22 16 19 23 22 18 21 15
15 17 24 18 20 23 21 23 16 19 24 19 15 22 20 25 20 22 17
25 24 21 15 20 22 17 17 16 20 24 15 15 16 22 17 22 22 17 20 22
20 16 24 17 15 18 23 24 22 21 21 18 21 15 20 18 18 16 20
15 18 18 17 21 23 24 24 18 24 18 19 16 25 19 17 19 24 15 19 19
19 22 24 15 21 18 19 21 16 20 25 24 24 21 16 23 25 24 22
20 24 18 21 20 23 25 17 20 15 21 25 23 16 24 17 17 23 25 20 21
23 22 21 17 19 18 23 20 17 17 20 23 23 16 25 21 19 22 18
19 8 16 19 11 25 20 5 23 11 20 8 18 5 12 13 12 6 11 8 8
23 17 9 18 5 6 23 9 24 24 19 23 13 10 5 11 24 10 22
9 22 15 17 7 24 19 19 11 6 17 18 9 23 14 20 7 17 23 7 15
8 16 16 9 25 6 5 5 25 7 18 5 18 6 10 8 10 16 18
20 22 15 23 25 25 6 5 14 23 11 5 20 6 5 7 8 9 17 6 8
13 22 19 5 18 13 20 16 12 23 25 11 19 8 21 9 22 8 22
6 7 15 8 11 16 17 14 7 8 20 14 23 13 11 25 5 25 18 5 8
20 9 9 25 23 6 15 20 24 7 19 7 6 7 12 5 10 17 12
25 12 10 20 12 24 20 14 21 5 20 9 12 13 22 23 14 14 14 25 21
5 8 11 19 14 17 15 25 13 14 16 21 8 6 19 7 6 22 20
10 16 19 14 9 18 15 10 19 6 10 11 7 23 24 14 12 5 25 16 13
8 13 25 9 24 15 6 11 24 14 9 24 6 18 21 20 21 10 10
6 8 20 24 9 24 24 10 21 20 12 11 8 24 5 8 10 25 5 6 9
8 20 16 14 7 25 11 10 24 17 23 13 16 9 8 5 15 21 23
12 5 20 13 21 15 11 15 22 20 13 8 18 20 5 20 14 12 22 15 19
7 22 16 15 15 23 19 20 16 10 20 20 11 14 15 12 22 20 22
22 24 10 12 19 20 14 16 10 11 9 15 17 25 5 14 21 24 24 19 15
10 24 9 14 24 15 16 19 14 14 22 13 17 10 11 6 16 12 9
7 8 12 24 12 14 7 11 19 15 20 21 7 5 11 11 6 16 25 14 23
13 9 11 15 9 25 14 25 24 25 10 19 14 25 18 21 21 9 21
45 44 46 42 49 46 45 51 49 49
05-lagrange_assignment/gap2.txt
0 → 100644
View file @
2ee0ea48
5
5 20
15 12 16 15 20 18 11 14 23 14 18 13
11 15 17 18 20 11 20 24
22 14 10 15 12 21 24 16 17 22 11 15
18 15 18 23 22 23 21 13
25 11 22 10 22 17 22 12 21 21 16 14
23 21 14 17 25 18 15 15
23 13 14 25 21 18 23 19 17 18 20 20
22 24 23 13 17 22 20 21
15 25 22 14 17 21 16 21 20 12 15 18
17 21 20 20 13 14 23 14
11 11 5 25 10 17 16 20 5 20 14 10
15 6 11 14 13 8 15 11
17 17 12 23 16 25 13 16 19 16 24 17
24 6 6 16 25 21 5 18
13 13 20 17 8 7 16 9 23 18 21 24
11 15 12 24 19 23 13 12
6 10 18 16 12 25 17 7 10 6 20 20
9 20 11 21 6 9 20 23
7 14 18 24 7 24 18 19 18 23 15 16
14 9 16 25 15 20 23 17
42 54 52 47 55
5 20
22 19 13 18 24 21 24 22 11 19 15 15
18 11 14 11 21 14 25 22
13 16 12 18 13 13 16 12 19 21 18 25
20 22 25 22 16 19 18 18
21 20 20 19 10 22 22 22 23 23 17 13
13 20 14 14 24 10 25 13
22 14 18 24 11 14 10 21 15 19 23 23
13 23 20 19 19 18 18 15
22 12 25 20 16 16 19 11 15 21 11 19
21 24 20 16 11 12 15 10
18 9 14 10 18 18 12 22 19 15 21 20
7 14 15 6 13 15 18 15
10 23 23 23 24 6 14 7 16 13 23 6
7 7 21 11 24 17 16 23
15 6 13 13 18 7 22 19 18 6 23 9
10 13 21 23 24 17 16 15
25 7 13 9 23 14 20 9 16 18 22 8
12 13 9 7 11 7 9 19
15 12 10 8 22 17 13 21 11 10 6 20
17 11 10 24 21 18 12 7
49 51 49 43 46
5 20
11 19 24 11 11 23 15 25 17 20 15 16
10 19 23 17 14 20 18 14
13 16 20 13 24 23 24 23 12 21 17 20
22 11 25 12 10 14 17 15
16 14 13 21 19 22 13 10 16 15 22 16
24 19 23 19 24 10 23 10
17 12 20 13 21 24 14 14 14 16 12 15
24 18 13 17 18 18 12 11
19 22 23 14 11 14 18 13 25 18 11 10
21 21 25 20 11 11 13 13
18 6 5 16 21 16 19 23 16 20 14 18
11 20 5 13 7 10 5 13
12 16 21 10 17 7 19 8 24 19 6 18
24 12 8 18 22 25 12 18
7 22 23 12 23 18 6 23 14 8 16 10
20 12 14 13 13 11 19 15
6 23 7 10 13 14 11 17 10 14 22 9
18 7 19 15 19 5 24 13
16 10 19 14 7 18 25 14 8 8 7 8
22 24 16 18 16 11 8 9
45 51 48 45 46
5 20
12 24 13 11 20 12 19 17 19 22 19 22
13 12 10 12 13 13 25 16
25 24 22 10 21 17 21 17 13 15 15 15
20 20 19 14 17 14 12 20
21 11 15 16 11 14 22 22 12 17 15 15
11 18 13 19 20 25 13 13
24 15 19 17 24 20 21 18 25 15 14 23
10 11 23 22 18 19 24 22
14 18 20 14 15 25 13 19 17 10 18 13
21 17 22 18 17 10 20 12
13 6 12 16 23 15 20 9 6 18 21 21
13 9 23 19 16 9 25 11
16 9 9 16 11 17 21 21 23 12 6 20
20 19 12 20 21 24 13 6
21 7 6 7 6 15 18 7 24 12 24 8
14 25 21 21 22 23 16 19
10 23 16 8 11 14 5 25 23 11 25 18
11 14 17 22 15 23 7 18
16 14 17 15 8 24 16 23 6 20 7 12
19 7 19 15 16 20 25 18
49 51 51 52 52
5 20
21 23 20 11 11 17 14 15 16 22 18 17
10 12 14 11 18 13 11 25
23 17 16 18 13 21 14 13 20 14 25 10
17 14 20 20 21 22 22 20
22 20 12 22 13 13 16 22 22 10 18 13
13 11 19 13 20 10 16 19
11 10 23 19 18 21 17 11 10 21 19 22
18 22 17 21 15 10 24 24
18 22 23 19 15 12 14 13 12 22 21 15
12 11 21 20 22 13 11 21
14 12 6 18 9 12 19 7 22 19 7 6
25 10 13 7 24 17 12 6
15 19 25 17 16 7 8 21 21 5 8 13
16 24 15 14 8 7 18 18
17 15 23 14 24 10 15 17 8 23 16 23
25 13 24 17 6 14 7 21
24 23 19 15 15 13 6 12 21 21 16 5
8 11 9 9 23 11 8 11
25 11 15 11 9 18 10 23 9 7 19 14
7 6 22 17 7 7 5 13
43 47 54 45 42
05-lagrange_assignment/gap3.txt
0 → 100644
View file @
2ee0ea48
5
5 25
18 19 19 17 24 25 24 25 25 23 20 21 25 17 25 21 25 19 23 19 20
15 25 23 17
25 17 18 16 18 15 23 20 19 22 23 18 17 16 16 24 16 23 23 24 19
17 15 17 17
17 25 15 23 21 20 24 17 21 22 22 15 18 23 17 22 20 24 19 18 15
15 18 19 19
21 16 25 23 18 21 18 16 21 21 15 21 24 23 24 23 20 25 24 18 19
23 22 22 16
24 16 24 19 16 25 23 25 17 21 21 22 17 25 19 21 23 19 17 24 19
15 20 15 20
25 23 5 13 6 15 24 9 17 11 5 6 8 14 9 9 21 23 13 8 22
20 24 15 20
18 8 5 20 8 7 13 17 9 16 19 11 6 12 25 23 9 21 11 15 24
23 15 21 12
7 25 13 9 16 16 8 17 5 17 10 18 21 25 17 24 20 16 9 18 18
18 16 6 24
25 11 8 7 25 20 24 16 9 15 22 10 17 6 22 11 19 20 14 14 8
18 22 18 22
7 16 20 18 13 10 15 20 5 19 11 6 11 23 15 21 15 20 21 11 9
25 17 18 12
58 58 62 64 60
5 25
22 20 18 19 18 24 22 17 23 20 24 15 21 24 24 24 24 25 19 15 22
19 20 16 20
15 25 18 18 21 15 20 16 21 17 15 22 18 20 18 18 19 15 15 17 19
19 17 22 22
23 18 24 15 20 24 18 18 20 16 23 16 23 16 15 17 17 20 24 22 23
17 15 25 17
17 19 18 20 20 19 17 25 19 20 16 17 17 16 21 21 25 18 15 15 24
24 15 15 24
17 22 19 19 19 24 15 16 16 25 25 24 20 17 15 17 17 19 16 18 23
20 15 21 18
14 11 25 16 17 18 22 16 20 6 6 14 14 25 9 7 6 11 25 19 22
11 20 8 19
18 16 5 17 8 21 9 5 12 9 8 20 6 18 16 11 14 11 6 21 6
5 14 18 12
11 5 6 8 20 12 14 9 15 17 23 11 11 12 20 16 10 10 12 18 24
6 20 9 18
6 16 8 6 5 9 12 7 24 8 10 14 23 12 9 5 22 8 11 5 16
6 20 14 17
16 23 5 6 8 24 25 5 25 19 23 8 16 7 16 8 16 14 17 25 18
23 12 5 20
60 48 53 46 61
5 25
15 19 20 22 21 24 20 22 18 24 20 22 18 24 21 16 21 17 17 18 25
21 22 25 22
21 24 24 17 24 20 19 23 16 23 23 22 17 16 23 16 24 18 15 17 24
22 24 15 16
18 25 16 22 18 23 21 21 19 25 15 19 23 19 19 15 22 17 16 21 18
22 17 25 18
22 22 15 19 18 19 19 22 17 17 24 20 21 21 24 19 25 19 15 20 22
18 20 17 15
23 18 21 23 15 19 19 19 20 19 17 20 20 21 23 25 24 23 23 19 19
20 17 15 24
19 14 6 10 6 20 16 12 17 23 7 23 20 15 7 17 7 25 10 17 10
6 10 23 12
18 8 17 19 19 24 20 10 11 14 17 19 23 24 7 25 24 24 8 17 9
22 8 11 11
14 15 18 22 9 8 10 21 17 18 9 19 6 25 17 6 12 6 12 15 21
12 14 19 7
6 5 5 23 12 6 11 16 13 20 12 9 24 16 22 12 8 24 21 13 8
18 13 17 21
18 25 20 18 20 8 18 24 11 9 14 23 18 19 11 5 12 11 17 16 22
17 6 16 24
56 65 56 56 64
5 25
16 18 22 17 21 18 15 20 16 17 17 20 23 18 24 25 22 20 20 23 25
16 17 24 18
23 15 16 16 15 21 20 25 18 16 25 15 20 18 16 16 20 17 17 22 23
22 20 17 18
21 20 22 20 24 24 24 23 18 15 18 17 19 17 21 25 21 16 22 16 17
25 20 18 19
21 18 22 24 24 24 22 21 20 15 20 18 25 24 25 15 19 15 21 23 23
24 20 17 15
18 19 24 16 17 16 17 22 23 24 15 20 23 17 21 24 23 22 17 16 25
15 20 23 16
21 18 18 5 12 23 21 12 16 20 21 23 12 9 24 6 22 22 12 20 5
11 8 6 14
9 18 18 16 22 8 10 17 15 13 22 20 19 7 10 25 15 10 21 10 23
8 6 20 11
23 8 16 25 5 14 18 12 17 21 25 12 16 24 5 18 16 21 23 9 21
25 8 5 16
14 5 18 11 15 10 10 11 6 16 7 17 20 7 24 12 6 18 8 12 17
6 25 16 23