Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 4e8822e

Browse files
Use unique pointers instead
1 parent cbb8e55 commit 4e8822e

File tree

4 files changed

+32
-32
lines changed

4 files changed

+32
-32
lines changed

‎framework/colouring/graph_colouring.cpp‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ namespace graph_colouring {
117117
return true;
118118
}
119119

120-
static void workerThread(const std::vector<std::shared_ptr<ColouringStrategy>> &strategies,
120+
static void workerThread(const std::vector<std::unique_ptr<ColouringStrategy>> &strategies,
121121
const graph_access &G,
122122
const size_t populationSize,
123123
const size_t maxItr,
@@ -209,7 +209,7 @@ namespace graph_colouring {
209209
}
210210

211211
std::vector<ColouringResult>
212-
ColouringAlgorithm::perform(const std::vector<std::shared_ptr<ColouringStrategy>> &strategies,
212+
ColouringAlgorithm::perform(const std::vector<std::unique_ptr<ColouringStrategy>> &strategies,
213213
const graph_access &G,
214214
const ColorCount k,
215215
const size_t populationSize,
@@ -314,7 +314,7 @@ namespace graph_colouring {
314314
best = nextTry;
315315
}
316316
}
317-
bestResults[strategyId] = {P[best], strategies[strategyId]};
317+
bestResults[strategyId] = {P[best], nullptr};
318318
}
319319
return bestResults;
320320
}

‎framework/colouring/graph_colouring.h‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ namespace graph_colouring {
229229
/**< The best configuration */
230230
Colouring s;
231231
/**< The algorithm category used to retrieve the corresponding category */
232-
std::shared_ptr<ColouringStrategy> strategy;
232+
std::unique_ptr<ColouringStrategy> strategy;
233233
};
234234

235235
class ColouringAlgorithm {
@@ -248,7 +248,7 @@ namespace graph_colouring {
248248
* @param outputStream if not null, it will be used to report recently found colourings
249249
* @return the best colourings for each passed colouring category
250250
*/
251-
std::vector<ColouringResult> perform(const std::vector<std::shared_ptr<ColouringStrategy>> &strategies,
251+
std::vector<ColouringResult> perform(const std::vector<std::unique_ptr<ColouringStrategy>> &strategies,
252252
const graph_access &G,
253253
ColorCount k,
254254
size_t populationSize,

‎framework/colouring/hca.cpp‎

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,24 @@ namespace graph_colouring {
1717
const size_t threadCount,
1818
std::ostream *outputStream) {
1919

20-
auto invalidColoring = std::make_shared<FixedKColouringStrategy>();
21-
invalidColoring->initOperators.emplace_back([](const graph_access &graph,
20+
std::vector<std::unique_ptr<ColouringStrategy>> strategies;
21+
strategies.emplace_back(new FixedKColouringStrategy());
22+
strategies[0]->initOperators.emplace_back([](const graph_access &graph,
2223
const ColorCount colors) {
2324
return graph_colouring::initByGreedySaturation(graph, colors);
2425

2526
});
26-
invalidColoring->crossoverOperators.emplace_back([](const Colouring &s1,
27+
strategies[0]->crossoverOperators.emplace_back([](const Colouring &s1,
2728
const Colouring &s2,
2829
const graph_access &graph) {
2930
return graph_colouring::gpxCrossover(s1, s2);
3031
});
31-
invalidColoring->lsOperators.emplace_back([L, A, alpha](const Colouring &s,
32+
strategies[0]->lsOperators.emplace_back([L, A, alpha](const Colouring &s,
3233
const graph_access &graph) {
3334
return graph_colouring::tabuSearchOperator(s, graph, L, A, alpha);
3435
});
3536

36-
return ColouringAlgorithm().perform({invalidColoring},
37+
return ColouringAlgorithm().perform(strategies,
3738
G,
3839
k,
3940
population_size,

‎tests/framework/colouring/graph_colouring_test.cpp‎

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -43,47 +43,46 @@ TEST(GraphColouringNumberOfConflictingNodes, SimpleGraph) {
4343
TEST(GraphColouring, parallelSchedule) {
4444

4545

46-
auto invalidColoring = std::make_shared<FixedKColouringStrategy>();
47-
invalidColoring->initOperators.emplace_back([](const graph_access &graph,
48-
const size_t colors) {
46+
std::vector<std::unique_ptr<ColouringStrategy>> strategies;
47+
strategies.emplace_back(new FixedKColouringStrategy());
48+
strategies[0]->initOperators.emplace_back([](const graph_access &graph,
49+
const size_t colors) {
4950
Colouring dummy(colors);
5051
return dummy;
5152
});
52-
invalidColoring->initOperators.emplace_back([](const graph_access &graph,
53-
const size_t colors) {
53+
strategies[0]->initOperators.emplace_back([](const graph_access &graph,
54+
const size_t colors) {
5455
Colouring dummy(colors);
5556
return dummy;
5657
});
57-
invalidColoring->initOperators.emplace_back([](const graph_access &graph,
58-
const size_t colors) {
58+
strategies[0]->initOperators.emplace_back([](const graph_access &graph,
59+
const size_t colors) {
5960
Colouring dummy(colors);
6061
return dummy;
6162
});
62-
invalidColoring->crossoverOperators.emplace_back([](const Colouring &s1,
63-
const Colouring &s2,
64-
const graph_access &graph) {
63+
strategies[0]->crossoverOperators.emplace_back([](const Colouring &s1,
64+
const Colouring &s2,
65+
const graph_access &graph) {
6566
return s1;
6667
});
67-
invalidColoring->crossoverOperators.emplace_back([](const Colouring &s1,
68-
const Colouring &s2,
69-
const graph_access &graph) {
68+
strategies[0]->crossoverOperators.emplace_back([](const Colouring &s1,
69+
const Colouring &s2,
70+
const graph_access &graph) {
7071
return s1;
7172
});
72-
invalidColoring->lsOperators.emplace_back([](const Colouring &s,
73-
const graph_access &graph) {
73+
strategies[0]->lsOperators.emplace_back([](const Colouring &s,
74+
const graph_access &graph) {
7475
return s;
7576
});
7677

77-
auto validColoring = std::make_shared<VariableColouringStrategy>();
78-
79-
validColoring->initOperators.emplace_back([](const graph_access &graph,
78+
strategies.emplace_back(new VariableColouringStrategy());
79+
strategies[1]->initOperators.emplace_back([](const graph_access &graph,
8080
const size_t colors) {
8181
Colouring dummy(colors);
8282
return dummy;
8383
});
84-
8584
size_t executionCounter = 0;
86-
validColoring->crossoverOperators.emplace_back([&executionCounter](
85+
strategies[1]->crossoverOperators.emplace_back([&executionCounter](
8786
const Colouring &s1,
8887
const Colouring &s2,
8988
const graph_access &graph) {
@@ -97,7 +96,7 @@ TEST(GraphColouring, parallelSchedule) {
9796
}
9897
return s1;
9998
});
100-
validColoring->lsOperators.emplace_back([](const Colouring &s,
99+
strategies[1]->lsOperators.emplace_back([](const Colouring &s,
101100
const graph_access &graph) {
102101
return s;
103102
});
@@ -110,7 +109,7 @@ TEST(GraphColouring, parallelSchedule) {
110109
const size_t populationSize = 20;
111110
const size_t maxItr = 100;
112111

113-
ColouringAlgorithm().perform({invalidColoring, validColoring},
112+
ColouringAlgorithm().perform(strategies,
114113
G,
115114
k,
116115
populationSize,

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /