Description Usage Arguments Value Examples
View source: R/PriceOfAnarchy.R
'PriceOfAnarchy()' returns Price of Anarchy (PoA) for a routing game. This is a routing game solver for a generic network. For this to work properly, set the inputs as shown in the examples. This is as a tibble, with one column containing the cost functions, and another containing the flow.
1 | PriceOfAnarchy(cost.and.flow.tibble, variable.limits)
|
cost.and.flow.tibble |
A tibble with 2 columns, cost which contains the cost functions, and flow containing the respective flows. When defining the flow functions, use all variables as inputs for each function. |
variable.limits |
A vector of limits for each variable, described by the proportions at each source node. |
Returns the Price of Anarchy, Optimal cost and the respective parameters, Nash cost and the respective parameters.
Requires tidyverse, pracma and nloptr packacges
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | library(stats, "na.omit")
library(dplyr)
library(tibble)
library(pracma)
library(nloptr)
### 2 player game ###
player2 <- tibble(cost = c(function(x){0}, function(x){0}, function(x){NA},
function(x){x^2}, function(x){(3/2)*x}, function(x){x}),
flow = c(function(alpha,beta){(1/2)-alpha},function(alpha,beta){(1/2)-beta},
function(alpha,beta){NA},function(alpha,beta){alpha},
function(alpha,beta){beta},function(alpha, beta){1-alpha-beta}))
PriceOfAnarchy(player2, c((1/2), (1/2)))
## Not run:
### 3 player - 2x2 middle ###
player3middle2x2 <- tibble(cost = c(function(x){0}, function(x){x},function(x){x^2},
function(x){x},function(x){x},function(x){0},function(x){x},function(x){x^2},
function(x){x^2},function(x){x},function(x){(1/2)*x},function(x){x}),
flow = c(function(d1,d2,d3,d4,d5){d1},
function(d1,d2,d3,d4,d5){1-d1},function(d1,d2,d3,d4,d5){d2},
function(d1,d2,d3,d4,d5){1-d2},function(d1,d2,d3,d4,d5){d3},
function(d1,d2,d3,d4,d5){1-d3},function(d1,d2,d3,d4,d5){d4},
function(d1,d2,d3,d4,d5){d1+d2+d3-d4},function(d1,d2,d3,d4,d5){d5},
function(d1,d2,d3,d4,d5){1-d1-d2-d3-d5},
function(d1,d2,d3,d4,d5){d4+d5},function(d1,d2,d3,d4,d5){1-d4-d5}))
PriceOfAnarchy(player3middle2x2, c((6/10),(1/10),(3/10),1,1))
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.