Discovering the Beauty of Convex Optimization: A Step-by-Step Journey

Discovering the Beauty of Convex Optimization: A Step-by-Step Journey

Univault Technologies Research
Back to Updates
convex optimizationmathematics educationundergraduatelesson planintuitive math

Introduction

Many students find advanced mathematics intimidating, especially when abstract notation appears suddenly. Today, we will embark on a step-by-step journey to understand convex optimization—an essential tool used in economics, engineering, and machine learning. Our goal is to reveal the beauty behind the math by building our understanding gradually through clear reasoning and relatable examples.


Part 1: The Everyday Concept of Optimization

What is Optimization?

  • Everyday Example:
    Imagine you are planning a road trip. You want the shortest route from your home to a new city. You explore different routes and choose the one with the least travel time. This process of finding the best solution is called optimization.

  • Key Idea:
    Optimization is about finding the best solution among many possibilities.


Part 2: Visualizing the Problem

Imagine a Landscape

  • Picture a Valley:
    Think of a smooth valley in the countryside. The lowest point in this valley is the global minimum—the best (or "optimal") location.

  • Multiple Valleys vs. One Smooth Valley:

    • In a rugged landscape with many hills and valleys, you might get stuck in a small valley that isn’t the deepest.
    • In a smooth, bowl-shaped valley, any downhill path leads you to the same lowest point.

Connecting to Optimization

  • Simple Analogy:
    In a convex optimization problem, our “landscape” is like a smooth bowl. No matter where you start, you always end up at the same best solution.

  • Why It Matters:
    This property makes convex problems easy and reliable to solve—any local minimum is also the global minimum.


Part 3: Understanding Convexity

What Does "Convex" Mean?

  • Geometric Intuition:
    A shape is convex if, for any two points inside the shape, the straight line connecting them lies entirely within the shape. For example, a circle or a bowl is convex.

  • Real-World Example:
    Think of mixing two colors. The result (a blend) is always between the two original colors, with no “surprises” outside that range. This is similar to how convex combinations work in math.

Convex Functions

  • Bowl-Shaped Curves:
    A convex function looks like a bowl. For any two points on the curve, the line segment between them lies above the curve.

  • Key Benefit:
    With convex functions, you know that if you find a point where the function is as low as possible in a small area, it’s the lowest point overall.


Part 4: Building the Mathematical Model

From Intuition to Notation

Now that we understand the idea of a smooth, single-valley landscape, we can start building a mathematical model.

Step 1: Define a Decision Variable

Let

[object Object]
represent the decision you need to make. For instance,
[object Object]
might represent the proportion of exclusivity you give in a licensing agreement (where
[object Object]
).

Step 2: Model Revenue and Cost

  • Revenue Function:
    We might assume that the revenue from granting an exclusive license increases as we give more exclusivity, but with diminishing returns. One way to express this is:

    [object Object]
    where
    [object Object]
    represents the market potential.

  • Cost Function:
    There is also a cost or risk associated with giving exclusivity, which might be modeled linearly:

    [object Object]
    where
    [object Object]
    is the cost factor.

Step 3: Define the Objective

Our goal is to maximize the net value (profit) from the decision:

[object Object]

Step 4: Add Constraints

For a real-world problem, you might have multiple fields (or markets) with their own decision variables

[object Object]
. If there is a total cap on exclusivity, say
[object Object]
, you can write:
[object Object]
and
[object Object]
for each
[object Object]
.

Why is This Problem Convex?

  • The function
    [object Object]
    is concave, and since we are subtracting a linear function
    [object Object]
    , the overall function
    [object Object]
    is concave.
  • Maximizing a concave function (or equivalently, minimizing its negative) over a convex set (defined by the linear constraints) is a convex optimization problem.
  • Key Takeaway: In convex optimization, the landscape is a smooth bowl—any local optimum is the global optimum, making the problem easier to solve and more robust in practice.

Part 5: A Practical Example – Sensor Innovation Licensing

Imagine we have a groundbreaking wearable sensor used in healthcare:

  • Field of Use 1 (Healthcare):

    • Revenue potential: a_1 = \200 $ million per year.
    • Risk factor: b_1 = \30 $ million per year.
    • Decision variable:
      [object Object]
      (degree of exclusivity).
  • Field of Use 2 (Agriculture):

    • Revenue potential: a_2 = \50 $ million per year.
    • Risk factor: b_2 = \10 $ million per year.
    • Decision variable:
      [object Object]
      .
  • Total exclusivity cap:

    [object Object]
    .

The objective function for the overall system is:

[object Object]
subject to:
[object Object]

This model allows us to quantitatively balance revenue and risk to determine the best allocation of licensing exclusivity.


Part 6: Practical Implementation in JavaScript

Below is a sample JavaScript code snippet that demonstrates a basic gradient descent algorithm to optimize the above model.

JavaScript Code Example

javascript
1// ip_licensing_model.js
2
3// Define parameters for 2 Fields of Use (FOUs)
4const a = [200, 50];  // Revenue potentials in millions
5const b = [30, 10];   // Risk factors in millions
6const X_max = 1.5;    // Total exclusivity cap
7const n = a.length;
8
9// Initialize decision variables for each FOU (start with 0 exclusivity)
10let x = [0.0, 0.0];
11
12// Define learning parameters
13const learningRate = 0.01;
14const iterations = 1000;
15
16// Objective function: f(x) = sum_i [a_i * ln(1 + x_i) - b_i * x_i]
17function objective(x) {
18  let sum = 0;
19  for (let i = 0; i < n; i++) {
20    sum += a[i] * Math.log(1 + x[i]) - b[i] * x[i];
21  }
22  return sum;
23}
24
25// Gradient of the objective function for each x_i
26function grad(i, x_i) {
27  return (a[i] / (1 + x_i)) - b[i];
28}
29
30// Gradient descent loop with projection to maintain constraint sum(x) <= X_max
31for (let iter = 0; iter < iterations; iter++) {
32  // Update each variable
33  for (let i = 0; i < n; i++) {
34    x[i] += learningRate * grad(i, x[i]);
35    // Ensure each x_i stays within [0, 1]
36    if (x[i] < 0) x[i] = 0;
37    if (x[i] > 1) x[i] = 1;
38  }
39  
40  // Enforce total exclusivity constraint: if sum(x) > X_max, scale them down proportionally
41  const total = x.reduce((acc, val) => acc + val, 0);
42  if (total > X_max) {
43    x = x.map(val => (val / total) * X_max);
44  }
45  
46  if (iter % 100 === 0) {
47    console.log(`Iteration ${iter}: x = [${x.map(v => v.toFixed(4)).join(", ")}], Objective = ${objective(x).toFixed(4)}`);
48  }
49}
50
51console.log(`Final solution: x = [${x.map(v => v.toFixed(4)).join(", ")}]`);
52console.log(`Final objective value: ${objective(x).toFixed(4)}`);
53