[ad_1]
I’m new to using PuLP and am trying to programme the standard deviation as my objective function in an optimisation problem. I’ve read this answer and, though I know it’s related, am having trouble applying it to my specific situation.
I’m trying to solve the following optimisation problem: maximise the standard deviation for a set of 3 variables with an associated weight vector of [0.25, 0.40, and 0.35]. The constraints I have are that each decision variable should range between 0.5 and 2.0.
So far, my code is the following:
from pulp import LpMaximize, LpProblem, LpStatus, lpSum, LpVariable
# Create the model
model = LpProblem(name="max_stdev", sense=LpMaximize)
# Define the decision variables
x = {i: LpVariable(name=f"x{i}", lowBound=0.5, upBound=2.0) for i in range(1, 4)}
# Add the constraints to the model
model += (0.25*x[1] + 0.40*x[2] + 0.35*x[3] == 1, "weight_constraint")
# Add the objective function to the model, which should be the standard deviation of the x vector
model += ??
# Solve the problem
status = model.solve()
I’m just not sure how to apply the standard deviation formula in the form of an objective function (see above). Again, I know this answer could be useful, but am just not sure how to make this work.
Many thanks in advance for any help!
[ad_2]