In transferable utility characteristic function games (cooperative game theory), the most famous solution concept is the core of the game defined as the set of feasible payoff allocations that cannot be improved upon by any coalition. Geometrically the core is a closed convex polyhedron: http://www.jstor.org/stable/2630190
In these game a payoff allocation is either in the core or not. The TUGlab set of tools has a command that can compute whether or not a payoff allocation is in the core or not: http://webs.uvigo.es/mmiras/TUGlab/ But there is no command that would tell you what the exact distance of a certain payoff allocation is to the core. If there is a geometric characterization of the core as a closed convex polyhedron, then there should be a way to calculate the geometric distance between a point and that polyhedron as "distance from the core" of characteristic function. Unfortunately I have found no paper that actually shows me the formula or algorithm for computing this distance that I could implement in MATLAB.
My guess is that there may be a clue in the code by Stephen Cameron that calculates distance between two polyhedrons. But my problem should be simpler than that: just the distance between a point and a polyhedron. In the end, I need a MATLAB program that takes as input a) a characteristic function, and b) a payoff distribution, and then gives as output the distance between the payoff distribution and the core of the characteristic function. Assuming of course that the core is nonempty.
Complicated though the core concept may be, a geometrical translation can simplify it by an order of magnitude!
Knowing the core description as a system of inequalities, you can numerically minimize the Euclidean distance of a given point to the surface of the N-D convex polyhedron.
Assuming that the core is characterized by the system of inequalities and equalities as:
A.x <= b
and
Aeq.x = beq
(this part may not exist in all descriptions)
one can simply minimize the distance |Cp-Gp|
where Gp
is the coordinates of a given point and Cp
is the point closest to Gp that satisfies the above constraints describing the core.
A simple numerical solution is using the lsqlin
function already available in MATLAB. A single line of code would give you the distance, D
and the position of the closest point on the convex, Cp
as:
[Cp,D,residual,exitflag,output,lambda] = lsqlin(speye(N),GP,A,b,Aeq,beq);
Moreover, if the returned argument residual
is negative one can conclude that Gp
is contained within the core.