Multi-Objective Optimization
Many optimization problems have multiple competing objectives. These competing objectives are part of the trade-off that defines an optimal solution. Sometimes these competing objectives have separate priorities where one objective should be satisfied before another objective is even considered. This especially arises in model predictive control or other types of dynamic optimization problems. There are competing objectives with a ranked hierarchy. The highest level objectives are satisfied first followed by lower ranked objectives if there are additional degrees of freedom available. The l1-norm objective is a natural way to explicitly rank objectives and simultaneously optimize multiple priorities with a single optimization problem.
Exercise
Consider examples of safety, environmental, and economic constraints or objectives. Which are most important and why?
For the following multi-objective optimization problem, sketch a possible optimal trajectory.

Solution
import numpy as np
import matplotlib.pyplot as plt
m = GEKKO()
m.time = np.linspace(0,10,101)
# Dynamic control options
m.options.IMODE = 6
m.options.CV_TYPE = 1
m.options.MV_TYPE = 0
m.options.SOLVER = 3
m.options.MV_STEP_HOR = 1
m.options.NODES = 3
#Define Manipulated Variables
u = m.MV(name='u')
#Define Controled Variables
y = m.CV(1,name='y')
z = m.CV(1,name='z')
s = m.CV(1,name='s')
# Environmental Constraint
#setup CV
# tau is the speed of the CV response, 0=step, 1 = 63.2# of the way
# to the new setpoint in 1 sec, only if tr_init is 1 or 2.
# with tr_init=0, it is just a pure dead-band
# specifying the speed to get to the set point
# get to 63.2# of sp withing tau seconds
y.TAU = 5
y.STATUS = 1
y.TR_INIT = 2
y.SPHI = 5
y.SPLO = 4
y.FSTATUS = 0
y.WSPHI = 100
y.WSPLO = 100
# Operational Constraint
z.TAU = 4
z.STATUS = 1
z.TR_INIT = 2
z.SPHI = 7
z.SPLO = 6
z.FSTATUS = 0
z.WSPHI = 50
z.WSPLO = 50
# Safety Constraint
s.TAU = 10
s.STATUS = 1
s.TR_INIT = 2
s.TR_OPEN = 3
s.SPHI = 11
s.SPLO = 10
s.FSTATUS = 0
s.WSPHI = 200
s.WSPLO = 200
#setup MV (u)
u.STATUS = 1
u.DCOST = 0
u.LOWER = 0
u.UPPER = 1000
u.COST = 0
# process model
tau = 1
K = 3
m.Equation(tau*y.dt()+y==u)
m.Equation(z==y)
m.Equation(s==y)
# solve problem
m.solve(disp=True)
# get additional solution information
import json
with open(m.path+'//results.json') as f:
results = json.load(f)
# create plot
p, ax = plt.subplots(nrows=2, ncols=1, \
gridspec_kw={'height_ratios':[3,1]})
ax[0].plot(m.time,results['s.tr_hi'],'r-.',lw=2)
ax[0].plot(m.time,results['y.tr_hi'],'b:',lw=2)
ax[0].plot(m.time,results['z.tr_hi'],'--',color='orange',lw=2)
ax[0].plot(m.time,results['z'],'k-',lw=3)
ax[0].legend(['Priority 1: Safety Constraint',\
'Priority 2: Environmental Constraint',\
'Priority 3: Economic Constraint','Response'],loc=4)
ax[0].plot(m.time,results['z.tr_lo'],'--',color='orange',lw=2)
ax[0].plot(m.time,results['y.tr_lo'],'b:',lw=2)
ax[0].plot(m.time,results['s.tr_lo'],'r-.',lw=2)
ax[0].set_ylabel('Pressure (bar)')
ax[1].plot(m.time,u.value,'b-',lw=2)
ax[1].legend(['Manipulated Variable'])
ax[1].set_ylabel('MV')
ax[1].set_xlabel('Time (min)')
plt.show()

Discussion Questions
- A weighted-sum objective and a ranked (lexicographic) formulation can both express "safety before environment before economics." Under what circumstances do they give different answers, and why can no finite set of weights reproduce a strict priority ordering when constraints conflict?
- The weighted-sum method traces the Pareto front by sweeping weights - except where it cannot. What shape of front (nonconvex regions) hides solutions from every weight combination, and what method still finds them?
- In the pressure example, the safety band (10-11 bar) and the economic band (6-7 bar) cannot both hold. The l1-ranked formulation "gives up" on the lower priorities gracefully. Where exactly in the objective does the giving-up happen, and what would a hard-constraint version do instead?
- Battery fast charging trades charging time against degradation (temperature, lithium plating). Sketch the Pareto front you expect, mark where a 5-minute-charge marketing target sits on it, and identify which constraint should be non-negotiable (ranked above the objective) rather than traded off.
Tip: Exercise prompt: "I sketched trajectories for the multi-objective control exercise with safety > environmental > economic priorities: {describe}. Before showing me any solution, interrogate my sketch: where does the MV saturate, which band is abandoned first when degrees of freedom run out, and why. Then grade my sketch against the l1-ranked formulation's logic."