Skip to content

robinlegault/SSFCTP

Repository files navigation

The Knapsack Transformation Algorithm (KTA) for solving the single-sink fixed-charge transportation problem (SSFCTP)

The KTA is described in Legault, R., Côté, JF. & Gendron, B. A novel reformulation for the single-sink fixed-charge transportation problem. Math. Program. (2023). https://doi.org/10.1007/s10107-023-01930-y

ARTICLE ABSTRACT

The single-sink fixed-charge transportation problem is known to have many applications in the area of manufacturing and transportation as well as being an important subproblem of the fixed-charge transportation problem. However, even the best algorithms from the literature do not fully leverage the structure of this problem, to the point of being surpassed by modern general-purpose mixed-integer programming solvers for large instances. We introduce a novel reformulation of the problem and study its theoretical properties. This reformulation leads to a range of new upper and lower bounds, dominance relations, linear relaxations, and filtering procedures. The resulting algorithm includes a heuristic phase and an exact phase, the main step of which is to solve a very small number of knapsack subproblems. Computational experiments are presented for existing and new types of instances. These tests indicate that the new algorithm systematically reduces the resolution time of the state-of-the-art exact methods by several orders of magnitude.

DIRECTORY STRUCTURE

main.c : simple example showing how to solve an instance of the SSFCTP using KTA

main_g2.c : example showing how to solve multiple instances of the SSFCTP using KTA to collect statistics (instances of Group 2)

Makefile : simple Makefile that can be used to execute the main file given as an example

combo.c : slightly modified version of the combo algorithm presented in "Dynamic programming and tight bounds for the 0-1 knapsack problem". The original code is made available by the authors: http://hjemmesider.diku.dk/~pisinger/codes.html. The combo algorithm is used within KTA to solve knapsack subproblems.

combo.h : header file associated with combo.c

generator.c : implements a range of classical and new instance generation methods for the SSFCTP

generator.h : header file associated with generator.c

ssfctp.c : principal file. Includes the functions solveSSFCTP and solveSSFCTP_detailed that can be used to solve instances of the SSFCTP using KTA

util.c : defines basic operations on data structures, random number generation method, etc.

util.h : header file associated with util.c. Defines the custom data structures that are used in the rest of the code

instances : folder containing the instances used for the experiments of Section 7.2

results : folder containing the detailed results of the experiments presented in Section 7.2

About

The Knapsack Transformation Algorithm (KTA) for solving the single-sink fixed-charge transportation problem (SSFCTP)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published