Modelling and optimizing a system for testing electronic circuit boards
 Stephen Y. Chen^{1},
 Odile Marcotte^{2}Email authorView ORCID ID profile,
 Mario Leonardo Morfin Ramírez^{3} and
 Mary Pugh^{4}
https://doi.org/10.1186/s4092901700120
© The Author(s) 2017
Received: 15 September 2016
Accepted: 11 August 2017
Published: 20 September 2017
Abstract
In this article we consider a difficult combinatorial optimization problem arising from the operation of a system for testing electronic circuit boards (ECB). This problem was proposed to us by a company that makes a system for testing ECBs and is looking for an efficient way of planning the tests on any given ECB. Because of its difficulty, we first split the problem into a covering subproblem and a sequencing subproblem. We also give a global formulation of the test planning problem. Then we present and discuss results pertaining to the covering and sequencing subproblems. These results demonstrate that their solution yields testing plans that are much better than those currently used by the company. Finally we conclude our article by outlining avenues for future research.
Keywords
Introduction
In this article we study the operations of a system for testing Electronic Circuit Boards (ECBs) that uses flying probes. Our study was carried out in cooperation with a company that will be referred to as the Company in what follows. We first describe the broad outlines of this system (called the FP system); further details will be given in the following sections. The FP system includes eight shuttles: four shuttles that are above the board and four shuttles that are below the board. To each shuttle are attached some probes (usually two or three probes). The board being tested contains nets, each of which can be viewed as a wire with a finite number of points of interest (or simply points). For the purposes of this study, a net is a set of points whose coordinates are known. Note that the nets are pairwise disjoint, i.e., no point belongs to more than one net.
In general, given a configuration of shuttles, only a fraction of the tests can be carried out. Thus several configurations must be computed in order to ensure that all the tests are covered. (Note that the initial configuration, which is also the final one, is given in advance.) Moving the shuttles from one configuration to the next requires some time, which can be evaluated if one knows the coordinates of the shuttles within their successive configurations. The objective of the Company is to minimize the total time needed to move the shuttles between configurations, with the constraint that each test is covered by at least one configuration. The system currently used by the Company yields poor results, in the sense that the number of configurations needed to cover all the tests is far too large, resulting in many unnecessary shuttle moves. Hence the problem was proposed to us by the Company at the FieldsMITACS Industrial ProblemSolving Workshop (see Chen S, Gustafsson J, Marcotte O, Morfin M, Pugh M: Improved optimization for a testing system with two mobility layers, in Proceedings of the FieldsMITACS Industrial ProblemSolving Workshop, forthcoming).
The planning problem just described is similar to the Travelling Salesman Problem (TSP), one of the basic problems in combinatorial optimization (see Applegate et al. [2]). We conjecture that in its general form, the planning problem is as difficult to solve as the TSP. Although we are not aware of any previous work on the planning problem, there are similarities between our problem and two classes of problems that have been considered already: geometric covering problems (see for instance the article by Arkin and Hassin [3] and the article by Ahn et al. [1]) and some generalizations of the TSP. One of these generalizations is the Travelling Politician Problem (see Riordan [19]). Other generalizations include the Covering Salesman Problem (see the article by Current and Schilling [5]) and the Clustered Travelling Salesman Problem (CTSP), discussed in an article by Laporte and Palekar [11] that includes an application of the CTSP to a circuit design problem.
The Generalized Travelling Salesman Problem (GTSP) has received a fair amount of attention (see for example the articles [12–15] by Laporte and his colleagues). Some authors have proposed transforming a GTSP instance into a TSP instance (for an example see Dimitrijevic and Saric [6]). Others have proposed a Lagrangianbased approach for the asymmetric GTSP (Noon and Bean [17]) or a branchandcut algorithm for the symmetric GTSP (Fischetti et al. [8]). Fischetti et al. [7] have studied the symmetric GTSP polytope. Recently Pop [18] and Kara, Guden, and Koc [10] have proposed new formulations for the GTSP. In spite of the similarities between the planning problem and the various problems we have just mentioned, our problem seems to be completely new and a major portion of the present article will be devoted to its formulation as a mathematical program.
As mentioned before, although the objective of the Company is to minimize the total time needed to move the shuttles between configurations, the main difficulty faced by the Company is the large number of configurations required to cover all the tests in the system that it currently uses. Hence our first objective is to try to reduce the number of configurations. To achieve this we tackle the planning problem in two steps. First we construct a partition of the set of tests into subsets that can be carried out within a single configuration. We call this problem the covering problem since we are looking for a family of configurations that covers each and every test. Then we solve the optimal sequence problem in order to find the best sequence of configurations (using only those configurations that are in the solution of the covering problem). Since the decomposition of the planning problem into a covering problem and a sequencing problem does not always yield an optimal solution, we also present a global formulation of the planning problem.
Our article is organized as follows. The “Methods” section deals with the modelling and solution of the planning problem. It includes a subsection on shuttles and probes; a subsection on power chains and avoidance of collisions; a subsection on probes, points of interest, and reachability constraints; subsections on incompatibility constraints and tests and feasibility constraints, respectively; a subsection on the partial covering problem; a subsection on a greedy algorithm for the covering problem; a subsection on the optimal sequence problem; and finally a subsection on a global formulation of the planning problem. The article continues with a section on “Results and discussion” and ends with the “Conclusion” section.
Methods
Shuttles and probes
We assign the indices 0,1,…,7 to the eight shuttles in the following way: the shuttles that are above the board are labelled 0, 1, 2, 3 in the clockwise order starting with the frontleft shuttle and the shuttles below are labelled 4, 5, 6, 7 in a similar way. Hence Shuttle 0 is the frontleft shuttle that is above the board, Shuttle 1 is the backleft shuttle above the board, Shuttle 2 the backright shuttle above the board, and so on. The dimensions of each shuttle are 195 mm (in the horizontal direction) and 160 mm (in the vertical direction). The dimensions of the board are 1050 mm (in the horizontal direction) and 850 mm (in the vertical direction). We will use these constants in the model but obviously they can be replaced by other constants if the covering problem must be solved for another system. Each shuttle has a preferred corner, corresponding to the point where its power chain is attached to the board. For instance, the preferred corner of the frontleft shuttle that is above (resp. below) the board is the frontleft corner of this shuttle.
The initial configuration is the configuration in which the preferred corner of each shuttle is located at the corresponding board corner. For instance, the initial coordinates of the preferred corner of the backleft shuttle are (0,850). A given board cannot be introduced into (or removed from) the FP system unless it is in the initial configuration. Hence when the board is introduced into the FP system, one computes the tests that can be carried out within this configuration before considering other configurations.
In our model the xcoordinate of Shuttle k (for k∈{0,1,…,7}) will be denoted by S _{2k } and its ycoordinate by S _{2k+1}: those two expressions are variables since we are looking for “good” configurations and the goal of the model is to find them. The probes, which can come into contact with points of interest (or points, for short), are attached to their respective shuttles. The number of probes in the system under consideration is 21. The expression k(p) will denote the shuttle to which the probe p is attached, for p in {0,1,2,…,20}. For each shuttle we also know its xoffset and yoffset, denoted respectively by O _{ p1} and O _{ p2}. (Note that O _{ p1} and O _{ p2} are constants, not variables.) The coordinates of the point where the probe p is attached to the shuttle k(p) are thus equal to S _{2k(p)}+O _{ p1} and S _{2k(p)+1}+O _{ p2}, respectively.
Power chains and avoidance of collisions

between the power chain of a given shuttle and any other shuttle;

between the power chains of any two shuttles; and

between two shuttles.
We now turn to the five cases that arise when considering the avoidance of collisions between the power chain of the frontleft shuttle and any other shuttle. In Fig. 3 the frontleft shuttle is depicted in red, the other shuttle in blue, and the forbidden region in black.
 1.
the other shuttle is included within the vertical strip (i.e., \(S^{\prime }_{0} \geq S_{0}\) holds);
 2.
the other shuttle is included within the upper horizontal strip (i.e., \(S^{\prime }_{1} \geq \text {max} \{460,S_{1}\}\) holds) and S _{1} is at least equal to 300;
 3.
the other shuttle is included within the upper horizontal strip (i.e., \(S^{\prime }_{1} \geq S_{1} + 160\) holds) and S _{1} is at most equal to 300;
 4.
the other shuttle is included within the lower horizontal strip (i.e., \(S^{\prime }_{0} \geq 350\) and \(S^{\prime }_{1} + 160 \leq 300\) hold), S _{0} is at least equal to 350, and S _{1} at least equal to 300;
 5.
the other shuttle is included within the lower horizontal strip (i.e., \(S^{\prime }_{0} \geq 350\) and \(S^{\prime }_{1} + 160 \leq S_{1}\) hold), S _{0} is at least equal to 350, and S _{1} at most equal to 300.
The above constraints are “abstract” in the sense that \(S^{\prime }_{0}\) and \(S^{\prime }_{1}\) represent the avoidance corner of an anonymous shuttle. Actually, to model the requirement that there is no collision between the power chain of the frontleft shuttle and any other shuttle, we need three groups of 12 constraints, each corresponding to one of the following shuttles: the backleft shuttle (\(S^{\prime }_{0} = S_{2}\), \(S^{\prime }_{1} = S_{3}  160\)), the backright shuttle (\(S^{\prime }_{0} = S_{4}  195\), \(S^{\prime }_{1} = S_{5}  160\)), and the frontright shuttle (\(S^{\prime }_{0} = S_{6}  195\), \(S^{\prime }_{1} = S_{7}\)). We then obtain a complete set of constraints for the frontleft shuttle, i.e., 36 constraints. This set requires the introduction of 15 binary variables. We need similar sets of constraints and binary variables for the other shuttles. In total there will be 60 binary variables and 144 constraints.

Given that no two shuttles intersect (see below) and no shuttle has a nonempty intersection with the avoidance region of any other shuttle, it is enough to impose the condition S _{3}≥S _{1} in order to prevent the avoidance regions of the frontleft and backleft shuttles from having a nonempty intersection.

The backright shuttle cannot belong to the lower horizontal region (or at least the part of the lower horizontal region that is not already in the vertical region). Otherwise the avoidance region of the backright shuttle would have a nonempty intersection with the frontleft shuttle or the avoidance region of the frontleft shuttle. In practice this means that the variables y _{8} and y _{9} must equal 0.

The frontright shuttle cannot belong to the upper horizontal region (or at least the part of the upper horizontal region that is not already in the vertical region). Otherwise the avoidance region of the frontright shuttle would have a nonempty intersection with the frontleft shuttle or the avoidance region of the frontleft shuttle. In practice this means that the variables y _{11} and y _{12} must equal 0.
As before, the variables \(S^{\prime }_{0}\) and \(S^{\prime }_{1}\) must be replaced by the correct expressions for every shuttle other than the frontleft shuttle. The three other pairs (backleft and backright, backleft and frontright, backright and frontright) must also be taken into account. For this kind of constraints a total of 24 binary variables and 30 relations are needed.
We now have a complete system of constraints preventing collisions between shuttles and power chains that are above the board. Of course a similar system is required for the shuttles and power chains that are below the board. All these constraints will be referred to as the collision avoidance constraints and denoted by CAC(S _{ u },y _{ r }), where the variables of the form y _{ r } are the auxiliary variables.
Probes, points of interest, and reachability constraints
These inequalities (called reachability constraints) are required for each couple (α,p). The set of reachability constraints will be denoted by REACH(S _{ u },X _{ α p }).
Incompatibility constraints
These constraints are not necessary for modelling our problem but allow us to strengthen its linear programming relaxation. Assume that α and β denote two points of interest and p and q two probes attached to the same shuttle. It is easy to derive from the reachability constraints some conditions implying that X _{ α p } and X _{ β q } cannot both equal 1. So for each pair of couples (α,p) and (β,q) satisfying those conditions, we may add the constraint X _{ α p }+X _{ β q }≤1 to the model. In practice we do not add all the incompatibility constraints to the model: rather we solve its linear relaxation and add to the model all such constraints that are violated in the current optimal solution and verify X _{ α p }≥0.2 and X _{ β q }≥0.2 in the current optimal solution. The set of all incompatibility constraints included into the model will be denoted by INC(X _{ α p }).
Tests and feasibility constraints
Proposition 2.1
for all sets M, Q such that M is not empty, Q is a subset of probes, and \(\overline {Q}\) equals M−1. They will be called feasibility constraints and denoted by FEAS(X _{ α p },Y _{ ℓ }). Proposition 2.1 implies that if Y _{ ℓ } equals 1, then the graph G _{ ℓ } contains a matching of the required type and test ℓ can be carried out within the current configuration.
The partial covering problem
It is natural to ask the following question: what is the maximum number of tests that can be carried out while the system is in a given configuration? This problem, which we call the partial covering problem, can be formulated as follows: maximize the function \(\sum _{\ell } Y_{\ell }\) subject to the collision avoidance constraints CAC(S _{ u },y _{ r }), the reachability constraints REACH(S _{ u },X _{ α p }), the incompatibility constraints INC(X _{ α p }), the feasibility constraints FEAS(X _{ α p },Y _{ ℓ }), the lower and upper bound constraints on all the variables, and the integrality constraints on the binary variables. The resulting mixed integer linear program can be solved by using a commercial solver.
A greedy algorithm for the covering problem
The covering problem can be solved in a heuristic fashion through repeated calls of an algorithm for solving the partial covering problem. This method is summarized in Algorithm 1. Note that in the first line of the loop body, \({\mathcal {T}}\) can be replaced by a subset of tests. Then one must determine which of the omitted tests are covered by the configuration C before removing them from \({\mathcal {T}}\).
The optimal sequence problem
A global formulation of the planning problem
We now give a formulation of the planning problem that is global but unlikely to be solved for large data sets. In this formulation we are looking for several configurations at once, so that each test is covered by at least one configuration. We assume that there are at most n configurations. We introduce a group of variables \(\left (S^{i}_{u}, y^{i}_{r}, X^{i}_{\alpha p}, Y^{i}_{\ell } \right)\) for each i∈{1,2,…,n}, that is, for each potential configuration. The variable \(Y^{i}_{\ell }\) equals 1 if and only if the test ℓ is covered by the configuration represented by the shuttles coordinates \(S^{i}_{u}\). For each i the vector \(\left (S^{i}_{u}, y^{i}_{r}, X^{i}_{\alpha p}, Y^{i}_{\ell } \right)\) must satisfy the constraints in \(CAC \left (S^{i}_{u}, y^{i}_{r} \right)\), \(REACH \left (S^{i}_{u}, X^{i}_{\alpha p} \right)\), \(INC \left (X^{i}_{\alpha p} \right)\), and \(FEAS \left (X^{i}_{\alpha p}, Y^{i}_{\ell } \right)\), as well as the bound and nonnegativity constraints on the variables and the integrality constraints on all the variables except the \(S^{i}_{u}\).
This model is a mixed integer program with linear constraints and a nonlinear objective function. It can be linearized by introducing the nonnegative real variables D _{ ij }, where D _{ ij } stands for the product d _{ ij } z _{ ij } for each i and j with i<j. After replacing the objective function by \(\sum _{i=1}^{n1} \sum _{j=i+1}^{n} D_{ij}\) and adding the constraints D _{ ij }≥d _{ ij }−M(1−z _{ ij }) (where M is a constant larger than any distance between two configurations), we obtain a model of our problem that is actually a mixed integer linear program.
We expect that n (the maximum number of configurations) will be relatively small for most data sets, i.e., smaller than 30. If the number of tests is large, however, the above MILP will be hard to solve and one will have to investigate the use of column generation or other decomposition techniques for solving our problem. We also note that the set of solutions of this model exhibits many symmetries. This difficulty could be partially overcome by introducing the constraints w _{ i }≥w _{ i+1} (for i in {1,2,…,n−1}) into the model.
Results and discussion
In this section we present results pertaining to the solution of the covering and sequencing subproblems. As mentioned in the subsection “Methods”, the global formulation cannot be used for large data sets, particularly the kind of data sets that the Company must handle. We start by describing the format of each data set, consisting of a probe file, a point file, and a test file. The probe file contains the description of each probe, namely: a numerical identifier; the string “top” or “bot” to indicate whether the shuttle to which the probe is attached is on top or on bottom of the board; a string indicating the position of that shuttle (for instance “fl” refers to a frontleft shuttle); and the coordinates of the point of attachment of the probe with respect to the preferred corner of the shuttle to which it is attached. Here is an example of such a description.
0 top fl 65.0 79.0
This means that Probe 0 is attached to the frontleft shuttle on top of the board and that it is attached to this shuttle at the point of coordinates (65.0,79.0) (since the preferred corner of a frontleft shuttle is the point of coordinates (0.0,0.0)). The point file contains the description of each point, i.e., a numerical identifier and the coordinates of that point. For example the line corresponding to Point 0 is the following.
0 525.0 425.0
The test file consists of a sequence of test descriptions (each of which occupying several lines). For instance the description of Test 4908 is as follows.
Characteristics of the instances
Instance identifier  Nb. of probes  Nb. of points  Nb. of tests  Nb. of nets 

Dataset3  21  1034  2035  4388 
Dataset4  21  7445  9832  19664 
7700FC  21  3016  4423  10996 
pinPCB_15mils  21  6659  3331  6659 
In our experiments we solved the covering problem by using Cplex to find a solution of each of the partial covering problems. Note that Cplex implements a branchandbound algorithm for solving mixed integer linear programming problems (see Nemhauser and Wolsey [16] for a description of the branchandbound method). Our initial intention was to solve the covering problem by solving partial covering problems until all the tests had been covered, as explained in the subsection “Methods”. Unfortunately the number of constraints of our model is huge and including into it all the feasible tests consumed too much memory. Therefore instead of solving a partial covering problem including all the feasible tests, we included at most 400 tests in each of the successive partial covering problems solved by our algorithm. The configuration obtained after solving a given partial covering problem may actually cover more than the number of covered tests indicated in the solution; therefore we look for all the tests covered by the current configuration before solving the next partial covering problem.
Results. Real time represents the time (in minutes) needed to solve the covering problem, User time the time (in minutes) consumed by all the processors, Nb. of config. the number of partial covering problems that were solved, and Sol. value the optimal value of the sequencing problem described in the subsection “Methods”
Instance  Nb. feasible tests  Real time  User time  Nb. of config.  Sol. value 

Dataset390  1404  65  192  28  12531.5 
Dataset3180  1404  80  281  24  12927.5 
Dataset3270  1404  116  387  26  11370.3 
Dataset490  9813  57  141  17  6887.0 
Dataset4180  9813  62  188  14  7616.6 
Dataset4270  9813  81  292  15  7016.7 
7700FC90  2855  89  139  20  9953.6 
7700FC180  2855  104  185  17  8347.6 
7700FC270  2855  77  206  15  6844.7 
pinPCB_15mils90  2360  60  103  13  6178.8 
pinPCB_15mils180  2360  65  164  11  5301.2 
pinPCB_15mils270  2360  81  261  11  5284.0 
Intuitively, if we spend more time finding a good solution for each of the partial covering problems, we should be able to cover all the tests with fewer configurations and hence obtain a better solution of the planning problem. With one exception (Dataset490), the results in Table 2 show that spending 270 seconds to solve each partial covering problem always yields a solution that is better (i.e., of smaller length) than those obtained after spending only 90 or 180 seconds on each partial covering problem. This is true even if spending 90 or 180 seconds on each partial covering problem yields a solution with fewer configurations. Overall the results are very encouraging, because the system currently in use at the Company produces plans that may include hundreds of configurations while our solutions include fewer than 30 configurations. The real time consumed for computing a solution is considered reasonable by the Company, since the time needed to test a single board is itself substantial. Therefore it is feasible to spend one hour or so preparing the sequence of configurations that will be used for testing a specific board.
Conclusion
In this article we have shown that the use of modelling and mathematical programming yields solutions of the test planning problem that are much better than those currently used by the Company. The new solutions can be obtained within times that are reasonable. Our results indicate that the system currently used by the Company could be replaced by a system based on mathematical programming. More work remains to be done, however, in order to strenghten the formulation of the partial covering problem. In particular we would like to find new families of cutting planes, whose introduction into the model will speed up the solution process and thus yield better solutions of the partial covering problem. Another avenue is to design heuristics (not making use of MILP models) in order to cover a large number of tests with few configurations. One could then use the MILP model described in section “Methods” to cover the remaining tests, presumably those complicated tests that include three or more nets. These improvements may enable us to find solutions of the planning problem that are as good as those reported in this article but take less time to compute. As for the model in the subsection “Methods”, we could test it on small data sets and then look for more sophisticated approaches for solving it, in the hope of computing solutions for realworld problems within reasonable times.
Declarations
Funding
Some of the work described in this article was carried out while Mario Morfin was a postdoctoral fellow at the Company. His two internships were supported by Mitacs Inc. and NSERC, respectively, and were also partially supported by the Company.
Authors’ contributions
The four authors started collaborating with the Company during the 2010 FieldsMITACS Industrial ProblemSolving Workshop. Together they proposed a first attempt at modelling the problem submitted by the Company to the workshop. MM then spent two semesters at the Company in order to understand and improve the system the Company is currently using. His work was supervised by SC. MM and OM worked on the model presented in our article and OM completed the computational work and the article itself. All authors read and approved the final manuscript.
Competing interests
None of the authors has any competing interests (financial or otherwise) regarding the work described in this article.
Publisher’s Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Open Access This article is distributed under the terms of the Creative Commons Attribution 4.0 International License(http://creativecommons.org/licenses/by/4.0/), which permits unrestricted use, distribution, and reproduction in any medium, provided you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license, and indicate if changes were made.
Authors’ Affiliations
References
 Ahn HR, Bae SW, Demaine ED, Demaine ML, Kim SS, Korman M, Reinbacher I, Son W (2011) Covering points by disjoint boxes with outliers. Comput Geometry 44(3):178–90.MathSciNetView ArticleMATHGoogle Scholar
 Applegate DL, Bixby RE, Chvátal V, Cook WJ (2006) The Traveling Salesman Problem: a computational study. Princeton Series in Applied Mathematics. Princeton University Press, Princeton.MATHGoogle Scholar
 Arkin EM, Hassin R (1994) Approximation algorithms for the geometric covering salesman problem. Discret Appl Math 55(3):197–218.MathSciNetView ArticleMATHGoogle Scholar
 Chvátal V (1983) Linear programming. Freeman and Company, WH. New York.MATHGoogle Scholar
 Current JR, Schilling DA (1989) The Covering Salesman Problem. Transp Sci 23(3):208–13.MathSciNetView ArticleMATHGoogle Scholar
 Dimitrijevic V, Saric Z (1997) An efficient transformation of the generalized traveling salesman problem into traveling salesman problem on digraphs. Inf Sci 102:105–10.MathSciNetView ArticleMATHGoogle Scholar
 Fischetti M, Gonzales JJS, Toth P (1995) The symmetric generalized traveling salesman polytope. Networks 26:113–23.MathSciNetView ArticleMATHGoogle Scholar
 Fischetti M, Gonzales JJS, Toth P (1997) A Branchandcut Algorithm for the Symmetric Generalized Traveling Salesman Problem. Oper Res 45:378–94.MathSciNetView ArticleMATHGoogle Scholar
 Ford LR, Fulkerson DR (1962) Flows in Networks. Princeton University Press, Princeton.MATHGoogle Scholar
 Kara I, Guden H, Koc ON (2012) New formulations for the generalized traveling salesman problem In: Proceedings of the 6th International Conference on Applied Mathematics, Simulation, Modelling World Scientific and Engineering Academy and Society (WSEAS), 60–5.. Stevens Point, Wisconsin.Google Scholar
 Laporte G, Palekar U (2002) Some applications of the clustered travelling salesman problem. J Oper Res Soc 53:972–6.View ArticleMATHGoogle Scholar
 Laporte G, AsefVaziri A, Sriskandarajah C (1996) Some applications of the generalized traveling salesman problem. J Oper Res Soc 47:1461–7.View ArticleMATHGoogle Scholar
 Laporte G, Mercure H, Nobert Y (1987) Generalized travelling salesman problem through n sets of nodes: the asymmetrical cases. Discret Appl Math 18:185–97.MathSciNetView ArticleMATHGoogle Scholar
 Laporte G, Nobert Y (1983) Generalized travelling salesman problem through n sets of nodes: an integer programming approach. INFOR 21:61–75.MATHGoogle Scholar
 Laporte G, Semet F (1999) Computational evaluation of a transformation procedure for the symmetric generalized traveling salesman problem. INFOR 37:114–20.Google Scholar
 Nemhauser GL, Wolsey LA (1988) Integer and combinatorial optimization. Wiley, New York.View ArticleMATHGoogle Scholar
 Noon CE, Bean JC (1991) A Lagrangian based approach for the asymmetric generalized traveling salesman problem. Oper Res 39:623–32.MathSciNetView ArticleMATHGoogle Scholar
 Pop, PC (2007) New integer programming formulations of the generalized traveling salesman problem. Am J Appl Sci 4(11):932–7.View ArticleGoogle Scholar
 Riordan T (2011) Solving the problem of the traveling politician. https://eqn.princeton.edu/2011/12/_text_goes_here/. Accessed 2 Feb 2017.