Type: | Package |
Title: | Mixture Optimization Algorithm |
Version: | 0.1.2 |
Author: | Cassandro Davi Emer |
Maintainer: | Cassandro Davi Emer <cde@actisys.org> |
Description: | Simple tools to perform mixture optimization based on the 'desirability' package by Max Kuhn. It also provides a plot routine using 'ggplot2' and 'patchwork'. |
License: | GPL-2 |
Encoding: | UTF-8 |
LazyData: | true |
Depends: | ggplot2, patchwork, desirability |
RoxygenNote: | 7.1.1 |
Suggests: | knitr, rmarkdown |
VignetteBuilder: | knitr |
Imports: | rlang |
NeedsCompilation: | no |
Packaged: | 2020-06-30 19:22:44 UTC; Xando |
Repository: | CRAN |
Date/Publication: | 2020-07-01 09:40:11 UTC |
Plot desirability profile
Description
This function creates a graphical representation of the desirability profiles within the data range. It requires a data frame object generated from an optimization function. You can use a simpler data frame to plot the lines and present a more accurate data from another optimization call.
Usage
desirabilityPlot(functions, plotData, bestValues, desirab, types)
Arguments
functions |
An array of functions |
plotData |
A data frame generated from an optimization function |
bestValues |
The optimal mixture composition to be presented |
desirab |
An array of desirability functions |
types |
An array of strings containing the attributes to be shown for each desirability function. Currently only accepts |
Value
A ggplot composite object from patchwork
Performs a restrict interval optimization
Description
This function performs an optimization testing within an interval defined by the user using starting points and an alpha value. Since it is designed for more accurate searching, it does not allow the generation of the data frame for plotting.
Usage
mixtureFineOptim(
functions,
desirabilityModel,
startPoint,
step = 0.001,
alpha = 0.02,
verbose = TRUE
)
Arguments
functions |
An array of functions |
desirabilityModel |
A desirability |
startPoint |
An array with the references (mid-points) for the optimization |
step |
The ammount of each increment in the optimization |
alpha |
Defines the range of the seach, as |
verbose |
Defines if the user should be updated with the processing status (percentages) |
Value
A list containg the data regarding the maximum desirability found
Examples
library(MixOptim)
dados <- read.table(header = TRUE, dec = ",", sep = "\t", text = "
x1 x2 x3 R1 R2 R3
1 0 0 0,76 8 5
1 0 0 0,75 8 5
0,5 0,5 0 1,4 7 7,5
0,5 0 0,5 0,55 8 10
0 1 0 4,1 4 10
0 1 0 4,4 4 10
0 0,5 0,5 0,9 7 12,5
0 0 1 0,42 9 15
0 0 1 0,4 10 15
0,6667 0,1667 0,1667 0,8 7 7,5
0,1667 0,6667 0,1667 1,7 7 10
0,1667 0,1667 0,6667 0,55 8 12,5
0,3333 0,3333 0,3333 0,8 8 10")
lm1 <- lm(data = dados, R1 ~ -1 + x1 + x2 + x3 + x1:x2 + x1:x3 + x2:x3)
summary(lm1)
flm1 <- function(x) 0.7678*x[1] + 4.2083*x[2] + 0.4274*x[3] - 4.3273*x[1]*x[2] +
0.3070*x[1]*x[3] - 5.6101*x[2]*x[3]
lm2 <- lm(data = dados, R2 ~ -1 + x1 + x2 + x3)
summary(lm2)
flm2 <- function(x) 7.9742*x[1] + 4.5742*x[2] + 9.3742*x[3]
lm3 <- lm(data = dados, R3 ~ -1 + x1 + x2 + x3)
summary(lm3)
flm3 <- function(x) 4.9998461*x[1] + 9.9998461*x[2] + 14.9998461*x[3]
funcoes2 <- c(flm1, flm2, flm3)
des1<-dTarget(0.5, 0.6, 0.7)
des2<-dMax(8, max(dados$R2))
des3<-dMin(5, 10)
finalD<-dOverall(des1, des2, des3)
# code commented due to process time requirement
#teste <- mixtureOptim(funcoes2, finalD, 3, step = 0.01, plot = TRUE)
#desirabilityPlot(funcoes2, teste$plotData, teste$bestComposition,
# list(des1, des2, des3), c("max", "max", "min"))
#teste2 <- mixtureFineOptim(funcoes2, finalD, teste$bestComposition, step = 0.0001)
#desirabilityPlot(funcoes2, teste$plotData, teste2$bestComposition,
# list(des1, des2, des3), c("max", "max", "min"))
Performs a full interval optimization
Description
This function performs a full interval optimization (0-1 for each x
variable).
It allows the creation of the data frame used for plotting.
Usage
mixtureOptim(
functions,
desirabilityModel,
xCount,
step = 0.01,
plot = TRUE,
verbose = TRUE
)
Arguments
functions |
An array of functions |
desirabilityModel |
A desirability |
xCount |
The amount of |
step |
The ammount of each increment in the optimization |
plot |
Define is the data frame that can be used for the |
verbose |
Defines if the user should be updated with the processing status (percentages) |
Value
A list containg the data regarding the maximum desirability found
Examples
library(MixOptim)
saPred<-function(x) 17.3359 * x[1] + 30.7765 * x[2] + 20.0501 * x[3] + 0.7506 * x[1] * x[2] +
(-6.3443 * x[1] * x[3]) + (-5.9291 * x[2] * x[3]) +(-25.3093 * x[1] * x[2] * x[3])
pvPred<-function(x) 0.884640 * x[1] + 0.789863 * x[2] + 0.825016 * x[3] +
(-0.108964 * x[1] * x[2]) + 0.107167 * x[1] * x[3] + (-0.005220 * x[2] * x[3]) +
1.625246 * x[1] * x[2] * x[3]
funcoes <- c(saPred, pvPred)
saD<-dMin(16.8293856, 31.41170555) #minimun value
pvD<-dMax(0.7796004, 0.9019796) #maximum value
overallD<-dOverall(saD, pvD)
a <- mixtureOptim(funcoes, overallD, 3, step = 0.05, plot = TRUE)
a$bestComposition
# next line will generate a ggplot/patchwork grid
#desirabilityPlot(funcoes, a$plotData, a$bestComposition, list(saD, pvD), c("min", "max"))
Performs a specific range optimization
Description
This function performs an optimization testing within an interval defined by the user using alpha values for each middle point provided. It allows the generation of the data frame required for plotting.
Usage
mixtureRangeOptim(
functions,
desirabilityModel,
midPoints,
alpha,
step = 0.01,
plot = TRUE,
verbose = TRUE
)
Arguments
functions |
An array of functions |
desirabilityModel |
A desirability |
midPoints |
An array with the references (mid-points) for the optimization |
alpha |
Defines the range of the seach, as |
step |
The ammount of each increment in the optimization |
plot |
Define is the data frame that can be used for the |
verbose |
Defines if the user should be updated with the processing status (percentages) |
Value
A list containg the data regarding the maximum desirability found
Examples
library(MixOptim)
dados <- read.table(header = TRUE, sep = "\t", text = "
ID TiO2 Vehicle Extender A Extender B Hiding Scrub
1 0.05 0.20 0.30 0.45 7.8953 533.67
2 0.45 0.20 0.30 0.05 32.862 749
3 0.05 0.60 0.30 0.05 3.721 39.5
4 0.05 0.20 0.70 0.05 9.2751 203.25
5 0.25 0.20 0.30 0.25 20.132 555.25
6 0.05 0.40 0.30 0.25 4.7137 51.75
7 0.05 0.20 0.50 0.25 8.3829 342.75
8 0.25 0.40 0.30 0.05 16.245 84.75
9 0.25 0.20 0.50 0.05 22.639 360.75
10 0.05 0.40 0.50 0.05 5.4645 48
11 0.05 0.33 0.43 0.18 5.8882 76
12 0.18 0.20 0.43 0.18 17.256 386.25
13 0.18 0.33 0.30 0.18 12.351 136
14 0.18 0.33 0.43 0.05 14.499 75.5
15 0.10 0.25 0.35 0.30 10.548 325.75
16 0.30 0.25 0.35 0.10 22.096 359
17 0.10 0.45 0.35 0.10 6.2888 40.75
18 0.10 0.25 0.55 0.10 10.629 136.67
19 0.15 0.30 0.40 0.15 11.777 114")
hiding<-function(x) 67.748*x[1] + 7.291*x[2] + 11.419*x[3] + 14.578*x[4] -
64.32*x[1]*x[2] + 35.878*x[1]*x[3] - 15.696*x[1]*x[4] - 31.006*x[2]*x[3] -
38.668*x[2]*x[4] - 6.59*x[3]*x[4]
scrub<-function(x) 3937.5*x[1] + 899.3*x[2] + 502*x[3] + 2354.8*x[4] -
8227.2*x[1]*x[2] - 3227.4*x[1]*x[3] - 2447.7*x[1]*x[4] - 2435.3*x[2]*x[3] -
6325.1*x[2]*x[4] - 1050.3*x[3]*x[4]
funcoes2 <- c(hiding, scrub)
des1<-dMax(min(dados$Hiding), max(dados$Hiding))
des2<-dMin(min(dados$Scrub), max(dados$Scrub))
finalD<-dOverall(des1, des2)
# code commented due to process time requirement
#teste <- mixtureRangeOptim(funcoes2, finalD, midPoints = c(0.25, 0.4, 0.5, 0.25),
# alpha = c(0.2, 0.2, 0.2, 0.2), step = 0.01, plot = TRUE)
#desirabilityPlot(funcoes2, teste$plotData, teste$bestComposition, list(des1, des2),
# c("max", "min"))
#teste2 <- mixtureRangeOptim(funcoes2, finalD, midPoints = teste$bestComposition,
# alpha = c(0.01, 0.01, 0.01, 0), step = 0.001, plot = FALSE)
#teste2
#desirabilityPlot(funcoes2, teste$plotData, teste2$bestComposition, list(des1, des2),
# c("max", "min"))