NScheck | R Documentation |
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.
NScheck(
c,
x,
eta = rep(1, length(x)),
group_contribution = TRUE,
coalition = FALSE,
tol = 1e-06
)
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. |
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.
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. | |
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.
NSfaces
, NSstructure
, NSset
, comparisonallocations
# 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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.