FCLP.classicObjective {FuzzyLP} | R Documentation |
Solves a Fuzzy Linear Programming problem with fuzzy constraints trying to assure a minimum (maximum) value of the objective function.
Description
The goal is to solve a linear programming problem having fuzzy constraints trying to assure a minimum (or maximum) value of the objective function.
Max\, f(x)\ or\ Min\ f(x)
s.t.:\quad Ax<=b+(1-\beta)*t
Where t
means we allow not to satisfy the constraint, exceeding the bound b
at most in t
.
FCLP.classicObjective
solves the problem trying to assure a minimum (maximum) value z_0
of the objective function (f(x)>=z_0
in maximization problems, f(x)<=z_0
in minimization
problems).
FCLP.fuzzyObjective
solves the problem trying to assure a minimum (maximum) value
z_0
of the objective function with tolerance t_0
(f(x)>=z_0-(1-\beta)t_0
in maximization
problems, f(x)<=z_0+(1-\beta)t_0
in minimization problems).
FCLP.fuzzyUndefinedObjective
solves the problem trying to assure a minimum (maximum)
value of the objective function with tolerance but the user doesn't fix the bound nor the
tolerance. The function estimate a bound and a tolerance and call FCLP.fuzzyObjective
using them.
FCLP.fuzzyUndefinedNormObjective
solves the problem trying to assure a minimum (maximum)
value of the objective function with tolerance but the user doesn't fix the bound nor the
tolerance. The function normalize the objective, estimate a bound and a tolerance and call
FCLP.fuzzyObjective
using them.
Usage
FCLP.classicObjective(
objective,
A,
dir,
b,
t,
z0 = 0,
maximum = TRUE,
verbose = TRUE
)
FCLP.fuzzyObjective(
objective,
A,
dir,
b,
t,
z0 = 0,
t0 = 0,
maximum = TRUE,
verbose = TRUE
)
FCLP.fuzzyUndefinedObjective(
objective,
A,
dir,
b,
t,
maximum = TRUE,
verbose = TRUE
)
FCLP.fuzzyUndefinedNormObjective(
objective,
A,
dir,
b,
t,
maximum = TRUE,
verbose = TRUE
)
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. |
t |
Vector with the tolerance of each constraint. |
z0 |
The minimum (maximum in a minimization problem) value of the objective function to reach. Only
used in |
maximum |
|
verbose |
|
t0 |
The tolerance value to the minimum (or maximum) bound for the objective function. Only
used in |
Value
FCLP.classicObjective
returns a solution reaching the given minimum (maximum)
value of the objective function if the solver has found it (trying to maximize \beta
) or NULL
if not. Note that the found solution may not be the optimum for the \beta
returned, trying \beta
in
FCLP.fixedBeta
may obtain better results.
FCLP.fuzzyObjective
returns a solution reaching the given minimum (maximum)
value of the objective function if the solver has found it (trying to maximize \beta
) or NULL
if not. Note that the found solution may not be the optimum for the \beta
returned, trying \beta
in
FCLP.fixedBeta
may obtain better results.
FCLP.fuzzyUndefinedObjective
returns a solution reaching the estimated minimum
(maximum) value of the objective function if the solver has found it (trying to maximize \beta
)
or NULL if not.
FCLP.fuzzyUndefinedNormObjective
returns a solution reaching the estimated
minimum (maximum) value of the objective function if the solver has found it (trying to
maximize \beta
) or NULL if not.
References
Zimmermann, H. Description and optimization of fuzzy systems. International Journal of General Systems, 2:209-215, 1976.
Werners, B. An interactive fuzzy programming system. Fuzzy Sets and Systems, 23:131-147, 1987.
Tanaka, H. and Okuda, T. and Asai, K. On fuzzy mathematical programming. Journal of Cybernetics, 3,4:37-46, 1974.
See Also
FCLP.fixedBeta
, FCLP.sampledBeta
Examples
## maximize: 3*x1 + x2 >= z0
## s.t.: 1.875*x1 - 1.5*x2 <= 4 + (1-beta)*5
## 4.75*x1 + 2.125*x2 <= 14.5 + (1-beta)*6
## x1, x2 are non-negative real numbers
obj <- c(3, 1)
A <- matrix(c(1.875, 4.75, -1.5, 2.125), nrow = 2)
dir <- c("<=", "<=")
b <- c(4, 14.5)
t <- c(5, 6)
max <- TRUE
# Problem with solution
FCLP.classicObjective(obj, A, dir, b, t, z0=11, maximum=max, verbose = TRUE)
# This problem has a bound impossible to reach
FCLP.classicObjective(obj, A, dir, b, t, z0=14, maximum=max, verbose = TRUE)
# This problem has a fuzzy bound impossible to reach
FCLP.fuzzyObjective(obj, A, dir, b, t, z0=14, t0=1, maximum=max, verbose = TRUE)
# This problem has a fuzzy bound reachable
FCLP.fuzzyObjective(obj, A, dir, b, t, z0=14, t0=2, maximum=max, verbose = TRUE)
# We want the function estimates a bound and a tolerance
FCLP.fuzzyUndefinedObjective(obj, A, dir, b, t, maximum=max, verbose = TRUE)
# We want the function estimates a bound and a tolerance
FCLP.fuzzyUndefinedNormObjective(obj, A, dir, b, t, maximum=max, verbose = TRUE)