\[\begin{align} \text{minimize} \qquad & f(x) \\ \text{subject to} \qquad & g(x) \leq 0 \\ & h(x) = 0 \end{align}\]

This course will be an intensive study of nonlinear optimization and Game Theory. The first part will focus on theory and algorithms of nonlinear optimization. Topics include convex analysis, optimality conditions, Lagrangian duality, and numerical methods for unconstrained and constrained optimization problems.

\[[F(x^*)]^\top (x-x^*) \geq 0 \qquad \forall x\in X\]

The second part will apply theory and algorithms of nonlinear optimization to equilibrium problems that arise in management science, transportation science, regional science, and economics. Theory and algorithms of variational inequalities and complementarity problems are used to analyze and compute equilibria in connection with nonlinear optimization. Topics include Nash equilibrium and leader-follower games.

Syllabus (Spring 2016)


  • Basic Concepts and Modeling
  • Convex Sets
  • Convex Functions and Generalizations
  • Karush-Kuhn-Tucker Conditions
  • Lagrangian Duality
  • Unconstrained Optimization
  • Penalty and Barrier Functions
  • Methods of Feasible Directions
  • Basics of Mathematical Games
  • Nash Equilibrium
  • Variational Inequalities
  • Complementarity Problems
  • Leader-Follower Games
  • Computational Methods for Equilibrium Problems


This course involves homework assignments that require computer programming to implement basic optimization algorithms. While any programming language such as C/C++, Java, Python, and Matlab can be used, students are encouraged to use and learn how to use The Julia Language with the Gurobi Optimizer , the JuMP package, and many other optimization related packages available at JuliaOpt.

Students are encouraged to install Julia and Gurobi on their own computer. Students need to access the following web document, for installation help and example codes: http://stom.chkwon.net/julia/

Students basically needs to go through the following steps:

  1. Install Gurobi (optional in this course)
  2. Install Julia
  3. Install JuMP (optional in this course)
  4. Start using it.