Derringer-Suich desirability functions

9. Derringer-Suich desirability functions#

import numpy as np
from moldrug import utils
import matplotlib.pyplot as plt

test_r = np.arange(0,3.25,0.25)

var1 = np.linspace(100, 500, 1000)
var2 = np.linspace(-15, 5, 1000)
var3 = np.linspace(0, 15, 1000)

# Vectorize the Desirability functions
f1 = np.vectorize(utils.LargerTheBest)  # Here we are maximizing
f2 = np.vectorize(utils.SmallerTheBest) # Here we are minimizing
f3 = np.vectorize(utils.NominalTheBest) # Here we are looking for a range
fig, axs = plt.subplots(ncols=3, figsize = (30,9))
plt.setp(axs.flat, xlabel='Value', ylabel='desirably')
NUM_COLORS = len(test_r)
cm = plt.get_cmap('gist_rainbow')#gist_rainbow viridis
[ax.set_prop_cycle('color', [cm(1.*j/NUM_COLORS) for j in range(NUM_COLORS)]) for ax in axs]

for r in test_r:
    d1 = f1(Value = var1, LowerLimit = 200, Target = 450, r  = r)
    d2 = f2(Value = var2, Target = -13.5, UpperLimit = 0, r  = r)
    d3 = f3(Value = var3, LowerLimit = 2, Target = 7, UpperLimit = 13, r1  = r, r2  = r)

    axs[0].plot(var1, d1, label = str(r))
    axs[1].plot(var2, d2, label = str(r))
    axs[2].plot(var3, d3, label = str(r))
plt.legend()
axs[0].set(title = 'LargerTheBest')
axs[1].set(title = 'SmallerTheBest')
axs[0].set(title = 'NominalTheBest')
[Text(0.5, 1.0, 'NominalTheBest')]
../_images/794e28db3352e117b88cb8aa985e75b4417f60c750fc6776b04355e4c9a11728.png