Chapter 16: Robot System Design Process
Lesson 2: Concept Generation and Trade-off Studies
This lesson formalizes robot concept generation and trade-off studies using mathematical models of design spaces, multi-criteria objectives, and Pareto optimality. We connect informal brainstorming to structured decision-making, including scoring, normalization, and basic multi-objective optimization tools that can be implemented in Python, C++, Java, and MATLAB/Simulink.
1. Role of Concept Generation in Robot Design
After requirements engineering (Lesson 1), the next step is to generate candidate robot concepts that could satisfy those requirements. Mathematically, let \( \mathcal{X} \) denote the set of feasible concepts, each described by a vector of design variables \( \mathbf{x} \in \mathcal{X} \subset \mathbb{R}^n \) (continuous dimensions such as link lengths, motor ratings) plus discrete choices (wheel vs. leg, LiDAR vs. camera, etc.).
Requirements from Lesson 1 can be represented as constraints on \( \mathbf{x} \) and as target values on performance functions:
\[ \begin{aligned} \mathcal{X} &= \left\{ \mathbf{x} \in \mathbb{R}^n \,\middle|\, g_j(\mathbf{x}) \le 0,\; j=1,\dots,q \right\},\\ J_k(\mathbf{x}) &:\ \text{objective functions (e.g. cost, mass, tracking error)},\ k=1,\dots,m. \end{aligned} \]
Concept generation populates a finite subset \( \{\mathbf{x}^{(1)},\dots,\mathbf{x}^{(N)}\} \subset \mathcal{X} \) using creativity techniques (brainstorming, morphological charts) but the selection among those candidates is governed by multi-criteria optimization.
flowchart TD
R["Requirements (functional, performance, safety)"] --> G["Generate many candidate concepts"]
G --> F1["Filter by feasibility (constraints, physical limits)"]
F1 --> E["Evaluate metrics: cost, weight, accuracy, power, etc."]
E --> T["Analyze trade-offs (multi-criteria)"]
T --> S["Select promising concepts for detailed design"]
2. Mathematical Representation of Design Space
For early-stage robot design, it is useful to combine continuous and discrete choices into a unified notation. Let \( \mathbf{x} = [\mathbf{x}_c^\top,\mathbf{x}_d^\top]^\top \), where \( \mathbf{x}_c \in \mathbb{R}^{n_c} \) are continuous variables (e.g. link lengths, motor torque ratings) and \( \mathbf{x}_d \in \{0,1,\dots\}^{n_d} \) encode discrete choices (e.g. mobility type, sensor type).
We can enforce basic physical limits and compatibility constraints as inequalities:
\[ \begin{aligned} g_1(\mathbf{x}) &= m(\mathbf{x}) - m_{\max} \le 0 &&\text{(mass limit)},\\ g_2(\mathbf{x}) &= P(\mathbf{x}) - P_{\max} \le 0 &&\text{(power limit)},\\ g_3(\mathbf{x}) &= v_{\min} - v(\mathbf{x}) \le 0 &&\text{(min speed)},\\ g_4(\mathbf{x}) &= \sigma_{\text{joint}}(\mathbf{x}) - \sigma_{\text{allow}} \le 0 &&\text{(stress)}. \end{aligned} \]
Here \( m(\mathbf{x}) \) is the total mass, \( P(\mathbf{x}) \) the peak electrical power, \( v(\mathbf{x}) \) a reachable speed, and \( \sigma_{\text{joint}}(\mathbf{x}) \) a worst-case joint stress (estimated using basic statics and linear control results for torque bounds).
The goal of concept generation is therefore to find many feasible \( \mathbf{x}^{(i)} \) satisfying \( g_j(\mathbf{x}^{(i)}) \le 0 \) for all \( j \), while exploring qualitatively different structures (e.g. wheeled vs. legged).
3. Multi-Criteria Objectives and Normalization
Real robot design is intrinsically multi-criteria: we want low cost, low mass, low energy consumption, and high performance. Let \( J_k(\mathbf{x}) \) be objectives to be minimized:
\[ \mathbf{J}(\mathbf{x}) = \begin{bmatrix} J_1(\mathbf{x}) \\ \vdots \\ J_m(\mathbf{x}) \end{bmatrix} = \begin{bmatrix} \text{cost}(\mathbf{x}) \\ \text{mass}(\mathbf{x}) \\ \text{energy}(\mathbf{x}) \\ \text{tracking_error}(\mathbf{x}) \\ \vdots \end{bmatrix} \]
To combine heterogeneous quantities, we first normalize them. Suppose among the generated concepts we observe ranges \( J_k^{\min}, J_k^{\max} \). A simple linear normalization (where 1 is best, 0 is worst) is:
\[ z_k(\mathbf{x}) = \frac{J_k^{\max} - J_k(\mathbf{x})}{J_k^{\max} - J_k^{\min}}, \quad k = 1,\dots,m. \]
For criteria to maximize (e.g. payload capacity), you can invert the sign or swap numerator and denominator.
A common aggregation is a weighted sum:
\[ U(\mathbf{x};\mathbf{w}) = \sum_{k=1}^m w_k\, z_k(\mathbf{x}) = \mathbf{w}^\top \mathbf{z}(\mathbf{x}), \quad \mathbf{w} \in \mathbb{R}^m,\ w_k \ge 0,\ \sum_{k=1}^m w_k = 1. \]
Here \( U(\mathbf{x};\mathbf{w}) \) is a scalar utility; higher \( U \) indicates a better concept given a specific weighting of trade-offs. Changing \( \mathbf{w} \) corresponds to changing the design priorities.
4. Pareto Optimality and Trade-off Fronts
Weighted sums hide the structure of trade-offs. A more fundamental concept is Pareto optimality.
Definition (Dominance).
For two concepts \( \mathbf{x},\mathbf{y} \in \mathcal{X} \), we say that \( \mathbf{x} \) dominates \( \mathbf{y} \), written \( \mathbf{x} \prec \mathbf{y} \), if
\[ J_k(\mathbf{x}) \le J_k(\mathbf{y})\ \forall k \quad\text{and}\quad \exists \ell:\ J_\ell(\mathbf{x}) < J_\ell(\mathbf{y}). \]
Definition (Pareto optimality).
A concept \( \mathbf{x}^\star \in \mathcal{X} \) is Pareto optimal if there is no other \( \mathbf{x} \in \mathcal{X} \) such that \( \mathbf{x} \prec \mathbf{x}^\star \).
The set of all Pareto-optimal concepts is the Pareto front:
\[ \mathcal{P} = \left\{ \mathbf{x}^\star \in \mathcal{X} \,\middle|\, \nexists\,\mathbf{x} \in \mathcal{X}: \mathbf{J}(\mathbf{x}) \le \mathbf{J}(\mathbf{x}^\star), \ \mathbf{J}(\mathbf{x}) \ne \mathbf{J}(\mathbf{x}^\star) \right\}. \]
Each point on \( \mathcal{P} \) corresponds to a different trade-off between objectives. A concept off the Pareto front is unambiguously worse than some other concept.
Theorem (Weighted sums and Pareto optimality, convex case).
Assume \( \mathcal{X} \subset \mathbb{R}^n \) is convex, each \( J_k(\mathbf{x}) \) is convex, and \( \mathbf{w} \gt \mathbf{0} \). Then any solution of
\[ \min_{\mathbf{x} \in \mathcal{X}} \sum_{k=1}^m w_k J_k(\mathbf{x}) \]
is Pareto optimal. (But not all Pareto points are necessarily recovered for non-convex problems.)
Sketch of proof.
Suppose \( \mathbf{x}^\star \) solves the weighted sum but is not Pareto optimal. Then there exists \( \tilde{\mathbf{x}} \in \mathcal{X} \) such that \( J_k(\tilde{\mathbf{x}}) \le J_k(\mathbf{x}^\star) \) for all \( k \) and strictly smaller for at least one index. With strictly positive weights, \( \sum_k w_k J_k(\tilde{\mathbf{x}}) \lt \sum_k w_k J_k(\mathbf{x}^\star) \), contradicting optimality of \( \mathbf{x}^\star \). Convexity ensures that a global minimizer of the weighted sum exists and can be found using convex optimization techniques.
5. Linear Trade-offs and Sensitivity
Using the scalar utility \( U(\mathbf{x};\mathbf{w}) \), the best concept under a given weighting is
\[ \mathbf{x}^\star(\mathbf{w}) \in \arg\max_{\mathbf{x} \in \mathcal{X}_{\text{cand}}} U(\mathbf{x};\mathbf{w}), \]
where \( \mathcal{X}_{\text{cand}} \) is the finite set of generated concepts. Since this is finite, the maximizer is always attained by at least one concept.
For two concepts \( \mathbf{x}^{(a)} \) and \( \mathbf{x}^{(b)} \), we can study sensitivity of the preference with respect to the weight vector \( \mathbf{w} \):
\[ U(\mathbf{x}^{(a)};\mathbf{w}) \ge U(\mathbf{x}^{(b)};\mathbf{w}) \iff \mathbf{w}^\top \left( \mathbf{z}(\mathbf{x}^{(a)}) - \mathbf{z}(\mathbf{x}^{(b)}) \right) \ge 0. \]
The inequality describes a half-space in weight space \( \mathbb{R}^m \). Thus, the region of weights for which a concept is preferred can be characterized geometrically and visualized in low dimensions (\( m=2,3 \)) to aid trade-off discussion with stakeholders.
6. Algorithmic Evaluation Pipeline
A simple algorithm for trade-off studies over a finite set of concepts:
- Generate a list of candidate concepts.
- Compute constraint functions \( g_j(\mathbf{x}^{(i)}) \).
- Discard infeasible concepts.
- Compute objective values \( J_k(\mathbf{x}^{(i)}) \).
- Normalize to obtain \( \mathbf{z}(\mathbf{x}^{(i)}) \).
- Compute scalar utilities \( U(\mathbf{x}^{(i)};\mathbf{w}) \).
- Compute Pareto front by dominance filtering.
flowchart TD
A["Candidate concepts x(1)...x(N)"] --> B["Check constraints g_j(x)<=0"]
B -->|feasible| C["Compute objectives J_k(x)"]
B -->|infeasible| D["Discard concept"]
C --> E["Normalize metrics z_k(x)"]
E --> F["Compute utility U(x; w)"]
C --> G["Dominance check between concepts"]
G --> H["Identify Pareto set P"]
F --> I["Rank concepts by U"]
H --> J["Visualize trade-offs and choose finalists"]
7. Python Example — Scoring Robot Concepts
Below is a Python prototype that: (i) stores candidate robot concepts, (ii) checks feasibility, (iii) computes normalized metrics, and (iv) finds both the best concept for a given weight vector and the Pareto front (discrete dominance).
import numpy as np
# Each concept: cost [k€], mass [kg], energy [Wh per mission], tracking_error [deg rms]
concepts = [
{"name": "A_wheeled", "cost": 15.0, "mass": 40.0, "energy": 800.0, "tracking_error": 1.5},
{"name": "B_tracked", "cost": 18.0, "mass": 50.0, "energy": 700.0, "tracking_error": 1.2},
{"name": "C_legged", "cost": 25.0, "mass": 55.0, "energy": 950.0, "tracking_error": 0.8},
]
# Constraints
MAX_MASS = 55.0 # kg
MAX_ENERGY = 1000 # Wh
def is_feasible(c):
return (c["mass"] <= MAX_MASS) and (c["energy"] <= MAX_ENERGY)
feasible = [c for c in concepts if is_feasible(c)]
# Build arrays of objectives to minimize
costs = np.array([c["cost"] for c in feasible])
masses = np.array([c["mass"] for c in feasible])
energies = np.array([c["energy"] for c in feasible])
errors = np.array([c["tracking_error"] for c in feasible])
def normalize_min_to_max(arr):
# returns z where 1 is best (minimum) and 0 is worst (maximum)
amin, amax = arr.min(), arr.max()
if np.isclose(amax, amin):
return np.ones_like(arr)
return (amax - arr) / (amax - amin)
Z = np.vstack([
normalize_min_to_max(costs),
normalize_min_to_max(masses),
normalize_min_to_max(energies),
normalize_min_to_max(errors),
]).T # shape: (N_feasible, m)
names = [c["name"] for c in feasible]
# Choose weights (cost, mass, energy, tracking_error)
w = np.array([0.3, 0.2, 0.2, 0.3])
utilities = Z @ w
best_idx = int(np.argmax(utilities))
print("Utilities:")
for i, name in enumerate(names):
print(f"{name}: U = {utilities[i]:.3f}")
print("\nBest concept under current weights:", names[best_idx])
# Pareto front (discrete dominance for 4 objectives to minimize)
F = np.vstack([costs, masses, energies, errors]).T
def dominates(i, j):
"""Return True if concept i dominates concept j (for minimization)."""
return np.all(F[i] <= F[j]) and np.any(F[i] < F[j])
pareto_indices = []
for i in range(len(F)):
dominated = False
for j in range(len(F)):
if i != j and dominates(j, i):
dominated = True
break
if not dominated:
pareto_indices.append(i)
print("\nPareto-optimal concepts:")
for idx in pareto_indices:
print(names[idx], "with objectives", F[idx])
This simple discrete analysis is already sufficient for many early-stage robot trade-off studies, especially when concepts are qualitatively distinct (e.g., wheels vs. legs).
8. C++ Example — Utility-Based Ranking
In C++, we can implement the same weighted-sum scoring for concept ranking (omitting dominance filtering for brevity).
#include <iostream>
#include <vector>
#include <string>
#include <limits>
struct Concept {
std::string name;
double cost;
double mass;
double energy;
double tracking_error;
};
struct NormalizedConcept {
std::string name;
double z_cost;
double z_mass;
double z_energy;
double z_error;
};
int main() {
std::vector<Concept> concepts = {
{"A_wheeled", 15.0, 40.0, 800.0, 1.5},
{"B_tracked", 18.0, 50.0, 700.0, 1.2},
{"C_legged", 25.0, 55.0, 950.0, 0.8}
};
const double MAX_MASS = 55.0;
const double MAX_ENERGY = 1000.0;
std::vector<Concept> feasible;
for (auto &c : concepts) {
if (c.mass <= MAX_MASS && c.energy <= MAX_ENERGY) {
feasible.push_back(c);
}
}
// Find min and max for each metric
auto init_min = std::numeric_limits<double>::max();
auto init_max = std::numeric_limits<double>::lowest();
double cost_min = init_min, cost_max = init_max;
double mass_min = init_min, mass_max = init_max;
double energy_min = init_min, energy_max = init_max;
double error_min = init_min, error_max = init_max;
for (auto &c : feasible) {
cost_min = std::min(cost_min, c.cost);
cost_max = std::max(cost_max, c.cost);
mass_min = std::min(mass_min, c.mass);
mass_max = std::max(mass_max, c.mass);
energy_min = std::min(energy_min, c.energy);
energy_max = std::max(energy_max, c.energy);
error_min = std::min(error_min, c.tracking_error);
error_max = std::max(error_max, c.tracking_error);
}
auto norm = [](double x, double xmin, double xmax) {
if (std::abs(xmax - xmin) < 1e-9) return 1.0;
return (xmax - x) / (xmax - xmin);
};
std::vector<NormalizedConcept> Z;
for (auto &c : feasible) {
NormalizedConcept z{
c.name,
norm(c.cost, cost_min, cost_max),
norm(c.mass, mass_min, mass_max),
norm(c.energy, energy_min, energy_max),
norm(c.tracking_error, error_min, error_max)
};
Z.push_back(z);
}
// weights: cost, mass, energy, tracking_error
double w_cost = 0.3, w_mass = 0.2, w_energy = 0.2, w_error = 0.3;
double best_U = -1e9;
std::string best_name;
for (auto &z : Z) {
double U = w_cost * z.z_cost
+ w_mass * z.z_mass
+ w_energy * z.z_energy
+ w_error * z.z_error;
std::cout << z.name << " : U = " << U << std::endl;
if (U > best_U) {
best_U = U;
best_name = z.name;
}
}
std::cout << "Best concept: " << best_name
<< " with utility " << best_U << std::endl;
return 0;
}
This C++ code can be integrated into a larger design tool that iterates over many robot configurations produced by CAD or parametric models.
9. Java Example — Object-Oriented Concept Scoring
A Java implementation emphasizes encapsulation of concept data and scoring logic.
import java.util.ArrayList;
import java.util.List;
class RobotConcept {
String name;
double cost;
double mass;
double energy;
double trackingError;
RobotConcept(String name, double cost, double mass, double energy, double trackingError) {
this.name = name;
this.cost = cost;
this.mass = mass;
this.energy = energy;
this.trackingError = trackingError;
}
}
public class ConceptTradeoff {
private static double norm(double x, double xmin, double xmax) {
if (Math.abs(xmax - xmin) < 1e-9) return 1.0;
return (xmax - x) / (xmax - xmin);
}
public static void main(String[] args) {
List<RobotConcept> concepts = new ArrayList<>();
concepts.add(new RobotConcept("A_wheeled", 15.0, 40.0, 800.0, 1.5));
concepts.add(new RobotConcept("B_tracked", 18.0, 50.0, 700.0, 1.2));
concepts.add(new RobotConcept("C_legged", 25.0, 55.0, 950.0, 0.8));
final double MAX_MASS = 55.0;
final double MAX_ENERGY = 1000.0;
List<RobotConcept> feasible = new ArrayList<>();
for (RobotConcept c : concepts) {
if (c.mass <= MAX_MASS && c.energy <= MAX_ENERGY) {
feasible.add(c);
}
}
double costMin = Double.POSITIVE_INFINITY, costMax = Double.NEGATIVE_INFINITY;
double massMin = Double.POSITIVE_INFINITY, massMax = Double.NEGATIVE_INFINITY;
double energyMin = Double.POSITIVE_INFINITY, energyMax = Double.NEGATIVE_INFINITY;
double errorMin = Double.POSITIVE_INFINITY, errorMax = Double.NEGATIVE_INFINITY;
for (RobotConcept c : feasible) {
costMin = Math.min(costMin, c.cost);
costMax = Math.max(costMax, c.cost);
massMin = Math.min(massMin, c.mass);
massMax = Math.max(massMax, c.mass);
energyMin = Math.min(energyMin, c.energy);
energyMax = Math.max(energyMax, c.energy);
errorMin = Math.min(errorMin, c.trackingError);
errorMax = Math.max(errorMax, c.trackingError);
}
double wCost = 0.3, wMass = 0.2, wEnergy = 0.2, wError = 0.3;
double bestU = -1e9;
String bestName = "";
for (RobotConcept c : feasible) {
double zCost = norm(c.cost, costMin, costMax);
double zMass = norm(c.mass, massMin, massMax);
double zEnergy = norm(c.energy, energyMin, energyMax);
double zError = norm(c.trackingError, errorMin, errorMax);
double U = wCost * zCost + wMass * zMass + wEnergy * zEnergy + wError * zError;
System.out.printf("%s : U = %.3f%n", c.name, U);
if (U > bestU) {
bestU = U;
bestName = c.name;
}
}
System.out.println("Best concept: " + bestName + " with U = " + bestU);
}
}
Such a Java component can be embedded into larger enterprise tools used by design engineers and project managers.
10. MATLAB / Simulink Example — Matrix Formulation
In MATLAB, we can write the same computations in matrix form. Simulink can then realize the computation using Gain and Sum blocks to implement the weighted sum \( U = \mathbf{w}^\top \mathbf{z} \).
% Candidate concepts: rows = concepts, columns = [cost, mass, energy, tracking_error]
F = [ 15.0 40.0 800.0 1.5;
18.0 50.0 700.0 1.2;
25.0 55.0 950.0 0.8 ];
names = { 'A\_wheeled'; 'B\_tracked'; 'C\_legged' };
MAX_MASS = 55.0;
MAX_ENERGY = 1000.0;
% Feasibility mask
isFeasible = (F(:,2) <= MAX_MASS) & (F(:,3) <= MAX_ENERGY);
F = F(isFeasible, :);
names = names(isFeasible);
% Normalize each column for minimization (1 = best, 0 = worst)
Fmin = min(F, [], 1);
Fmax = max(F, [], 1);
Z = (Fmax - F) ./ (Fmax - Fmin); % implicit row-wise broadcast
% weights: cost, mass, energy, tracking_error
w = [0.3; 0.2; 0.2; 0.3];
U = Z * w; % utility values for each concept
[Ubest, idxBest] = max(U);
fprintf('Best concept: %s, U = %.3f\n', names{idxBest}, Ubest);
% --- Simulink mapping idea ---
% In Simulink:
% 1) Represent Z as a vector signal (e.g., from a Constant block).
% 2) Use a Gain block with parameter w' (1-by-4) to compute U = w' * Z.
% 3) Optionally sweep w in time to visualize sensitivity of concept ranking.
Because students already know linear control, the mapping \( U = \mathbf{w}^\top \mathbf{z} \) is analogous to a static linear output map \( y = Cx \) in state-space form, with \( \mathbf{z} \) as a pseudo-state capturing normalized performance.
11. Problems and Solutions
Problem 1 (Dominance and Pareto Set): Suppose we have three robot concepts with objective vectors (to minimize) \( J_1 = \) cost and \( J_2 = \) mass:
- \( A: (J_1,J_2) = (10, 8) \)
- \( B: (J_1,J_2) = (12, 7) \)
- \( C: (J_1,J_2) = (11, 11) \)
(a) Which concepts are Pareto optimal? (b) Which concept(s) are dominated?
Solution:
Concept \( C \) has \( J_1(C) = 11 \) and \( J_2(C) = 11 \). Concept \( A \) has \( J_1(A) = 10 < 11 \) and \( J_2(A) = 8 < 11 \), hence \( A \prec C \). So \( C \) is dominated and not Pareto optimal.
Comparing \( A \) and \( B \), we have \( J_1(A) = 10 < 12 = J_1(B) \) but \( J_2(A) = 8 > 7 = J_2(B) \). Neither dominates the other. Thus the Pareto set is \( \{A,B\} \), and \( C \) is dominated.
Problem 2 (Effect of Weight Changes): Consider two concepts with normalized scores \( \mathbf{z}(\mathbf{x}^{(1)}) = [0.9, 0.4]^\top \) and \( \mathbf{z}(\mathbf{x}^{(2)}) = [0.6, 0.8]^\top \) corresponding to objectives "cost" and "tracking accuracy". For a weight vector \( \mathbf{w} = [w_1, w_2]^\top \) with \( w_1 + w_2 = 1 \), find the range of \( w_1 \) for which concept 1 is preferred.
Solution:
We require \( U(\mathbf{x}^{(1)};\mathbf{w}) \ge U(\mathbf{x}^{(2)};\mathbf{w}) \), i.e.
\[ w_1 \cdot 0.9 + w_2 \cdot 0.4 \ge w_1 \cdot 0.6 + w_2 \cdot 0.8. \]
Using \( w_2 = 1 - w_1 \):
\[ 0.9 w_1 + 0.4(1 - w_1) \ge 0.6 w_1 + 0.8(1 - w_1). \]
Simplify both sides:
\[ 0.9 w_1 + 0.4 - 0.4 w_1 = 0.5 w_1 + 0.4, \]
\[ 0.6 w_1 + 0.8 - 0.8 w_1 = -0.2 w_1 + 0.8. \]
Inequality:
\[ 0.5 w_1 + 0.4 \ge -0.2 w_1 + 0.8 \iff 0.7 w_1 \ge 0.4 \iff w_1 \ge \frac{4}{7} \approx 0.571. \]
Thus concept 1 is preferred when \( w_1 \ge 4/7 \), i.e. when "cost" is given sufficiently high importance.
Problem 3 (Feasibility Region Visualization): A ground robot concept is characterized by mass \( m \) and peak power \( P \). The constraints are \( m \le 60 \) kg, \( P \le 1000 \) W, and \( m + 0.02 P \le 80 \) (a power–mass coupling due to battery size). (a) Sketch the feasible region in the \( (m,P) \)-plane. (b) Explain how concept generation should respect this region.
Solution sketch:
The constraints define three half-planes; the feasible region is the intersection of:
- \( m \le 60 \) (vertical line at \( m=60 \));
- \( P \le 1000 \) (horizontal line at \( P=1000 \));
- \( m + 0.02P \le 80 \) (line with intercepts at \( m=80 \) and \( P=4000 \)).
The feasible polygon can be visualized as in the following decision aid:
flowchart TD
S["Start with candidate (m, P)"] --> C1["Check m <= 60"]
C1 -->|no| R1["Reject concept"]
C1 -->|yes| C2["Check P <= 1000"]
C2 -->|no| R1
C2 -->|yes| C3["Check m + 0.02 P <= 80"]
C3 -->|no| R1
C3 -->|yes| A["Accept as feasible"]
In concept generation, designers should avoid spending effort on concepts that fall outside this polygon, since they cannot meet battery and mass-related constraints.
Problem 4 (Connection to Linear Control Cost Functions): In linear quadratic control, we often minimize a cost \( J = \int_0^T (x^\top Q x + u^\top R u)\,dt \). Explain how this is conceptually related to defining multi-criteria objectives \( J_1(\mathbf{x}), J_2(\mathbf{x}) \) for robot design.
Solution:
The LQR cost combines state deviation and control effort using weighting matrices \( Q \) and \( R \), which encode trade-offs between performance and energy. In concept generation, \( J_1(\mathbf{x}) \) might measure tracking error (akin to \( x^\top Q x \)), and \( J_2(\mathbf{x}) \) might measure energy or actuator effort (akin to \( u^\top R u \)). A scalarization \( U = w_1 z_1 + w_2 z_2 \) plays the same role as \( Q,R \) in defining how much we care about each term.
Problem 5 (Proving Dominance Implies Utility Superiority for Positive Weights): Let \( \mathbf{x},\mathbf{y} \) be two concepts with normalized vectors \( \mathbf{z}(\mathbf{x}), \mathbf{z}(\mathbf{y}) \). Suppose \( \mathbf{z}(\mathbf{x}) \ge \mathbf{z}(\mathbf{y}) \) (componentwise) and \( \mathbf{z}(\mathbf{x}) \ne \mathbf{z}(\mathbf{y}) \). Prove that for any weight vector \( \mathbf{w} \gt \mathbf{0} \) with \( \sum_k w_k = 1 \), we have \( U(\mathbf{x};\mathbf{w}) > U(\mathbf{y};\mathbf{w}) \).
Solution:
By assumption, \( z_k(\mathbf{x}) \ge z_k(\mathbf{y}) \) for all \( k \) and there exists some \( \ell \) such that \( z_\ell(\mathbf{x}) > z_\ell(\mathbf{y}) \). Then
\[ U(\mathbf{x};\mathbf{w}) - U(\mathbf{y};\mathbf{w}) = \sum_{k=1}^m w_k \big( z_k(\mathbf{x}) - z_k(\mathbf{y}) \big). \]
Each term satisfies \( z_k(\mathbf{x}) - z_k(\mathbf{y}) \ge 0 \), and for \( k = \ell \) the difference is strictly positive. With \( w_k \gt 0 \), every non-negative term is weighted by a strictly positive coefficient, so the sum is strictly positive: \( U(\mathbf{x};\mathbf{w}) - U(\mathbf{y};\mathbf{w}) > 0 \). Hence \( U(\mathbf{x};\mathbf{w}) > U(\mathbf{y};\mathbf{w}) \).
12. Summary
In this lesson we formalized concept generation and trade-off studies as a multi-criteria optimization problem over a finite set of candidate robot designs. We defined design variables, constraints, multi-objective cost functions, normalization procedures, and scalar utilities. Pareto optimality provides a principled way to identify non-dominated concepts, while weighted sums allow designers to encode preferences and rank concepts algorithmically. Practical implementations in Python, C++, Java, and MATLAB/Simulink demonstrate how these ideas integrate into engineering workflows. These tools will be used throughout later design stages, including co-design and prototyping cycles.
13. References
- Zadeh, L. A. (1963). Optimality and non-scalar-valued performance criteria. IEEE Transactions on Automatic Control, 8(1), 59–60.
- Haimes, Y. Y., Lasdon, L. S., & Wismer, D. A. (1971). On a bicriterion formulation of the problems of integrated system identification and system optimization. IEEE Transactions on Systems, Man, and Cybernetics, 1(3), 296–297.
- Steuer, R. E. (1977). Multiple criteria optimization: Theory, computation, and application. Naval Research Logistics Quarterly, 24(1), 1–22.
- Osyczka, A. (1985). Multicriteria optimization for engineering design. Design Optimization, 1(2), 193–227.
- Deb, K., Pratap, A., Agarwal, S., & Meyarivan, T. (2002). A fast and elitist multiobjective genetic algorithm: NSGA-II. IEEE Transactions on Evolutionary Computation, 6(2), 182–197.
- Papalambros, P. Y., & Wilde, D. J. (1988). A global criterion method for multiobjective optimization of engineering systems. Journal of Optimization Theory and Applications, 55(3), 479–499.
- Marler, R. T., & Arora, J. S. (2004). Survey of multi-objective optimization methods for engineering. Structural and Multidisciplinary Optimization, 26(6), 369–395.
- Janson, L., & Papalambros, P. Y. (2014). A scalable method for multiobjective optimization in engineering design. Journal of Mechanical Design, 136(8), 081401.