I am trying to find minimum weighted cycles with fixed number of edges without shared vertices in a weighted directed graph. Specifically, say I need to find 4 cycles (one cycle per user) each with 5, 10, 15, and 20 edges (so the edge number of each cycle is fixed), such that no vertices in each cycles would be the same (or each vertice can be included in at most one cycle), and the sum of weights on all selected edges should be minimised. Note that for each user, the weight on each edge is different (weight is non-negative), and self-loop is prohibited.
I find it difficult to solve the problem directly, so I formed a binary integer linear programming problem as attached, where $W^u_{i,j}$ is a non-negative constant for each edge ($i,j$) of each user $u$, and $X^u_{i,j}$ are binary varibles $\{0 , 1\}$, constraint 1 specifies flow conservation, constraint 2 is edge number constraint of each cycle, constraint 3 is to specify that each vertice is used by at most 1 user and each vertice can only have one outgoing flow.
Any idea to solve this problem in its original graph form or the optimization problem plz? I trid to use Mosek and Lingo to solve the BILP problem, it works fine for a small scale problem. But it takes a ridiculous amount of time to solve large scale problem. Any idea on problem decomposition ? Many thanks.
Here are three alternative approaches, with varying degrees of both performance and implementation effort: