FOLP.multiObj {FuzzyLP} | R Documentation |
Solves a fuzzy objective linear programming problem using Representation Theorem.
Description
The goal is to solve a linear programming problem having Trapezoidal Fuzzy Numbers
as coefficients in the objective function (f(x)=c_{1}^{f} x_1+\ldots+c_{n}^{f} x_n
).
Max\, f(x)\ or\ Min\ f(x)
s.t.:\quad Ax<=b
FOLP.multiObj
uses a multiobjective approach. This approach is based on each \beta
-cut
of a Trapezoidal Fuzzy Number is an interval (different for each \beta
). So the problem may be
considered as a Parametric Linear Problem. For a value of \beta
fixed, the problem becomes a
Multiobjective Linear Problem, this problem may be solved from different approachs, FOLP.multiObj
solves it using weights, the same weight for each objective.
FOLP.interv
uses an intervalar approach. This approach is based on each \beta
-cut
of a Trapezoidal Fuzzy Number is an interval (different for each \beta
). Fixing an \beta
,
using interval arithmetic and defining an order relation for intervals is posible to compare intervals,
this transforms the problem in a biobjective problem (involving the minimum and the center of intervals).
Finally FOLP.interv
use weights to solve the biobjective problem.
FOLP.strat
uses a stratified approach. This approach is based on that \beta
-cuts are a
sequence of nested intervals. Fixing an \beta
two auxiliary problems are solved, the first
replacing the fuzzy coefficients by the lower limits of the \beta
-cuts, the second doing the
same with the upper limits. The results of the two auxiliary problems allows to formulate a new
auxiliary problem, this problem tries to maximize a parameter \lambda
.
Usage
FOLP.multiObj(
objective,
A,
dir,
b,
maximum = TRUE,
min = 0,
max = 1,
step = 0.25
)
FOLP.interv(
objective,
A,
dir,
b,
maximum = TRUE,
w1 = 0.5,
min = 0,
max = 1,
step = 0.25
)
FOLP.strat(objective, A, dir, b, maximum = TRUE, min = 0, max = 1, step = 0.25)
Arguments
objective |
A vector |
A |
Technological matrix of Real Numbers. |
dir |
Vector of strings with the direction of the inequalities, of the same length as |
b |
Vector with the right hand side of the constraints. |
maximum |
|
min |
The lower bound of the interval to take the sample. |
max |
The upper bound of the interval to take the sample. |
step |
The sampling step. |
w1 |
Weight to be used, |
Value
FOLP.multiObj
returns the solutions for the sampled \beta's
if the solver has found them.
If the solver hasn't found solutions for any of the \beta's
sampled, return NULL.
FOLP.interv
returns the solutions for the sampled \beta's
if the solver has found them.
If the solver hasn't found solutions for any of the \beta's
sampled, return NULL.
FOLP.strat
returns the solutions and the value of \lambda
for the sampled
\beta's
if the solver has found them. If the solver hasn't found solutions for any of the
\beta's
sampled, return NULL. A greater value of \lambda
may be interpreted as the
obtained solution is better.
References
Verdegay, J.L. Fuzzy mathematical programming. In: Fuzzy Information and Decision Processes, pages 231-237, 1982. M.M. Gupta and E.Sanchez (eds).
Delgado, M. and Verdegay, J.L. and Vila, M.A. Imprecise costs in mathematical programming problems. Control and Cybernetics, 16 (2):113-121, 1987.
Bitran, G.. Linear multiple objective problems with interval coefficients. Management Science, 26(7):694-706, 1985.
Alefeld, G. and Herzberger, J. Introduction to interval computation. 1984.
Moore, R. Method and applications of interval analysis, volume 2. SIAM, 1979.
Rommelfanger, H. and Hanuscheck, R. and Wolf, J. Linear programming with fuzzy objectives. Fuzzy Sets and Systems, 29:31-48, 1989.
See Also
Examples
## maximize: [0,2,3]*x1 + [1,3,4,5]*x2
## s.t.: x1 + 3*x2 <= 6
## x1 + x2 <= 4
## x1, x2 are non-negative real numbers
obj <- c(FuzzyNumbers::TrapezoidalFuzzyNumber(0,2,2,3),
FuzzyNumbers::TrapezoidalFuzzyNumber(1,3,4,5))
A<-matrix(c(1, 1, 3, 1), nrow = 2)
dir <- c("<=", "<=")
b <- c(6, 4)
max <- TRUE
# Using a Multiobjective approach.
FOLP.multiObj(obj, A, dir, b, maximum = max, min=0, max=1, step=0.2)
# Using a Intervalar approach.
FOLP.interv(obj, A, dir, b, maximum = max, w1=0.3, min=0, max=1, step=0.2)
# Using a Stratified approach.
FOLP.strat(obj, A, dir, b, maximum = max, min=0, max=1, step=0.2)