Table of Contents

Youngdae Kim,; Mathematics and Computer Science Division; Argonne National Laboratory
Michael C. Ferris; Computer Science Department; UW-Madison
23 Jan 2019


This document describes the GAMS/SELKIE solver for equilibrium models. This is a research code, so you should set your expectations accordingly. It doesn't come with extensive documentation or a history of continuous development and improvement. To learn more about the algorithms SELKIE implements and related topics, see Y. Kim's Ph.D. thesis or home page.


To explicitly request that a model be solved with SELKIE, insert the statement

option EMP = selkie;

somewhere before the solve statement in the GAMS source. If SELKIE has been selected as the default EMP solver (e.g. by including EMP=selkie in the command line arguments of the GAMS run) the above statement is not necessary.

SELKIE-specific options can be specified by using a solver option file. While the content of an option file is solver-specific, the details of how to create an option file and instruct the solver to use it are not. This topic is covered in section The Solver Options File.

An example of a valid SELKIE option file is:

* lines starting with a star are comments
diagonalization_method  jacobi
parallel_jacobi         yes
output_group_log        yes


Option Description Default
agent_group groups of agents empty
convergence_tolerance convergence tolerance of residual 1e-6
coupling_constraints names of coupling constraints empty
coupling_variables names of coupling variables empty
cumulative_iteration_limit maximum number of cumulative iterations 5000
damping_factor damping factor b/w old and new values 1.0
dantzig_wolfe_initial_samples initial number of samples for DW decomposition 100
dantzig_wolfe_master_subsolveropt Subsolver option number for the master of DW
dantzig_wolfe_subproblem_subsolveropt Subsolver option number for the sub of DW
decomposition_method decomposition method to apply
diagonalization Diagonalization
dantzig_wolfe Dantzig-Wolfe
delay_residual_check delay residual checking 0
detect_independent_groups detect independent groups of agents 0
deviation_agent_list agents whose deviations are computed empty
deviation_convergence_tolerance convergence tolerance of deviation 1e-10
deviation_delay_tolerance deviation tolerance until residual is not checked 1e-8
diagonalization_method see the values below
gauss_seidel Gauss-Seidel
gauss_seidel_random Randomized Gauss-Seidel
gauss_seidel_random_sweep Randomized Gauss-Seidel with sweep
gauss_southwell Residual-based Gauss-Seidel
jacobi Jacobi
epsilon ignored if abs is less than this 1e-8
major_iteration_limit maximum number of major iterations 100
minor_iteration_limit maximum number of minor iterations 1000
nlp_solver NLP solver
antigone Antigone
baron Baron
conopt Conopt
conopt4 Conopt4
ipopt Ipopt
knitro Knitro
lindo Lindo
lindoglobal Lindoglobal
minos Minos
mosek Mosek
scip Scip
snopt Snopt
output whether to output logs 1
output_group_log whether to output group logs 0
output_iteration_log whether to output iteration logs 1
output_subsolver_log whether to output subsolver logs 0
parallel_agent_generation generate agents problems in parallel 0
parallel_jacobi run jacobi in parallel 0
proximal_increase_factor increasing factor for proximal term
proximal_initial_maximum initial maximum value of proximal term
proximal_maximum maximum of proximal term
proximal_merit_factor factor that is multiplied to residual
proximal_minimum minimum value of proximal term
proximal_perturbation penalty value of proximal term
proximal_perturbation_dual penalty value of dual proximal term
proximal_perturbation_primal penalty value of primal proximal term
proximal_residual_change ratio of residual change
proximal_shrink_factor shrinking factor for proximal term
proximal_use determine the proximal mode empty
record_ownership_within_group record ownership of agents within group 0
remove_isolated_implvar omit isolated implicit variables 1
shared_equation allow shared equation 0
stop_on_subsolver_failure stop selkie if subsolver fails to solve 1
subsolveropt subsolver option file number
Range: [1, 999]
time_limit maximum running time in seconds 3600
use_mcpopt use MCP to solve optimization agent 0
write_agent_model write agent model into file 1