Optimize_NBP: Load and Optimize Nash Bargaining Problem (NBP)

View source: R/Optimize_NBP.R

Optimize_NBPR Documentation

Load and Optimize Nash Bargaining Problem (NBP)

Description

Optimize_NBP creates and optimizes the Nash Bargaining Problem (NBP) in Julia environment. It requires two objective functions to be considered as two players.
(For detailed information refer to the paper)

Usage

Optimize_NBP(First_Objective=0, Second_Objective=0, Risk_Objective=0,
                    Time_limit=1e7, Solver="SCIP", Silence= FALSE, Env= .GlobalEnv)

Arguments

First_Objective

A binary parameter: If 1, the first objective function (First_Objective) will be included in optimization. If 0, it will not be included in optimization.

Second_Objective

A binary parameter: If 1, the second objective function (Second_Objective) will be included in optimization. If 0, it will not be included in optimization.

Risk_Objective

A binary parameter: If 1, the Risk objective function (Risk_Objective) will be included in optimization. If 0, it will not be included in optimization.

Time_limit

A double: the total time limit in seconds

Solver

A string: defining the solver to be used to solve the problem. (Default: "SCIP")

Silence

A binary parameter: if FALSE, the function will report a summary message. If TRUE, the function will be silent. (Default: FALSE)

Env

the environment where the package should create or access variables. By default the package works in the R's Global environment. (Default: .GlobalEnv)

Details

To create NBP, the nadir values of both objectives are required, which entails 4 optimization problems.

If Optimize_NBP terminates with a Warning, then there have been a problem in the process of finding the Nadir points, and the function has terminated before even going to the NBP optimization. The corresponding found solution and status will be returned as a list. Furhter, the Warning will report in what step the function was terminated.

If Optimize_NBP finishes with no Warning, then the Nadir points were found successfully, and the NBP was created. Then, in the list that Optimize_NBP returns, ⁠[["Status"]]⁠ defines the status of the returned NBP solution.
If ⁠[["Status"]]="OPTIMAL"⁠, the NBP was solved to optimality and the Parcels' optimal status are stored in ⁠[["Result"]]⁠. Also, the NBP optimal values of objectives will be stored in either ⁠[["First_Objective"]]⁠, ⁠[["Second_Objective"]]⁠, or ⁠[["Risk_Objective"]]⁠ , based on the input objectives.
If ⁠[["Status"]]="TIME_LIMIT"⁠, the solver was terminated because the time limit was reached. If any feasible solution was reported by the solver, it would be stored in ⁠[["Result"]]⁠. Otherwise, ⁠[["Result"]]⁠ and objective values would be all equal to "N/A".
If ⁠[["Status"]]="INFEASIBLE"⁠, then there has been a problem in the solver. In this stage, the feasibility and boundedness of the problem is certain, and therefore, any status of this kind is showing an underlying problem. Contact the Developer.

In any other case, the ⁠[["Status"]]⁠ will be the solution status that the solver has reported.

Note 1: If only First Objective and Second Objective are considered, Optimize_NBP needs to solve a total of 5 optimization problems to find the NBP solution: Four Linear Problem (LP), and one Second Order Cone Program (SOCP).

Note 2: If Risk objective is considered along with one of First objective or Second Objective, Optimize_NBP needs to solve 3 optimization problems to find the NBP solution: One Linear Problem (LP), one Quadratic Problem (QP), and one Second Order Cone Program (SOCP).

Value

A list with 8 members:
⁠[["Solution_time"]]⁠: a numeric value; defining the time spent in the solver in seconds.
⁠[["Status"]]⁠: a character; defining the status of the solution.
⁠[["Gap"]]⁠: a numeric value; defining the relative optimality gap of the solution.
⁠[["Result"]]⁠: a vector of binaries; its i'th element defines if the parcel named Parcels[i] is protected or not. Comparing these values with the values of Status defined when creating the problem, the user can find which parcels are to be invested, divested, or remain the same.
⁠[["Firs_Objective"]]⁠: a numveric value; (if applicable) returns the NBP value of first objective.
⁠[["Second_Objective"]]⁠: a numveric value; (if applicable) returns the NBP value of second objective.
⁠[["Risk_Objective"]]⁠: a numveric value; (if applicable) returns the NBP value of risk objective.
⁠[["Ideal"]]⁠: a list with two members returning the ideal values of the input objectives found in the process of creating the NBP.
⁠[["Nadir"]]⁠: a list with two members returning the nadir values of the input objectives found in the process of creating the NBP.

See Also

Other Optimizer Functions: Load_Problem(), Optimize_First_Objective(), Optimize_Second_Objective(), Optimize_WSO()

Examples

## Not run: 

## to find NBP solution for First Objective and Second Objective: ##

Optimize_NBP(First_Objective=1, Second_Objective=1, Time_limit=1e7, Solver="SCIP", Silence= FALSE)

## to find NBP solution for First Objective and Risk Objective: ##

Optimize_NBP(First_Objective=1, Risk_Objective=1, Time_limit=1e7, Solver="SCIP", Silence= FALSE)

## to find NBP solution for Second Objective and Risk Objective: ##

Optimize_NBP(Second_Objective=1, Risk_Objective=1, Time_limit=1e7, Solver="SCIP", Silence= FALSE)

## End(Not run)



paymanghasemi/SiteOpt documentation built on May 18, 2024, 2:06 p.m.