NScheck: Verification of compliance with the no-subsidy constraints

View source: R/NScheck.R

NScheckR Documentation

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 eta are set to 1.

group_contribution

A logical value. By default, if group_contribution = TRUE, x stores the aggregated contribution for each group of clones. However, if group_contribution = FALSE, x represents the individual contribution of one of the agents in the group of clones.

coalition

A logical value. By default, if coalition = FALSE, the function only returns whether the NS constraint is satisfied or not. However, if coalition = TRUE, the function also returns the coalition of agents that breach the NS constraint, if it is violated.

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)


AirportProblems documentation built on June 8, 2025, 10:49 a.m.