Type: | Package |
Title: | Analysis of Cost Allocation for Airport Problems |
Version: | 0.1.0 |
Date: | 2025-04-29 |
Maintainer: | Alejandro Bernárdez Ferradás <alejandro.bernardez@uvigo.es> |
Description: | Airport problems, introduced by Littlechild and Owen (1973) https://www.jstor.org/stable/2629727, are cost allocation problems where agents share the cost of a facility (or service) based on their ordered needs. Valid allocations must satisfy no-subsidy constraints, meaning that no group of agents contributes more than the highest cost of its members (i.e., no agent is allowed to subsidize another). A rule is a mechanism that selects an allocation vector for a given problem. This package computes several rules proposed in the literature, including both standard rules and their variants, such as weighted versions, rules for clones, and rules based on the agents’ hierarchy order. These rules can be applied to various problems of interest, including the allocation of liabilities and the maintenance of irrigation systems, among others. Moreover, the package provides functions for graphical representation, enabling users to visually compare the outcomes produced by each rule, or to display the no-subsidy set. In addition, it includes four datasets illustrating different applications and examples of airport problems. For a more detailed explanation of all concepts, see Thomson (2024) <doi:10.1016/j.mathsocsci.2024.03.007>. |
License: | GPL-3 |
Depends: | R (≥ 3.5) |
Imports: | graphics, grDevices, magrittr, plotly, stats, utils |
Suggests: | rmarkdown |
Encoding: | UTF-8 |
LazyData: | True |
NeedsCompilation: | no |
RoxygenNote: | 7.3.2 |
Packaged: | 2025-05-01 10:46:52 UTC; alebe |
Author: | Alejandro Bernárdez Ferradás
|
Repository: | CRAN |
Date/Publication: | 2025-05-05 10:00:02 UTC |
Birmingham Airport data
Description
The data includes several variables describing 13,572 aircraft operations — 6,876 take-offs and 6,876 landings — involving 11 different aircraft types at Birmingham Airport during the period 1968–1969.
Usage
Birmingham
Format
A data frame with 11 rows and 9 columns (variables):
- type
Aircraft type
- i
Aircraft index (subscript)
- eta
Number of movements
- p
Average fee per movement (in pounds)
- d
Estimated diversion cost per movement (in pounds)
- b
Average benefit per movement (in pounds)
- l
Runway user index
- c
Maintenance cost per movement (in pounds)
- g
Assumed capital cost (in pounds)
Source
Littlechild, S. C. and Thompson, G. F. (1977). Aircraft landing fees: a game theory approach. The Bell Journal of Economics, 8, 186-204.
Examples
# Based on capital cost (g)
G <- multiclonesrules(Birmingham$g, Birmingham$eta, c("SEC", "CEC", "SM"),
group_contribution = FALSE, agents_names = Birmingham$i, labels = FALSE)
(cost_allocation <- round(G, 2))
# Based on capital cost (g) + add maintenance cost per movement (c)
sweep(cost_allocation, MARGIN = 2, Birmingham$c, FUN = "+")
Core-center rule
Description
CCrule
calculates the contribution vector selected by the CC rule.
Usage
CCrule(c)
Arguments
c |
A numeric cost vector. |
Details
The core-center rule, CC, assigns to each c\in C^N
the contribution vector given by the mean value of
U(c)\thicksim U(\text{NS}(c))
, that is,
\text{CC}(c)=\mathbb{E}[U(\text{NS}(c))].
Therefore, this rule is the center of gravity of the set of allocations satisfying the no-subsidy constraints. It
coincides with the core-center of the cooperative game v
associated with c\in C^N
.
Value
A numeric contribution vector, where each element represents the payment of the different agents.
Note
The execution time of the function may significantly increase if the number of agents exceeds 150.
References
González-Díaz, J. and Sánchez-Rodríguez, E. (2007). A natural selection from the core of a TU game: the core-center. International Journal of Game Theory, 36, 27-26.
González-Díaz, J., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez (2015). Monotonicity of the core-center of the airport game. TOP, 23, 773-798.
González-Díaz, J., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez (2016). Airport games: the core and its center. Mathematical Social Sciences, 82, 105-115.
See Also
NSset
, basicrule
, clonesrule
hierarchicalrule
Examples
c <- c(1, 3, 7, 10) # Cost vector
CCrule(c)
Constrained equal benefits rule
Description
CEBrule
calculates the contribution vector selected by the CEB rule.
Usage
CEBrule(c)
Arguments
c |
A numeric cost vector. |
Details
For each c\in C^N
and each i\in N
, the constrained equal benefits rule is defined by
\text{CEB}_i(c)=\text{max}\{c_i-\beta,\ 0\}
where \beta>0
is chosen so that \sum\limits^n_{i=1}\text{CEB}_i(c)=c_n
.
This rule focuses on the benefits each agent receives from not having to fully cover their own needs, aiming to distribute them as equitably as possible, without any agent subsidizing another.
The contribution selected by the CEB rule for a problem c \in C^N
coincides with the payoff vector assigned
by the modified nucleolus.
Value
A numeric contribution vector, where each element represents the payment of the different agents.
References
Hu, C.-C., Tsay, M.-H., and Yeh, C.-H. (2012). Axiomatic and strategic justifications for the constrained equal benefits rule in the airport problem. Games and Economic Behavior, 75, 185-197.
Potters, J. and Sudhölter, P. (1999). Airport problems and consistent allocation rules. Mathematical Social Sciences, 38, 83–102.
Sudhölter, P. (1997). The modified nucleolus: Properties and axiomatizations. International Journal of Game Theory, 26, 146-182.
Thomson, W. (2024). Cost allocation and airport problems. Mathematical Social Sciences, 31(C), 17–31.
See Also
basicrule
, weightedrule
, clonesrule
, hierarchicalrule
Examples
c <- c(1, 3, 7, 10) # Cost vector
CEBrule(c)
Constrained equal contributions rule
Description
CECrule
calculates the contribution vector selected by the CEC rule.
Usage
CECrule(c)
Arguments
c |
A numeric cost vector. |
Details
Let N^i_{-}\{j\in N:c_j<c_i\}
. For each c\in C^N
and each i\in N
, the constrained equal contributions rule is defined by
\text{CEC}_i(c)=\text{min}\left\{\dfrac{1}{r-i+1}\left(c_r-\sum\limits_{j\in N^i_{-}}\text{CEC}_j(c)\right):r=1,\dots,n\right\}.
This rule offers a different approach to achieving equality. Contributions are distributed as evenly as possible while ensuring compliance with the no-subsidy constraints.
The contribution selected by the CEC rule for a problem c \in C^N
coincides with the payoff vector assigned
by the Dutta-Ray solution (denoted by \text{EA}
) to the associated airport game v\in G^N
, that is, \text{CEC}(c)=\text{EA}(v)
.
Value
A numeric contribution vector, where each element represents the payment of the different agents.
References
Aadland, D. and Kolpin, V. (1998). Shared irrigation costs: an empirical and axiomatic analysis. Mathematical Social Sciences, 35, 203-218.
Thomson, W. (2024). Cost allocation and airport problems. Mathematical Social Sciences, 31(C), 17–31.
See Also
SIGMArule
, basicrule
, weightedrule
, clonesrule
, hierarchicalrule
Examples
c <- c(1, 3, 7, 10) # Cost vector
CECrule(c)
Constrained proportional rule
Description
CPrule
calculates the contribution vector selected by the CP rule.
Usage
CPrule(c)
Arguments
c |
A numeric cost vector. |
Details
For each c\in C^N
, let c_0=0
and (q_0,q_1,\dots,q_s)\in\mathbb{N}^{s+1}
, with
0=q_0<q_1<\dots<q_s=n
, defined recursively, for j\geq 0
, by
q_{j+1}=\text{max}\Bigg\{q\in N_{+}^{q_j}:\dfrac{c_q-c_{q_j}}{c_{q_j+1}+\dots+c_q}=\text{min}\bigg\{\dfrac{c_r-c_{q_j}}{c_{q_j+1}+\dots+c_r}:r\in N_{+}^{q_j}\bigg\}\Bigg\}.
Then, for each j\in\{0,\dots,s-1\}
and each i\in Q_j=\{q_j+1,\dots,q_{j+1}\}
,
\text{CP}_i(c)=\dfrac{c_i}{c(Q_j)}(c_{q_{j+1}}-c_{q_j}).
With this rule, calculating each agent's contribution is not always straightforward. When a coalition of agents violates the NS constraint, it becomes necessary to proceed in two or more steps.
The core idea of this rule is proportionality, aiming to ensure that agents' contributions are as close as possible to being proportional to the cost parameters, while respecting these constraints.
Value
A numeric contribution vector, where each element represents the payment of the different agents.
References
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025). Airport problems with cloned agents. [Preprint manuscript].
Thomson, W. (2024). Cost allocation and airport problems. Mathematical Social Sciences, 31(C), 17–31.
See Also
basicrule
, weightedrule
, clonesrule
, hierarchicalrule
Examples
c <- c(1, 3, 7, 10) # Cost vector
CPrule(c)
Verification of compliance with the no-subsidy constraints
Description
NScheck
evaluates whether or not the no-subsidy constraint is satisfied and, if not,
it can also determine one of the coalitions of agents that violates it, as long as the user requests it.
Usage
NScheck(
c,
x,
eta = rep(1, length(x)),
group_contribution = TRUE,
coalition = FALSE,
tol = 1e-06
)
Arguments
c |
A numeric cost vector. |
x |
A numeric cost allocation vector. |
eta |
A numeric vector representing the size of each group of cloned agents. All its elements must be positive integers. By default, all components of |
group_contribution |
A logical value.
By default, if |
coalition |
A logical value. By default, if |
tol |
Tolerance level for evaluating compliance with the NS constraint. |
Details
For each c\in C^N
let H(c)=\{x\in\mathbb{R}:x(N)=c_n\}
be the hyperplane of \mathbb{R}^N
given by all the vectors whose coordinates add up to c_n
. A cost allocation for c\in C^N
is a vector
x\in H(c)
such that 0\leq x\leq c
. The component x_i
is the contribution requested from agent i
.
Let X(c)
be the set of cost allocations for c\in C^N
. Given x\in X(c)
, the difference c_i-x_i
is the
benefit of agent i
at x
.
A basic requirement is that at an allocation x\in X(c)
on group N'\subset N
of agents would subsidize the other agents by contributing more than what the group would have to pay on its own. The no-subsidy constraint
for the group N'\subset N
is x(N')\geq \text{max}\{c_j:j\in N'\}
. The set of cost allocations for c\in C^N
that satisfy the no-subsidy
constraints, the no-subsidy set for short, is given by:
NS(c)=\{x\in X(c):x(N')\leq\text{max}\{c_j:j\in N'\}, \;\text{for all}\; N'\subset N\}
= \{x\in \mathbb{R}^N:x\geq 0, \ x(N)=c_n, \ x_1+\dots+x_i\leq c_i,\;\text{for all}\;i\in N\backslash \{n\}\}
Thus, the no-subsidy correspondence NS assigns to each c\in C^N
the set NS(c)
.
Nevertheless, when a problem has group of cloned agents, the structure of its no-subsidy set is simpler than
when all the cost parameters are different. Let t\in N
, \mathcal{A}_t^N
be the set of pairs (\eta,c)\in \mathbb{N}^t\times\mathbb{R}^t
and N_s^{\eta}=N_s^{\eta\ast c}=\{j\in N:(n\ast c)_j=c_s\}
.
Then the no subsidy set for \eta\ast c \in C^N
is:
NS(\eta\ast c)=\{x\in\mathbb{R}:x\geq 0,\ x(N)=c_t,\ x(N_1^{\eta})+\dots+x(N^{\eta}_s)\leq c_s, \;\text{for all}\; s<t\}.
It is worth noting that all allocation rules proposed in this package satisfy this property.
Value
If coalition = TRUE
, a logical value (TRUE or FALSE) indicating compliance with the NS constraint.
Otherwise, if coalition = FALSE
, a list containing the following items:
flag | A logical value (TRUE or FALSE) indicating compliance with the NS constraint. | |
eta | If the NS constraint is violated, the coalition of agents that breach it will be returned. | |
References
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025). Airport problems with cloned agents. [Preprint manuscript].
Thomson, W. (2024). Cost allocation and airport problems. Mathematical Social Sciences, 31(C), 17–31.
See Also
NSfaces
, NSstructure
, NSset
, comparisonallocations
Examples
# Compliance with the NS constraint
c <- c(2, 5, 9)
x <- SECrule(c)
NScheck(c, x)
# Non-compliance with the NS constraint
c <- c(2, 3, 7, 10)
x <- c(1, 2, 5, 2)
NScheck(c, x, coalition = TRUE)
Face games associated with an airport problem
Description
NSfaces
determines the airport problems defining the two components of the decomposition
of one specific face game.
Usage
NSfaces(c, R)
Arguments
c |
A numeric cost vector. |
R |
A numeric vector representing the agents forming the coalition |
Details
Let c\in C^N
be an airport problem and v\in G^N
its associated cost game, for each non-empty proper coalition R\in 2^N\backslash\{\emptyset, N\}
define the N\backslash R
-face of Core(v)
as the set
F_{N\backslash R}(c)=\text{Core}(v)\cap\{x\in \mathbb{R}^N:x(R)=v(R)\}.
Also, the N\backslash R
-face game v_{F_{N\backslash R}}\in G^N
is given by v_{F_{N\backslash R}}(S)=v(S\cup R)-v(R)+v(S\cap R),\ S\in 2^N
.
It turns out that F_{N\backslash R}(c)=\text{Core}(v_{F_{N\backslash R}})
, the N\backslash R
-face of the core of the associated cost game is the
core of the N\backslash R
-face game. Let r\in N
such that c_r=v(R)=\text{max}\{c_i:i\in R\}
and denote R_+=\{k\in N:k>r\}
.
Consider the airport problems
c_{|R}=(0_{N\backslash R}, c_R)\in C^N \text{ and } c_{|R_+}=(0_{N\backslash R_+},c_{r+1}-c_r,\dots,c_n-c_r)\in C^N
with associated games v^{|R}\in G^N
and v^{|R_+}\in G^N
, respectively. It is easy to see that the N\backslash R
-face game
v_{F_{N\backslash R}}\in G^N
is decomposable with respect to the partition R,N\backslash R
and its components are
v^{|R}
and v^{|R_+}
. Moreover,
F_{N\backslash R}(c)=NS(c_R)\times NS(c_{r+1}-c_r,\dots,c_n-c_r)\times 0_{N\backslash(R\cup R_+)}.
Therefore, the components of the face games of the associated cost game are associated cost games themselves.
In the N\backslash R
-face game, the players of R
play the game associated with the problem where
the agents of R
keep their cost parameters while the cost parameter of the agents in N\backslash R
is null.
On the other hand, since the players of R
already share c_r=v(R)
among themselves, the players of
N\backslash R
with an initial cost lower than c_r
now have their cost parameter equal to zero while the others
see their cost reduced by c_r
.
Value
A numeric matrix with two rows representing the decomposition of the R
-face game:
[1 , ] |
The first row is obtained by setting the cost of a specific coalition to zero while retaining the cost parameters of the complementary coalition. |
[2 , ] |
The second row is derived by subtracting the highest cost in the complementary coalition from each agent's cost, or setting it to zero if the result is negative. |
References
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025). Airport problems with cloned agents. [Preprint manuscript].
González-Díaz, J. and Sánchez-Rodríguez, E. (2008). Cores of convex and strictly convex games. Games and Economic Behavior, 62, 100-105.
Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2020). The boundary of the core of a balanced game: faces games. International Journal of Game Theory, 49(2), 579-599.
See Also
NScheck
, NSstructure
, NSset
, hierarchicalrule
Examples
c <- c(1, 3, 7, 10) # Cost vector
R <- c(3, 4) # Coalition of agents
NSfaces(c, R) # Components of the face game
Vertices and visualization of the NS set
Description
NSset
calculates the coordinates of the vertices that make up the NS set.
It also enables the generation of a graphical representation of the no-subsidy set in 1D, 2D, and 3D (available only when there are 2, 3, or 4 agents).
Usage
NSset(
c,
draw = FALSE,
dimension = NULL,
representation = "projection",
col = NULL,
agents_names = NULL,
labels = TRUE
)
Arguments
c |
A numeric cost vector. |
draw |
A logical value indicating whether the plot should be generated. By default, |
dimension |
A character string that specifies the dimension of the graphic. Possible values are |
representation |
A character string indicating which NS set is displayed. Possible values are |
col |
A character string reflecting the color tone of the NS set. By default, the color tone |
agents_names |
A vector defining the name assigned to each agent. By default, the names follow a sequence of natural numbers, starting from 1. |
labels |
A logical value indicating whether the coordinates of the points and the plot title should be displayed. By default, |
Details
For each c\in C^N
let H(c)=\{x\in\mathbb{R}:x(N)=c_n\}
be the hyperplane of \mathbb{R}^N
given by all the vectors whose coordinates add up to c_n
. A cost allocation for c\in C^N
is a vector
x\in H(c)
such that 0\leq x\leq c
. The component x_i
is the contribution requested from agent i
.
Let X(c)
be the set of cost allocations for c\in C^N
. Given x\in X(c)
, the difference c_i-x_I
is the
benefit of agent i
at x
.
A basic requirement is that at an allocation x\in X(c)
on group N'\subset N
of agents would subsidize the other agents by contributing more than what the group would have to pay on its own. The no-subsidy constraint
for the group N'\subset N
is x(N')\geq \text{max}\{c_j:j\in N'\}
. The set of cost allocations for c\in C^N
that satisfy the no-subsidy
constraints, the no-subsidy set for short, is given by:
NS(c)=\{x\in X(c):x(N')\leq\text{max}\{c_j:j\in N'\}, \;\text{for all}\; N'\subset N\}
= \{x\in \mathbb{R}^N:x\geq 0, \ x(N)=c_n, \ x_1+\dots+x_i\leq c_i,\;\text{for all}\;i\in N\backslash \{n\}\}
Thus, the no-subsidy correspondence NS assigns to each c\in C^N
the set NS(c)
.
Nevertheless, when a problem has group of cloned agents, the structure of its no-subsidy set is simpler than
when all the cost parameters are different. Let t\in N
, \mathcal{A}_t^N
be the set of pairs (\eta,c)\in \mathbb{N}^t\times\mathbb{R}^t
and N_s^{\eta}=N_s^{\eta\ast c}=\{j\in N:(n\ast c)_j=c_s\}
.
Then the no subsidy set for \eta\ast c \in C^N
is:
NS(\eta\ast c)=\{x\in\mathbb{R}:x\geq 0,\ x(N)=c_t,\ x(N_1^{\eta})+\dots+x(N^{\eta}_s)\leq c_s, \;\text{for all}\; s<t\}.
For any cost vector c
, if there are n
agents with different cost parameters, the number of faces is 2n-2
.
However, the number of full-dimensional faces is indeed affected by the presence of clones. Let t\in N
, (\eta,c)\in\mathcal{A}^N_t
, and
\eta\ast c \in C^N
, \text{NS}(\eta\ast c)
has n+t-2
full-dimensional faces if \eta_t=1
and n+t-1
full-dimensional faces otherwise.
On the other hand, the number of different extreme points of the set \text{NS}(\eta\ast c)
is: \eta_t \prod_{i \in T \setminus \{t\}} (\eta_i + 1)
(so, when there are no clones, the \text{NS}(c)
has 2^{n-1}
extreme points).
Value
A numeric matrix containing the vertices that determine the NS set.
Additionally, if draw = TRUE
and the number of agents is 2, 3, or 4, a plot displaying the faces and extreme points of the NS set will be generated.
References
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025). Airport problems with cloned agents. [Preprint manuscript].
González-Díaz, J., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2016). Airport games: the core and its center. Mathematical Social Sciences, 82, 105–115.
Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2020). The boundary of the core of a balanced game: faces games. International Journal of Game Theory, 49(2), 579-599.
See Also
plotallocations
, NScheck
, NSfaces
, NSstructure
Examples
# Projected NS set for 3 agents
c <- c(5, 10, 20) # Cost vector
NSset(c, draw = TRUE)
# Real and projected NS set for 3 agents
c <- c(1, 2, 3) # Cost vector
NSset(c, TRUE, "3D", "both")
# Projected NS set for 4 agents
c <- c(3, 3, 3, 10) # Cost vector
NSset(c, TRUE, "3D", "projection", "aquamarine",
c("Alex", "Estela", "Carmen", "Miguel"))
Composition of the no-subsidy set
Description
NSstructure
quantifies the key elements of the structure of the no-subsidy set.
Usage
NSstructure(cw, eta = rep(1, length(cw)))
Arguments
cw |
A numeric cost vector, with the same length as |
eta |
A numeric vector representing the size of each group of cloned agents. All its elements must be positive integers. By default, |
Details
For any cost vector c
, if there are n
agents with different cost parameters, the number of faces of the NS set is 2n-2
.
However, the number of full-dimensional faces is indeed affected by the presence of clones. Let t\in N
, (\eta,c)\in\mathcal{A}^N_t
, and
\eta\ast c \in C^N
, \text{NS}(\eta\ast c)
has n+t-2
full-dimensional faces if \eta_t=1
and n+t-1
full-dimensional faces otherwise.
On the other hand, the number of different extreme points of the set \text{NS}(\eta\ast c)
is: \eta_t \prod_{i \in T \setminus \{t\}} (\eta_i + 1)
(so, when there are no clones, the \text{NS}(c)
has 2^{n-1}
extreme points).
Let k\in\mathbb{N}
and denote by \lambda_k
the k
-dimensional Lebesgue measure. If X=(X_1,\dots,X_k)
is a random vector
with joint density function f
and \Omega
is a Borel set, then P(X\in\Omega)=\int_{\Omega}f(x)d\lambda_k
and the expected value of X
is \mathbb{E}[X]=\int_{\mathbb{R}^k}x f(x)d\lambda_k
. Given a Borel set \Omega\subset\mathbb{R}^k
of positive measure, \lambda_k(\Omega)>0
, we say that a random vector U=(U_1,\dots,U_k)
has a uniform
distribution on \Omega
, and we write U\thicksim U(\Omega)
, if U
has a probability density function f(x_1,\dots,x_k)=\frac{1}{\lambda_k(\Omega)}
if
(x_1,\dots, x_k)\in \Omega
and f(x_1,\dots,x_k)=0
otherwise. If a=(a_1,\dots,a_k)\in\mathbb{R}^k
with
0<a_1\leq \dots \leq a_k
, denote
V_k(a)=\displaystyle\int_0^{a_1}\dots\displaystyle\int_0^{a_k-\sum\limits_{j=1}^{k-1} x_j}d x_k\dots d x_1.
Therefore, for each c\in C^N
, the value V_{n-1}(c_{-n})
is the
(n-1)
-Lebesgue measure of NS_n(c)
, so \lambda_{n-1}(\text{NS}(c))=\sqrt{n}\lambda_{n-1}(\text{NS}_n(c))=\sqrt{n}V_{n-1}(c_{-n})
.
Value
A list containing the following items:
n.faces |
A positive integer representing the number of faces that form the NS set. |
n.full.dim.faces |
A positive integer indicating the number of full-dimensional faces forming the NS set. |
n.extreme.points |
A positive integer counting the number of extreme points of the NS set. |
actual.volume |
A positive number representing the volume of the NS set. |
projected.volume |
A positive number reflecting the projected volume of the NS set. |
References
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025). Airport problems with cloned agents. [Preprint manuscript].
González-Díaz, J., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2016). Airport games: the core and its center. Mathematical Social Sciences, 82, 105–115.
See Also
NScheck
, NSfaces
, NSset
, CCrule
Examples
# Without cloned agents
c <- c(1, 2, 3, 4)
NSstructure(c)
# With cloned agents
c <- c(1, 2)
eta <- c(3, 1)
NSstructure(c, eta)
Priority family of rules
Description
PRIORrule
calculates the contribution vector selected by a priority rule.
Usage
PRIORrule(c, order = NULL)
Arguments
c |
A numeric cost vector. |
order |
A numeric vector indicating the priority order of agents when making contributions. By default, agents follow their original indexing and contribute accordingly. |
Details
For each c \in C^N
and each i \in N
, a priority rule relative to \pi \in \Pi^N
is defined by
\text{P}^{\pi}_i(c)=\text{max}\Big\{0,\ c_i-\text{max}\{c_j:\pi(j)<\pi(i)\}\Big\}.
In this rule, each agent contributes at a different step, so that each one pays all that is necessary until reaching the no-subsidy constraint. Consequently, the agents who arrive first cover the cost of all subsequent agents whose cost is lower.
Value
A numeric contribution vector, where each element represents the payment of the different agents.
References
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025). Airport problems with cloned agents. [Preprint manuscript].
Thomson, W. (2024). Cost allocation and airport problems. Mathematical Social Sciences, 31(C), 17–31.
See Also
NSfaces
, basicrule
, hierarchicalrule
Examples
# Ascending order
c <- c(1, 3, 7, 10) # Cost vector
PRIORrule(c)
# Fluctuating order
c <- c(1, 3, 7, 10) # Cost vector
order <- c(2, 1, 4, 3) # Priority order
PRIORrule(c, order)
Peinador airport data
Description
The data includes several variables describing 833 aircraft operations — 418 take-offs and 415 landings — involving 27 different aircraft types at Peinador Airport (Vigo, Spain) during January 2025.
Usage
Peinador
Format
A data frame with 27 rows and 6 columns (variables):
- type
Aircraft type
- i
Aircraft index (subscript)
- TO
Number of takeoffs
- LDG
Number of landings
- MTOW
Maximum takeoff weight (in tons)
- MLW
Maximum landing weight (in tons)
Source
AENA. (2025, April 23). Estadísticas de tráfico aéreo: Consultas personalizadas. https://www.aena.es/es/estadisticas/consultas-personalizadas.html.
Examples
# Allocation by MTOW (in t)
multiclonesrules(Peinador$MTOW, Peinador$TO, c("SFC", "SEC", "CEC", "CP"),
labels = FALSE)
# Allocation by MLW (in t)
positives <- Peinador$LDG > 0
MLW <- Peinador$MLW[positives]
LDG <- Peinador$LDG[positives]
multiclonesrules(MLW, LDG, c("SFC", "SEC", "CEC", "CP"), labels = FALSE)
Sequential equal contributions rule
Description
SECrule
calculates the contribution vector selected by the SEC rule.
Usage
SECrule(c)
Arguments
c |
A numeric cost vector. |
Details
For each c\in C^N
and each i\in N
, the sequential equal contributions rule is defined by
\text{SEC}_i=\frac{c_1}{n}+\frac{c_2-c_1}{n-1}+\dots+\frac{c_i-c_{i-1}}{n-i+1}
This rule is based on applying an equal division to each segment separately, so that all agents using a given segment contribute equally to its cost. Each agent's contribution is then obtained as a sum of terms, one for each of the segments they use.
The contribution selected by the SEC rule for a problem c \in C^N
coincides with the payoff vector assigned
by the Shapley value to the associated cost game v\in G^N
, that is, \text{SEC}(c)=\text{Sh}(v)
.
Value
A numeric contribution vector, where each element represents the payment of the different agents.
References
Chun, Y., Hu, C.-C., and Yeh, C. (2012). Characterizations of the sequential equal contributions rule for the airport problem. International Journal of Economic Theory, 8, 77-85.
Littlechild, S.C. and Owen, G. (1973). A simple expression for the Shapley value in a special case. Management Science, 20, 370-372.
Thomson, W. (2024). Cost allocation and airport problems. Mathematical Social Sciences, 31(C), 17–31.
See Also
basicrule
, weightedrule
, clonesrule
, hierarchicalrule
Examples
c <- c(1, 3, 7, 10) # Cost vector
SECrule(c)
Sequential full contributions rule
Description
SFCrule
calculates the contribution vector selected by the SFC rule.
Usage
SFCrule(c)
Arguments
c |
A numeric cost vector. |
Details
For each c\in C^N
and each i\in N
, let N^i_{-}=\{j\in N:c_j<c_i
} and let N^i(c)\subseteq N
be defined by N^i(c)=\{j\in N:c_j=c_i\}
,
the sequential full contribution rule is defined by
\text{SFC}_i(c)=\frac{c_i-\text{max}\{c_j:j\in N^i_{-}\}}{|N_i(c)|}
According to this rule, an agent does not assist other agents with smaller needs than his own in covering the costs they require, even though he uses the same segments they use (similarly, he does not receive any assistance in covering his own segmental cost from agents with greater needs than his, even though these agents also use his segment). If multiple agents have the same cost parameters, they equally share the cost of the common segment they use.
Value
A numeric contribution vector, where each element represents the payment of the different agents.
References
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025). Airport problems with cloned agents. [Preprint manuscript].
Thomson, W. (2024). Cost allocation and airport problems. Mathematical Social Sciences, 31(C), 17–31.
See Also
PRIORrule
, basicrule
, weightedrule
, hierarchicalrule
Examples
c <- c(1, 3, 7, 10) # Cost vector
SFCrule(c)
Parametric family of rules
Description
SIGMArule
calculates the contribution vector selected by a SIGMA rule.
Usage
SIGMArule(c, a = 0.5)
Arguments
c |
A numeric cost vector. |
a |
A numeric value in the range [0,1], controlling the parameterization of the rule.
By default, |
Details
Let N^i_{-}=\{j\in N:j<i\}
. For each a \in [0,1]
, each c \in C^N
, and each i \in N\backslash \{n\}
, a \sigma^a
rule is defined by
\sigma^{a}_i(c)=\text{min}\Bigg\{\text{min}\bigg\{\dfrac{1}{r-(i-1)+a}\Big(c_r-\displaystyle\sum\limits_{j\in N^i_-}\sigma^{a}_{j}(c)\Big):r=i,\dots,n-1\bigg\},
\ \dfrac{1}{n+1-i}\Big(c_n-\displaystyle\sum\limits_{j\in N^i_-}\sigma_j^{a}(c)\Big)\Bigg\},
\text{and} \ \ \sigma_n^{a}(c)=c_n-\displaystyle\sum\limits_{i=1}^{n-1}\sigma_i^{a}(c).
In this rule, the closer the parameter a
is to 0, the more equal the distribution of payments among the agents will be, and vice versa.
In fact, it is easy to verify that \sigma^0=\text{CEC}\ \ \text{and} \ \ \sigma^1=\text{SM}
.
Value
A numeric contribution vector, where each element represents the payment of the different agents.
References
Thomson, W. (2024). Cost allocation and airport problems. Mathematical Social Sciences, 31(C), 17–31.
van Gellekom, J. R. G. and Potters, J. A. M. (1999). Consistent solution rules for standard tree enterprises. Technical Report 9910, University of Nijmegen.
See Also
CECrule
, SMrule
, basicrule
, hierarchicalrule
Examples
c <- c(1, 3, 7, 10) # Cost vector
SIGMArule(c) # a=0.5
# The SIGMA rule with a=0 is the CEC rule
a <- 0
all.equal(SIGMArule(c, a), CECrule(c))
# The SIGMA rule with a=1 is the SM rule
a <- 1
all.equal(SIGMArule(c, a), SMrule(c))
Slack maximizer rule
Description
SMrule
calculates the contribution vector selected by the SM rule.
Usage
SMrule(c)
Arguments
c |
A numeric cost vector. |
Details
For each c\in C^N
and each i\in N\backslash\{n\}
, the slack maximizer rule is defined by
\text{SM}_i(c) = \text{min} \Bigg\{ \dfrac{1}{r-i+2} \Big( c_r - \displaystyle\sum\limits_{j \in N^i_{-}} \text{SM}_j(c) \Big):r=i,\dots,n-1 \Bigg\},\
\text{SM}_n(c)=c_n-\displaystyle\sum\limits^{n-1}_{i=1}SM_i(c)
This rule aims to maximize the 'slacks', that is, the available margin for each agent within the imposed constraints.
The contribution selected by the SM rule for a problem c \in C^N
coincides with the payoff vector assigned
by the nucleolus to the associated cost game v\in G^N
, that is, \text{SM}(c)=\text{Nu}(v)
.
Value
A numeric contribution vector, where each element represents the payment of the different agents.
References
Littlechild, S. C. (1974). A simple expression for the nucleolus in a special case. International Journal of Game Theory, 3(1), 21-29.
Thomson, W. (2024). Cost allocation and airport problems. Mathematical Social Sciences, 31(C), 17–31.
See Also
SIGMArule
, basicrule
, hierarchicalrule
Examples
c <- c(1, 3, 7, 10) # Cost vector
SMrule(c)
Coalitional game associated with an airport problem
Description
airportgame
computes the coalitional game for cost-sharing in an airport problem.
Usage
airportgame(c, lex = TRUE)
Arguments
c |
A numeric cost vector. |
lex |
A logical value indicating the output order of the game. By default, |
Details
Let N = \{1, \dots, n\}
denote the set of agents, and let c \in \mathbb{R}_+^N
be the cost vector such that
c \geq 0
. The value c_i
should be interpreted as the associated cost for each agent i
in the context of
the problem, i.e., every component represents the cost of the facility required by an agent.
Segmental costs are defined as the difference between a given cost and the first immediately lower cost: c_i - c_{i-1}
for i \in N \backslash \{1\}
.
Therefore, C^N
represents the domain of all problems.
Given an airport problem c \in \mathbb{R}^N_{+}
, the corresponding coalitional game is defined, for each S \subseteq N
, as:
v(S) = \max\{c_j : j \in S\}.
It is easy to check that this class of games associated with airport problems is always concave, since for any pair of coalitions
S \subseteq T \subseteq N
, it is verified that:
v(S \cup \{i\}) - v(S) \geq v(T \cup \{i\}) - v(T) \quad \text{for all} \quad i \notin T
An efficient way to represent a nonempty coalition S \in 2^N
is by identifying it with the binary sequence
a_n,a_{n-1},\dots a_1
, where a_i=1
if i \in S
and a_i=0
otherwise. Consequently, each coalition
S
is represented by the number associated with its binary representation: \sum_{i \in S} 2^{i-1}
.
Then coalitions can be ordered by their associated numbers.
Alternatively, coalitions can be ordered lexicographically, meaning they are first sorted by increasing size, and then by lexicographic order among coalitions of the same size.
Value
A numeric vector representing the associated coalitional game.
References
Littlechild, S. C. and Owen, G. (1973). A simple expression for the Shapley value in a special case. Management Science, 23, 370-372.
Thomson, W. (2024). Cost allocation and airport problems. Mathematical Social Sciences, 31(C), 17–31.
See Also
Examples
# 4 agents
(c <- c(1, 3, 7, 10)) # Vector of costs
airportgame(c, lex = TRUE) # Game in lexicographic order
airportgame(c, lex = FALSE) # Game in binary order
Cost vector associated with an airport game
Description
airportvector
computes the cost vector corresponding to an airport problem.
Usage
airportvector(v, lex = TRUE)
Arguments
v |
A numeric vector that represents the characteristic function of the airport game. |
lex |
A logical value indicating the input order of the game. By default, if |
Details
A cooperative game (N, v)
is considered an airport game provided that its characteristic function v
satisfies:
v(S)=\text{max}\{c_j:j \in S\}, \quad \forall S \subseteq N,S \neq \emptyset
where c_j
represents the individual cost associated with each agent j
.
Evidently, this property implies that the cost assigned to a coalition is determined by the most expensive cost for its members. It is for this reason that this class of games is always concave.
The airport game can be given in lexicographic order or binary order. For instance, if
n=3
, the characteristic function of the associated airport game in lexicographic order is:
v=[v(\{1\}),v(\{2\}),v(\{3\}),v(\{1,2\}),v(\{1,3\}),v(\{2,3\}),v(\{1,2,3\})]
On the other hand, in binary order, it would be:
v=[v(\{1\}),v(\{2\}),v(\{1,2\}),v(\{3\}),v(\{1,3\}),v(\{2,3\}),v(\{1,2,3\})]
Anyway, in both cases, we have that v(\{2\})=v(\{1,2\})
and v(\{3\})=v(\{1,3\})=v(\{2,3\})=v(\{1,2,3\})
.
Given an airport game (N, v)
, it is possible to extract the corresponding cost vector c
by setting:
c_j=\text{min}\{v(S):j\in S \},\quad \text{for all} \quad j \in N.
Value
A numeric vector representing the cost for each agent of an airport game.
References
Littlechild, S. C. and Owen, G. (1973). A simple expression for the Shapley value in a special case. Management Science, 23, 370-372.
Thomson, W. (2024). Cost allocation and airport problems. Mathematical Social Sciences, 31(C), 17–31.
See Also
Examples
# 4 agents in lexicographic order
v <- c(1, 3, 7, 10, 3, 7, 10, 7, 10, 10, 7, 10, 10, 10, 10)
airportvector(v, lex = TRUE)
# 4 agents in binary order
u <- c(1, 3, 3, 7, 7, 7, 7, 10, 10, 10, 10, 10, 10, 10, 10)
airportvector(u, lex = FALSE)
Allocation rule
Description
basicrule
calculates the contribution vector resulting from the payment allocation among the different agents using one of the various predefined rules.
Usage
basicrule(c, rule, a = NULL, order = NULL)
Arguments
c |
A numeric cost vector. |
rule |
A character string specifying the rule to apply.The rules that can be selected are:
|
a |
A numeric value in the range [0,1], controlling the parameterization of the rule. It can only be defined when |
order |
A numeric vector indicating the priority order of agents when making contributions. It can only be defined when |
Details
A rule is a mapping \mathcal{R}:C^N\rightarrow \mathbb{R}^N
which associates with each problem c\in C^N
a cost allocation vector
\mathcal{R}(c)
such that 0\leq\mathcal{R}(c)\leq c
. In other words, a rule is a mechanism that selects for each airport problem an allocation vector.
The various proposed rules, despite their differences, share a key characteristic: for any given problem, each rule selects an allocation vector that belongs to its no-subsidy set. Although these rules have been individually characterized in different functions, the one in question encompasses all of them.
Value
A numeric contribution vector, where each element represents the payment of the different agents.
Note
When rule = "CC"
, the execution time of the function may significantly increase if the number of agents exceeds 150.
References
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025). Airport problems with cloned agents. [Preprint manuscript].
Potters, J. and Sudhölter, P. (1999). Airport problems and consistent allocation rules. Mathematical Social Sciences, 38, 83–102.
Thomson, W. (2024). Cost allocation and airport problems. Mathematical Social Sciences, 31(C), 17–31.
See Also
NSset
, weightedrule
, clonesrule
, hierarchicalrule
, multibasicrules
Examples
c <- c(1, 3, 7, 10) # Cost vector
# SEC rule
basicrule(c, rule = "SEC")
# PRIOR rule
order <- c(1, 3, 2, 4)
basicrule(c, "PRIOR", order = order)
Cloned agents in an airport problem
Description
clonesgroups
determines a new cost vector that excludes cloned agents, and calculates the size
of each clone group that shares the same cost.
Usage
clonesgroups(c)
Arguments
c |
A numeric cost vector. |
Details
In an airport problem, agents i,j \in N
are clones if both have the same cost parameter, that is, if c_i=c_j
.
If a problem has cloned agents, then the agent set N
can be divided into several non-overlapping groups such that any
pair of agents that belong to the same group are clones, but any two agents from two different groups have different cost parameters.
For each t \in N
, let T=\{1,\dots,t\}
and let \mathcal{A}_t^N
be the set of pairs (\eta, c)\in\mathbb{N}^t\times\mathbb{R}^t
such that:
\quad \space \space \eta=(\eta_1,\dots,\eta_t)\in \mathbb{N}^t \;\text{with}\; \eta_1+\dots+\eta_t=n
c=(c_1,\dots,c_t) \in C^T \;\text{with}\; c_1<\dots< c_t
Given t\in N
and (\eta,c)\in \mathcal{A}_t^N
we define the cost problem \eta\ast c \in C^N
as:
\eta\ast c=(\eta_1\ast c_1,\dots,\eta_t\ast c_t)=(c_1,\overset{\eta_1}{\dots},c_1,\dots,c_t,\overset{\eta_t}{\dots},c_t)\in C^N
Given a problem d\in C^N
there are unique t\in N
and (\eta,c)\in \mathcal{A}_t^N
such that d=n\ast c
.
We refer to the problem c\in C^T
, formed by the different cost parameters of problem d\in C^N
, as the reduced problem without clones
associated with d\in C^N
. Clearly, d\in C^N
is obtained from c\in C^T
by adding, for each i\in T
, \eta_i
, clones of agent i
.
Let t\in N
and (\eta,c)\in \mathcal{A}_t^{\mathcal{N}}
. For each s\in T=\{1,\dots,t\}
, let M_s^\eta=\eta_1+\dots+\eta_s
and, to simplify the notation,
write N^\eta_s=N^{\eta\ast c}_s=\{j\in N:(\eta\ast c)_j=c_s\}
. Therefore, N_1^\eta=\{1,\dots,M^\eta_1\}
and N_s^\eta=\{M^\eta_{s-1}+1,\dots,M^\eta_s\}
if s\in T\backslash\{1\}
.
Obviously, the family \{N^\eta_1,\dots,N^\eta_t\}
is a partition of N
and |N^\eta_s|=\eta_s
for all s\in T
. Moreover, all the agents that belong to N^\eta_s
have
the same cost parameter c_s
, i.e., (\eta\ast c)_j=c_s
for all s\in T
and j\in N^\eta_s
.
So, each agent in the reduced problem c\in C^T
can be seen as a representative agent of the corresponding group of clones in the original problem d=\eta\ast c \in C^N
.
Value
A list containing the following items:
cw | A numeric cost vector, with the same length as eta . |
||
eta | A numeric vector representing the size of each group of cloned agents. | ||
References
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025). Airport problems with cloned agents. [Preprint manuscript].
Littlechild, S. C. and Thompson, G. F. (1977). Aircraft landing fees: a game theory approach. The Bell Journal of Economics, 8, 186-204.
See Also
Examples
# 9 different agents
c <- c(2, 2, 2, 5, 5, 7, 7, 7, 12) # Cost vector
clonesgroups(c) # 4 groups of cloned agents
Cost vector with cloned agents
Description
clonesproblem
determines the new cost vector after disaggregating the original groups of clones.
Usage
clonesproblem(cw, eta)
Arguments
cw |
A numeric cost vector, with the same length as |
eta |
A numeric vector representing the size of each group of cloned agents. All its elements must be positive integers. |
Details
In an airport problem, agents i,j \in N
are clones if both have the same cost parameter, that is, if c_i=c_j
.
If a problem has cloned agents, then the agent set N
can be divided into several non-overlapping groups such that any
pair of agents that belong to the same group are clones, but any two agents from two different groups have different cost parameters.
For each t \in N
, let T=\{1,\dots,t\}
and let \mathcal{A}_t^N
be the set of pairs (\eta, c)\in\mathbb{N}^t\times\mathbb{R}^t
such that:
\quad \space \space \space \space \eta=(\eta_1,\dots,\eta_t)\in \mathbb{N}^t \; \text{with} \; \eta_1+\dots+\eta_t=n
c=(c_1,\dots,c_t) \in C^T \; \text{with} \; c_1<\dots< c_t
Given t\in N
and (\eta,c)\in \mathcal{A}_t^N
we define the cost problem \eta\ast c \in C^N
as:
\eta\ast c=(\eta_1\ast c_1,\dots,\eta_t\ast c_t)=(c_1,\overset{\eta_1}{\dots},c_1,\dots,c_t,\overset{\eta_t}{\dots},c_t)\in C^N
Given a problem d\in C^N
there are unique t\in N
and (\eta,c)\in \mathcal{A}_t^N
such that d=n\ast c
.
We refer to the problem c\in C^T
, formed by the different cost parameters of problem d\in C^N
, as the reduced problem without clones
associated with d\in C^N
. Clearly, d\in C^N
is obtained from c\in C^T
by adding, for each i\in T
, \eta_i
, clones of agent i
.
Let t\in N
and (\eta,c)\in \mathcal{A}_t^{\mathcal{N}}
. For each s\in T=\{1,\dots,t\}
, let M_s^\eta=\eta_1+\dots+\eta_s
and, to simplify the notation,
write N^\eta_s=N^{\eta\ast c}_s=\{j\in N:(\eta\ast c)_j=c_s\}
. Therefore, N_1^\eta=\{1,\dots,M^\eta_1\}
and N_s^\eta=\{M^\eta_{s-1}+1,\dots,M^\eta_s\}
if s\in T\backslash\{1\}
.
Obviously, the family \{N^\eta_1,\dots,N^\eta_t\}
is a partition of N
and |N^\eta_s|=\eta_s
for all s\in T
. Moreover, all the agents that belong to N^\eta_s
have
the same cost parameter c_s
, i.e., (\eta\ast c)_j=c_s
for all s\in T
and j\in N^\eta_s
.
So, each agent in the reduced problem c\in C^T
can be seen as a representative agent of the corresponding group of clones in the original problem d=\eta\ast c \in C^N
.
Value
A numeric cost vector, where each element corresponds to a different agent's cost.
References
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025). Airport problems with cloned agents. [Preprint manuscript].
Littlechild, S. C. and Thompson, G. F. (1977). Aircraft landing fees: a game theory approach. The Bell Journal of Economics, 8, 186-204.
See Also
Examples
# 4 groups of cloned agents
cw <- c(2, 5, 7, 12) # Different costs
eta <- c(3, 2, 3, 1) # Size of each group of clones
clonesproblem(cw, eta) # General cost vector
Allocation rule with cloned agents
Description
clonesrule
calculates the contribution vector resulting from the payment allocation among the different agents using one of the versions for clones of the various predefined rules.
Usage
clonesrule(cw, eta, rule, group_contribution = TRUE, a = NULL, order = NULL)
Arguments
cw |
A numeric cost vector, with the same length as |
eta |
A numeric vector representing the size of each group of cloned agents. All its elements must be positive integers. |
rule |
A character string specifying the rule to apply. The rules that can be selected are:
|
group_contribution |
A logical value.
By default, if |
a |
A numeric value in the range [0,1], controlling the parameterization of the rule. It can only be defined when |
order |
A numeric vector indicating the priority order of agents when making contributions. It can only be defined when |
Details
Let \mathcal{R}
be a rule, t\in N
, and (\eta,c)\in\mathcal{A}^N_t
. For each i\in T=\{1,\dots,t\}
,
the sum of the contributions requested by \mathcal{R}
from the group of clones N^{\eta}_i
is
\mathcal{R}(\eta\ast c, N_i^{\eta})=\sum\limits_{j\in N^\eta_i}\mathcal{R}_j(n\ast c)
.
The computation of the cost allocation selected by a rule for a given problem can be substantially simplified where there are cloned agents. Through this function, a direct method is proposed to obtain either the aggregate contribution or the individual contribution of each group of cloned agents, based on the associated reduced problem and the number of clones in each group.
The version for clones of the SFC, SEC, CEC and CP rules is equal to their respective weighted version, so the formulation of these rules will be the same for the weighted version. Only the CEB rule has a weighted version and a clone version that are different.
If a rule \mathcal{R}
satisfies equal treatment of equals (cloned agents pay equal amounts), then
\mathcal{R}(\eta\ast c,N_i^\eta)=\eta_i\mathcal{R}_s(n\ast c)
for any s\in N_i^\eta
. All the rules listed, with the
exception of the PRIOR rule, satisfy equal treatment of equals. Therefore, the contribution demanded by these rules from a group of clones
is divided equally among them.
Finally, we define a k
-replica of an airport problem as the problem in which every agent is replaced by k
clones of itself.
If k
increases, the number of groups of cloned agents does not change, but the number of agents is large. Thus, we say that a rule satisfies
replication invariance if for each c\in C^N
, each i \in N
, and each k\in \mathbb{N}
, we have \mathcal{R}(k\ast c,N_i^k)=\mathcal{R}_i(c)
;
i.e., if in any k
-replica of a problem each group of cloned agents contributes an amount independent of k
.
The SFC, SEC, CEC, CP, and PRIOR rules verify this property, while the others do not.
Value
A numeric contribution vector. By default, if group_contribution = TRUE
, each element represents the payment made by each group of cloned agents.
However, if group_contribution = FALSE
, each element reflects the individual payment made by a representative agent from each group.
Note
When rule = "CC"
, the execution time of the function may significantly increase if the number of individual agents exceeds 150.
References
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025). Airport problems with cloned agents. [Preprint manuscript].
Littlechild, S. C. and Thompson, G. F. (1977). Aircraft landing fees: a game theory approach. The Bell Journal of Economics, 8, 186-204.
See Also
clonesgroups
, clonesproblem
, multiclonesrules
, basicrule
, weightedrule
Examples
# Clones SEC rule
cw <- c(1, 3, 7, 10) # Different costs
eta <- c(3, 4, 1, 2) # Size of each groups of clones
clonesrule(cw, eta, "SEC")
# CEC rule satisfies replication invariance
cw <- c(1, 5, 12) # Different costs
eta <- rep(8, 3) # Size of each groups of clones
all.equal(clonesrule(cw, eta, "CEC"), CECrule(cw))
Graphical evaluation of the contribution vectors
Description
comparisonallocations
generates a graphical representation in which, for each agent or group of clones,
both the maximum cost they can bear and their corresponding marginal contribution are displayed.
Usage
comparisonallocations(
c,
contributions,
col = NULL,
colors = NULL,
agents_names = NULL,
labels = TRUE,
legend = NULL,
tol = 1e-06
)
Arguments
c |
A numeric cost vector. |
contributions |
A list containing the different cost allocation vectors to be compared. It is required that the sum of the coordinates of each vector equals the total cost to be allocated. |
col |
A character string reflecting the color of the NS constraint for each agent. By default, the color |
colors |
A vector that indicates the colors used to represent each contribution vector. By default, a color palette of different shades is used. |
agents_names |
A vector defining the name assigned to each agent. By default, the names follow a sequence of natural numbers, starting from 1. |
labels |
A logical value indicating whether the labels and the title of the plot should be displayed. By default, |
legend |
A vector or list where each of its elements represents a different contribution vector. By default, the coordinates of each contribution vector are displayed with two decimal places. |
tol |
Tolerance level for evaluating compliance with the NS constraint. |
Details
For each c\in C^N
let H(c)=\{x\in\mathbb{R}:x(N)=c_n\}
be the hyperplane of \mathbb{R}^N
given by all the vectors whose coordinates add up to c_n
. A cost allocation for c\in C^N
is a vector
x\in H(c)
such that 0\leq x\leq c
. The component x_i
is the contribution requested from agent i
.
Let X(c)
be the set of cost allocations for c\in C^N
.
A basic requirement is that at an allocation x\in X(c)
on group N'\subset N
of agents would subsidize the other agents by contributing more than what the group would have to pay on its own. The no-subsidy constraint
for the group N'\subset N
is x(N')\geq \text{max}\{c_j:j\in N'\}
. The set of cost allocations for c\in C^N
that satisfy the no-subsidy
constraints, the no-subsidy set for short, is given by:
NS(c)=\{x\in X(c):x(N')\leq\text{max}\{c_j:j\in N'\}, \text{ for all } N'\subset N\}
= \{x\in \mathbb{R}^N:x\geq 0, \ x(N)=c_n, \ x_1+\dots+x_i\leq c_i,\text{ for all }i\in N\backslash \{n\}\}
Thus, the no-subsidy correspondence NS assigns to each c\in C^N
the set NS(c)
.
A rule is a mapping \mathcal{R}:C^N\rightarrow \mathbb{R}^N
which associates with each problem c\in C^N
a contribution vector
\mathcal{R}(c)\in X(c)
. In other words, a rule is a mechanism that, for each airport problem, selects an allocation vector belonging to its no-subsidy set.
Value
A vertical line plot in which each line represents the maximum amount an agent can pay without violating the NS constraint, while the points along the lines indicate the contributions made by the agent.
References
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025). Airport problems with cloned agents. [Preprint manuscript].
Thomson, W. (2024). Cost allocation and airport problems. Mathematical Social Sciences, 31(C), 17–31.
See Also
NScheck
, basicrule
, plotallocations
Examples
# CEB rule vs weighted CEB rule vs clones CEB rule
c <- c(1, 3, 7, 10) # Cost vector
w <- c(1, 4, 8, 2) # Weight vector
eta <- w # Size of each groups of clones
CEB <- basicrule(c, "CEB")
wCEB <- weightedrule(c, w, "CEB")
clCEB <- clonesrule(c, w, "CEB")
comparisonallocations(c, list(CEB, wCEB, clCEB))
# SEC rule vs CEC rule vs SM rule
c <- c(5, 10, 20) # Cost vector
comparisonallocations(c, list(SECrule(c), CECrule(c), SMrule(c)),
col = "green", agents_names = c("Alex", "Estela", "Carmen"), labels = FALSE,
legend = list("SEC", "CEC", "SM"))
Elevator data
Description
The data includes 4 variables related to the 14 apartments in a building, within the context of distributing the costs associated with installing an elevator in that building.
Usage
elevator
Format
A data frame with 14 rows and 4 columns (variables):
- id
Unit identifier
- floor
Floor number
- c
Cumulative elevator installation cost for each dwelling (in euros).
- area
Area of each dwelling (in square meters).
Source
Own elaboration.
Examples
# By number of floors (floor)
cw <- clonesgroups(elevator$c)$cw
eta <- clonesgroups(elevator$c)$eta
rules <- c("SFC", "SEC", "CEC", "CP", "CC")
by_floor <- list()
for (rule in rules){
by_floor[[rule]] <- clonesrule(cw, eta, rule)
}
comparisonallocations(cw, by_floor, agents_names = unique(elevator$floor),
legend = rules, labels = FALSE)
# Based on the area of each dwelling (area), by unit identifier (id)
c <- elevator$c
w <- elevator$area
by_id <- multiweightedrules(c, w, rules = c("SFC", "SEC", "CSEC", "CEC", "CP"),
draw = TRUE, agents_names = elevator$id, labels = FALSE)
round(by_id, 2)
Allocation rule according to the agents' hierarchical order
Description
hierarchicalrule
calculates the contribution vector resulting from the payment allocation among the different agents using one of the various predefined rules in relation to the agents' hierarchical order.
Usage
hierarchicalrule(c, P, rule, a = NULL)
Arguments
c |
A numeric cost vector. |
P |
A list showing the agents involved in the different distribution stages. |
rule |
A character string specifying the rule to apply.The rules that can be selected are:
|
a |
A numeric value in the range [0,1], controlling the parameterization of the rule. It can only be defined when |
Details
Let N=\{1,\dots,n\}
be a finite set of agents and let P=\{P_1,\dots,P_{m+1}\}
be a partition
of N
, with m\leq n-1
. So, the hierarchical structure, P_{>}=\{P_1>P_2>\dots>P_m>P_{m+1}\}
,
implies that agents in P_1
have priority over agents in N\backslash P_1
, agents in P_2
have priority
over agents in N\backslash P_1\cup P_2
, and so on. Let \mathcal{P}(N)
denote the family of all hierarchical structures over N
.
A hierarchical rule is a mapping \mathcal{R}_P:C^N\rightarrow \mathbb{R}^N
that, based on a hierarchical structure P_{>}
,
associates with each problem c\in C^N
a cost allocation vector \mathcal{R}_P(c)
such that 0\leq\mathcal{R}_P(c)\leq c
. In other words, the allocation proceeds by assigning costs
to agents in higher-hierarchy coalitions before those in lower-hierarchy ones, through the successive application of the rule to the no-subsidy faces of coalitions obtained from P_{>}
.
These rules are on the boundary of the no-subsidy set.
In each stage, the agents share the accumulated costs up to that point. However, the remaining costs are allocated in subsequent stages.
Value
A numeric contribution vector, where each element represents the payment of the different agents.
References
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025). Airport problems with cloned agents. [Preprint manuscript].
Faigle, U. and Kern, W. (1992). The Shapley value for cooperation games under precedence constraints. International Journal of Game Theory, 21, 249-266.
Fiestras-Janeiro, M. G., Sánchez-Rodríguez, E., and Schuster, M. (2016). A precedence constraint value revisited. TOP, 24, 156-179.
Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2020). The boundary of the core of a balanced game: faces games. International Journal of Game Theory, 49(2), 579-599.
See Also
Examples
# Two stages
c <- c(1, 3, 7, 10) # Cost vector
P <- list(c(1, 2), c(3, 4)) # Agents' hierarchical order
hierarchicalrule(c, P, rule = "SEC") # SEC rule
# Three stages
c <- c(1, 1, 3, 3, 7, 10) # Cost vector
P <- list(2, c(1, 3), c(4, 5, 6)) # Agents' hierarchical order
hierarchicalrule(c, P, "CEC") # CEC rule
Overview of the allocation rules
Description
multibasicrules
calculates the contribution vectors resulting from the allocation of payments among different agents, applying various predefined rules.
It also generates a graphical representation of the allocations based on the implemented rules.
Usage
multibasicrules(
c,
rules = c("SFC", "SEC", "CEC", "CEB", "CP", "SM", "CC", "SIGMA", "PRIOR"),
draw = TRUE,
col = NULL,
a = NULL,
order = NULL,
agents_names = NULL,
labels = TRUE
)
Arguments
c |
A numeric cost vector. |
rules |
A character vector specifying the allocation rules. The available rules are:
|
draw |
A logical value indicating whether or not the plot should be generated. By default, |
col |
A vector that indicates the colors used to represent each agent in the graphical representation. By default,
the colors are selected by the function |
a |
A numeric value in the range [0,1], controlling the parameterization of the rule. It can only be defined when |
order |
A numeric vector indicating the priority order of agents when making contributions. It can only be defined when |
agents_names |
A vector defining the name assigned to each agent. By default, the names follow a sequence of natural numbers, starting from 1. |
labels |
A logical value indicating whether the labels and the title of the plot should be displayed. By default, |
Details
Let X(c)
be the set of cost allocations for c \in C^N
.
A rule is a mapping \mathcal{R}: C^N \rightarrow \mathbb{R}^N
that associates with each problem a contribution vector \mathcal{R}_P(c)
such that 0\leq\mathcal{R}_P(c)\leq c
. In other words, a rule is a mechanism that selects an allocation vector for each airport problem.
The various proposed rules, despite their differences, share a key characteristic: for any given problem, each rule selects an allocation vector that belongs to its no-subsidy set. Although these rules have been individually characterized in different functions, the one in question allows for the calculation of all of them at once.
Value
A data frame containing the contribution vectors determined by the selected allocation rules. Additionally, if draw = TRUE
,
a mosaic plot displaying the allocations obtained for the different rules.
Note
When "CC"
is included in the rules
argument, the execution time of the function may significantly increase if the number of agents exceeds 150.
References
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025). Airport problems with cloned agents. [Preprint manuscript].
Potters, J. and Sudhölter, P. (1999). Airport problems and consistent allocation rules. Mathematical Social Sciences, 38, 83–102.
Thomson, W. (2024). Cost allocation and airport problems. Mathematical Social Sciences, 31(C), 17–31.
See Also
basicrule
, comparisonallocations
, plotallocations
Examples
# All rules with graphical representation
c <- c(1, 3, 7, 10) # Cost vector
multibasicrules(c)
# SEC, CEC and SIGMA rule without plot
c <- c(5, 10, 20) # Cost vector
multibasicrules(c, rules = c("SEC", "CEC", "SIGMA"), draw = FALSE, a = 0.75,
agents_names = c("Alex", "Estela", "Carmen"))
Overview of the allocation rules with cloned agents
Description
multiclonesrules
calculates the contribution vectors resulting from the allocation of payments among different agents, applying the versions for clones of various predefined rules.
It also generates a graphical representation of the allocations based on the implemented rules.
Usage
multiclonesrules(
cw,
eta,
rules = c("SFC", "SEC", "CEC", "CEB", "CP", "SM", "CC", "SIGMA", "PRIOR"),
group_contribution = TRUE,
draw = TRUE,
col = NULL,
a = NULL,
order = NULL,
agents_names = NULL,
labels = TRUE
)
Arguments
cw |
A numeric cost vector, with the same length as |
eta |
A numeric vector representing the size of each group of cloned agents. All its elements must be positive integers. |
rules |
A character vector specifying the allocation rules. The available rules are:
|
group_contribution |
A logical value.
By default, if |
draw |
A logical value indicating whether the plot should be generated. By default, |
col |
A vector that indicates the colors used to represent each agent in the graphical representation. By default,
the colors are selected by the function |
a |
A numeric value in the range [0,1], controlling the parameterization of the rule. It can only be defined when |
order |
A numeric vector indicating the priority order of agents when making contributions. It can only be defined when |
agents_names |
A vector defining the name assigned to each group of clones. By default, the names follow a sequence of natural numbers, starting from 1. |
labels |
A logical value indicating whether the labels and the title of the plot should be displayed. By default, |
Details
Let \mathcal{R}
be a rule, t\in N
, and (\eta,c)\in\mathcal{A}^N_t
. For each i\in T=\{1,\dots,t\}
,
the sum of the contributions requested by \mathcal{R}
from the group of clones N^{\eta}_i
is
\mathcal{R}(\eta\ast c, N_i^{\eta})=\sum\limits_{j\in N^\eta_i}\mathcal{R}_j(n\ast c)
.
The computation of the cost allocation selected by a rule for a given problem can be substantially simplified where there are cloned agents. Through this function, a direct method is proposed to obtain either the aggregate contribution or the individual contribution of each group of cloned agents, based on the associated reduced problem and the number of clones in each group.
The version for clones of the SFC, SEC, CEC and CP rules is equal to their respective weighted version, so the formulation of these rules will be the same for the weighted version. Only the CEB rule has a weighted version and a clone version that are different.
If a rule \mathcal{R}
satisfies equal treatment of equals (cloned agents pay equal amounts), then
\mathcal{R}(\eta\ast c,N_i^\eta)=\eta_i\mathcal{R}_s(n\ast c)
for any s\in N_i^\eta
. All the rules listed, with the
exception of the PRIOR rule, satisfy equal treatment of equals. Therefore, the contribution demanded by these rules from a group of clones
is divided equally among them.
Finally, we define a k
-replica of an airport problem as the problem in which every agent is replaced by k
clones of itself.
If k
increases, the number of groups of cloned agents does not change, but the number of agents is large. Thus, we say that a rule satisfies
replication invariance if for each c\in C^N
, each i \in N
, and each k\in \mathbb{N}
, we have \mathcal{R}(k\ast c,N_i^k)=\mathcal{R}_i(c)
;
i.e., if in any k
-replica of a problem each group of cloned agents contributes an amount independent of k
.
The SFC, SEC, CEC, CP, and PRIOR rules verify this property, while the others do not.
Value
A data frame containing the contribution vectors determined by the selected allocation rules. Additionally, if draw = TRUE
,
a mosaic plot displaying the allocations obtained for the different rules.
Note
When "CC"
is included in the rules
argument, the execution time of the function may significantly increase if the number of individual agents exceeds 150.
References
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025). Airport problems with cloned agents. [Preprint manuscript].
Littlechild, S. C. and Thompson, G. F. (1977). Aircraft landing fees: a game theory approach. The Bell Journal of Economics, 8, 186-204.
See Also
clonesgroups
, clonesproblem
, clonesrule
, comparisonallocations
, plotallocations
Examples
# All rules for clones with graphical representation
cw <- c(1, 3, 7, 10) # Different costs
eta <- c(3, 4, 1, 2) # Size of each groups of clones
multiclonesrules(cw, eta)
# SEC, CEC and CP rule for clones without plot
cw <- c(5, 10, 20) # Different costs
eta <- c(8, 2, 4) # Size of each groups of clones
multiclonesrules(cw, eta, rules = c("SEC", "CEC", "CP"),
group_contribution = FALSE, draw = FALSE,
agents_names = c("Suppliers", "Wholesalers", "Retailers"))
Overview of the allocation rules according to the agents' hierarchical order
Description
multihierarchicalrules
calculates the contribution vectors resulting from the allocation of payments among different agents, applying various predefined rules in relation to the agents' hierarchical order.
It also generates a graphical representation of the allocations based on the implemented rules.
Usage
multihierarchicalrules(
c,
P,
rules = c("SFC", "SEC", "CEC", "CEB", "CP", "SM", "CC", "SIGMA"),
a = NULL,
draw = TRUE,
col = NULL,
agents_names = NULL,
labels = TRUE
)
Arguments
c |
A numeric cost vector. |
P |
A list showing the agents involved in the different distribution stages. |
rules |
A character vector specifying the allocation rules. The available rules are:
|
a |
A numeric value in the range [0,1], controlling the parameterization of the rule. It can only be defined when |
draw |
A logical value indicating whether the plot should be generated. By default, |
col |
A vector that indicates the colors used to represent each agent in the graphical representation. By default,
the colors are selected by the function |
agents_names |
A vector defining the name assigned to each agent. By default, the names follow a sequence of natural numbers, starting from 1. |
labels |
A logical value indicating whether the labels and the title of the plot should be displayed. By default, |
Details
Let N=\{1,\dots,n\}
be a finite set of agents and let P=\{P_1,\dots,P_{m+1}\}
be a partition
of N
, with m\leq n-1
. So, the hierarchical structure, P_{>}=\{P_1>P_2>\dots>P_m>P_{m+1}\}
,
implies that agents in P_1
have priority over agents in N\backslash P_1
, agents in P_2
have priority
over agents in N\backslash P_1\cup P_2
, and so on. Let \mathcal{P}(N)
denote the family of all hierarchical structures over N
.
A hierarchical rule is a mapping \mathcal{R}_P:C^N\rightarrow \mathbb{R}^N
that, based on a hierarchical structure P_{>}
,
associates with each problem c\in C^N
a cost allocation vector \mathcal{R}_P(c)
such that 0\leq\mathcal{R}_P(c)\leq c
. In other words, the allocation proceeds by assigning costs
to agents in higher-hierarchy coalitions before those in lower-hierarchy ones, through the successive application of the rule to the no-subsidy faces of coalitions obtained from P_{>}
.
These rules are on the boundary of the no-subsidy set.
In each stage, the agents share the accumulated costs up to that point. However, the remaining costs are allocated in subsequent stages.
Value
A data frame containing the contribution vectors determined by the selected allocation rules. Additionally, if draw = TRUE
,
a mosaic plot displaying the allocations obtained for the different rules.
References
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025). Airport problems with cloned agents. [Preprint manuscript].
Faigle, U. and Kern, W. (1992). The Shapley value for cooperation games under precedence constraints. International Journal of Game Theory, 21, 249-266.
Fiestras-Janeiro, M. G., Sánchez-Rodríguez, E., and Schuster, M. (2016). A precedence constraint value revisited. TOP, 24, 156-179.
Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2020). The boundary of the core of a balanced game: faces games. International Journal of Game Theory, 49(2), 579-599.
See Also
NSfaces
, PRIORrule
, basicrule
, comparisonallocations
, plotallocations
Examples
# All rules in two stages with graphical representation
c <- c(1, 3, 3, 7, 10) # Cost vector
P <- list(c(1, 2, 3), c(4, 5)) # Agents' hierarchical order
multihierarchicalrules(c, P)
# SEC, CEC and SM rule in three stages without plot
c <- c(5, 10, 20, 20, 30, 50) # Cost vector
P <- list(c(1, 2), c(3, 4), c(5, 6)) # Agents' hierarchical order
multihierarchicalrules(c, P, rules = c("SEC", "CEC", "SM"), draw = FALSE,
agents_names = c("Alex", "Estela", "Carmen", "Miguel", "Gloria", "Brais"))
Overview of the weighted allocation rules
Description
multiweightedrules
calculates the contribution vectors resulting from the allocation of payments among different agents, applying various predefined weighted rules.
It also generates a graphical representation of the allocations based on the implemented weighted rules.
Usage
multiweightedrules(
c,
w,
rules = c("SFC", "SEC", "CSEC", "CEC", "CEB", "CP"),
draw = TRUE,
col = NULL,
agents_names = NULL,
labels = TRUE
)
Arguments
c |
A numeric cost vector. |
w |
A numeric weight vector. |
rules |
A character vector specifying the allocation rules. The available rules are:
|
draw |
A logical value indicating whether the plot should be generated. By default, |
col |
A vector that indicates the colors used to represent each agent in the graphical representation. By default,
the colors are selected by the function |
agents_names |
A vector defining the name assigned to each agent. By default, the names follow a sequence of natural numbers, starting from 1. |
labels |
A logical value indicating whether the labels and the title of the plot should be displayed. By default, |
Details
Let w=(w_i)_{i\in N}\in\mathbb{R}^n
be a positive weight vector, satisfying w_i> 0
for all
i\in N
and w(N)=1
. Consider the (n-1)
-standard simplex, defined as \Delta_n=\{x\in\mathbb{R}^n:x\geq 0, \ x_1+\dots+x_n=1\}
.
Then, the set of all positive weight vectors corresponds to \text{Int}(\Delta_n)
, the interior of the
(n-1)
-standard simplex.
A weighted rule is a mapping \mathcal{R}:C^N\times \text{Int}(\Delta_N)\rightarrow \mathbb{R}^N
which associates with a problem c\in C^N
and a positive weight vector w\in \text{Int}(\Delta_n)
a contribution
vector \mathcal{R}(c,w)\in X(c)
.
It is possible to define weighted versions of the rules: SFC, SEC, CEC, CP and CEB. In fact, two different rules
emerge from the standard SEC rule: the weighted SEC rule and the coalition-weighted SEC rule. If w_i=w_j
for all i,j \in N
, then the solution of weighted SEC(c)
and
weighted CSEC(c)
coincides.
In all the rules, the higher the weight w_i
, the more the corresponding agent will have to pay, except for the weighted CEB rule
(the construction of this rule is based on the concept of allocating 'benefits', so it is logical that it is set up this way).
Furthermore, as previously stated, all the rules, except for the weighted CSEC rule, require the weights to be positive. However, to standardize the criterion,
we establish that the CSEC rule also demands positive weights.
The weighted version of the SFC, SEC, CEC and CP rules is equal to their respective versions for clones, so the formulation of these rules will be the same for the version with clones. Only the CEB rule has a weighted version and a clone version that are different.
Value
A data frame containing the contribution vectors determined by the selected allocation rules. Additionally, if draw = TRUE
,
a mosaic plot displaying the allocations obtained for the different weighted rules.
References
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025a). Airport problems with cloned agents. [Preprint manuscript].
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025b). A characterization of the CSEC rule for airport problems. [Prepint manuscript].
Sánchez-Rodríguez, E., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Núñez Lugilde, I. (2024). Coalition-weighted Shapley values. International Journal of Game Theory, 53, 547-577.
Thomson, W. (2024). Cost allocation and airport problems. Mathematical Social Sciences, 31(C), 17–31.
See Also
weightedrule
, comparisonallocations
, plotallocations
Examples
# All weighted rules with graphical representation
c <- c(1, 3, 3, 7, 10) # Cost vector
w <- c(1, 4, 1, 2, 8) # Weight vector
multiweightedrules(c, w)
# Weighted SEC, CEC and CP rule without plot
c <- c(5, 10, 20)
w <- c(3, 2, 1)
multiweightedrules(c, w, rules = c("SEC", "CEC", "CP"), draw = FALSE,
agents_names = c("Alex", "Estela", "Carmen"))
Graphical representation of the contribution vectors within the NS set
Description
plotallocations
generates a graphical representation of the contribution vectors inside the NS set
in 1D, 2D, and 3D (available only when there are 2, 3, or 4 agents).
Usage
plotallocations(
c,
contributions,
dimension = NULL,
representation = "projection",
col = NULL,
colors = NULL,
agents_names = NULL,
labels = TRUE,
contributions_names = NULL,
tol = 1e-06
)
Arguments
c |
A numeric cost vector. |
contributions |
A list containing different cost allocation vectors. |
dimension |
A character string that specifies the dimension of the graphic. Possible values are |
representation |
A character string indicating which NS set and allocations are displayed. Possible values are |
col |
A character string reflecting the color tone of the NS set. By default, the color tone |
colors |
A vector that indicates the colors used to represent each contribution vector. By default, a color palette of different shades is used. |
agents_names |
A vector defining the name assigned to each agent. By default, the names follow a sequence of natural numbers, starting from 1. |
labels |
A logical value indicating whether the coordinates of the points and the plot title should be displayed. By default, |
contributions_names |
A vector defining the name assigned to each cost allocation vector. By default, and whenever |
tol |
Tolerance level for evaluating compliance with the NS constraint. |
Details
For each c\in C^N
let H(c)=\{x\in\mathbb{R}:x(N)=c_n\}
be the hyperplane of \mathbb{R}^N
given by all the vectors whose coordinates add up to c_n
. A cost allocation for c\in C^N
is a vector
x\in H(c)
such that 0\leq x\leq c
. The component x_i
is the contribution requested from agent i
.
Let X(c)
be the set of cost allocations for c\in C^N
.
A basic requirement is that at an allocation x\in X(c)
on group N'\subset N
of agents would subsidize the other agents by contributing more than what the group would have to pay on its own. The no-subsidy constraint
for the group N'\subset N
is x(N')\geq \text{max}\{c_j:j\in N'\}
. The set of cost allocations for c\in C^N
that satisfy the no-subsidy
constraints, the no-subsidy set for short, is given by:
NS(c)=\{x\in X(c):x(N')\leq\text{max}\{c_j:j\in N'\}, \text{ for all } N'\subset N\}
= \{x\in \mathbb{R}^N:x\geq 0, \ x(N)=c_n, \ x_1+\dots+x_i\leq c_i,\text{ for all }i\in N\backslash \{n\}\}
Thus, the no-subsidy correspondence NS assigns to each c\in C^N
the set NS(c)
.
A rule is a mapping \mathcal{R}:C^N\rightarrow \mathbb{R}^N
which associates with each problem c\in C^N
a contribution vector
\mathcal{R}(c)\in X(c)
. In other words, a rule is a mechanism that, for each airport problem, selects an allocation vector belonging to its no-subsidy set.
Value
Only if the number of agents is 2, 3, or 4 will a plot be generated displaying the NS set and all cost allocation vectors.
References
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025). Airport problems with cloned agents. [Preprint manuscript].
González-Díaz, J., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2016). Airport games: the core and its center. Mathematical Social Sciences, 82, 105–115.
Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2020). The boundary of the core of a balanced game: faces games. International Journal of Game Theory, 49(2), 579-599.
See Also
NSset
, NScheck
, comparisonallocations
Examples
# Projected SEC rule, CEC rule and SM rule for 3 agents
c <- c(5, 10, 20) # Cost vector
plotallocations(c, list(SECrule(c), CECrule(c), SMrule(c)), "2D",
"projection", contributions_names = c("SEC", "CEC", "SM"))
# Real an projected SM rule and PRIOR rule for 3 agentes
c <- c(1, 2, 3) # Cost vector
SM <- SMrule(c)
PRIOR <- PRIORrule(c, order = c(2, 3, 1))
plotallocations(c, list(SM, PRIOR), "3D", "both")
# Projected CEB rule and weighted CEB rule for 4 agents
c <- c(3, 3, 3, 10) # Cost vector
w <- c(1, 4, 8, 2) # Weight vector
CEB <- basicrule(c, "CEB")
wCEB <- weightedrule(c, w, "CEB")
plotallocations(c, list(CEB, wCEB), contributions_names = c("CEB", "wCEB"))
University bus travel data
Description
Data containing 4 variables with information about the round-trip journeys of university students traveling by bus from the Morrazo region (Galicia, Spain) to the University of Vigo.
Usage
universitybus
Format
A data frame with 13 rows and 4 columns (variables):
- district
Area where each student boards and alights from the bus
- town
Town to which each student belongs
- distance
Distance in kilometers of the road route (bus path) between a district and the University of Vigo
- passengers
Number of passengers per district
Source
Own elaboration based on data retrieved from Google Maps (accessed on April 25, 2025).
Examples
# We assume that the bus is entirely funded by the municipalities
# How are the cots distributed among them?
# Allocation by district (in km)
by_district <- multiclonesrules(universitybus$distance, universitybus$passengers,
agents_names = universitybus$district, labels = FALSE)
# Allocation by town (in km)
district_to_town <- setNames(universitybus$town, universitybus$district)
by_town <- t(rowsum(t(by_district), group = district_to_town[colnames(by_district)]))
print(by_town)
# Cost allocation by town (in euros)
cT <- 500 # Total cost of the journey (bus rental cost + variable costs)
max_dist <- max(universitybus$distance) # maximum distance
by_town_cost <- round(by_town * (cT / max_dist), 2) # km to euros
print(by_town_cost)
Weighted allocation rule
Description
weightedrule
calculates the contribution vector resulting from the payment allocation among the different agents using one of the various predefined weighted rules.
Usage
weightedrule(c, w, rule)
Arguments
c |
A numeric cost vector. |
w |
A numeric weight vector. |
rule |
A character string specifying the rule to apply.The rules that can be selected are:
|
Details
Let w=(w_i)_{i\in N}\in\mathbb{R}^n
be a positive weight vector, satisfying w_i> 0
for all
i\in N
and w(N)=1
. Consider the (n-1
)-standard simplex, defined as \Delta_n=\{x\in\mathbb{R}^n:x\geq 0, \ x_1+\dots+x_n=1\}
.
Then, the set of all positive weight vectors corresponds to \text{Int}(\Delta_n)
, the interior of the
(n-1)
-standard simplex.
A weighted rule is a mapping \mathcal{R}:C^N\times \text{Int}(\Delta_N)\rightarrow \mathbb{R}^N
which associates with a problem c\in C^N
and a positive weight vector w\in \text{Int}(\Delta_n)
a contribution
vector \mathcal{R}(c,w)\in X(c)
.
It is possible to define weighted versions of the rules: SFC, SEC, CEC, CP and CEB. In fact, two different rules
emerge from the standard SEC rule: the weighted SEC rule and the coalition-weighted SEC rule. If w_i=w_j
for all i,j \in N
, then the solution of weighted SEC(c)
and
weighted CSEC(c)
coincides.
In all the rules, the higher the weight w_i
, the more the corresponding agent will have to pay, except for the weighted CEB rule
(the construction of this rule is based on the concept of allocating 'benefits', so it is logical that it is set up this way).
Furthermore, as previously stated, all the rules, except for the weighted CSEC rule, require the weights to be positive.
Although the weighted CSEC rule allows zero weights, it requires that at least one weight must be positive.
The weighted version of the SFC, SEC, CEC and CP rules is equal to their respective versions for clones, so the formulation of these rules will be the same for the version with clones. Only the CEB rule has a weighted version and a clone version that are different.
Value
A numeric contribution vector, where each element represents the payment of the different agents.
References
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025a). Airport problems with cloned agents. [Preprint manuscript].
Bernárdez Ferradás, A., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Sánchez-Rodríguez, E. (2025b). A characterization of the CSEC rule for airport problems. [Prepint manuscript].
Sánchez-Rodríguez, E., Mirás Calvo, M. Á., Quinteiro Sandomingo, C., and Núñez Lugilde, I. (2024). Coalition-weighted Shapley values. International Journal of Game Theory, 53, 547-577.
Thomson, W. (2024). Cost allocation and airport problems. Mathematical Social Sciences, 31(C), 17–31.
See Also
NScheck
, NSset
, basicrule
, clonesrule
Examples
c <- c(1, 3, 3, 7, 10) # Cost vector
w <- c(1, 4, 1, 2, 8) # Weight vector
# Weighted SFC rule
weightedrule(c, w, "SFC")
# Weighted CEB rule
weightedrule(c, w, "CEB")
# Weighted SEC rule
weightedrule(c, w, "SEC")
# Weighted CSEC rule
w <- c(0, 4, 1, 2, 8) # New weight vector
weightedrule(c, w, "CSEC")