Tối ưu hóa (toán học)

Trong toán học, thuật ngữ **tối ưu hóa** chỉ tới việc nghiên cứu các bài toán có dạng
:*Cho trước:* một hàm *f*: *A* \to **R** từ tập hợp *A* tới tập số thực
:*Tìm:* một phần tử *x*0 thuộc *A* sao cho *f*(*x*0) ≤ *f*(*x*) với mọi *x* thuộc *A* ("cực tiểu hóa") hoặc sao cho *f*(*x*0) ≥ *f*(*x*) với mọi *x* thuộc *A* ("cực đại hóa").

Một phát biểu bài toán như vậy đôi khi được gọi là một **quy hoạch toán học** (*mathematical program*). Nhiều bài toán thực tế và lý thuyết có thể được mô hình theo cách tổng quát trên.

Miền xác định *A* của hàm *f* được gọi là **không gian tìm kiếm**.
Thông thường, *A* là một tập con của không gian Euclid **R***n*, thường được xác định bởi một tập các *[[ràng buộc]]*, các đẳng thức hay bất đẳng thức mà các thành viên của *A* phải thỏa mãn. Các phần tử của *A* được gọi là các *lời giải khả thi*. Hàm *f* được gọi là **hàm mục tiêu**, hoặc **hàm chi phí**. Lời giải khả thi nào cực tiểu hóa (hoặc cực đại hóa, nếu đó là mục đích) hàm mục tiêu được gọi là *lời giải tối ưu*.

Thông thường, sẽ có một vài cực tiểu địa phương và cực đại địa phương, trong đó một *cực tiểu địa phương* x* được định nghĩa là một điểm thỏa mãn điều kiện:

với giá trị δ &gt; 0 nào đó và với mọi giá trị x sao cho

:\|\mathbf{x}-\mathbf{x}^*\|\leq\delta;

công thức sau luôn đúng

:f(\mathbf{x}^*)\leq f(\mathbf{x})

Nghĩa là, tại vùng xung quanh x*, mọi giá trị của hàm đều lớn hơn hoặc bằng giá trị tại điểm đó. 
Cực đại địa phương được định nghĩa tương tự. Thông thường, việc tìm cực tiểu địa phương là dễ dàng – cần thêm các thông tin về bài toán (chẳng hạn, hàm mục tiêu là hàm lồi) để đảm bảo rằng lời giải tìm được là cực tiểu toàn cục.

## Ký hiệu

Các bài toán tối ưu hóa thường được biểu diễn bằng các ký hiệu đặc biệt. Dưới đây là một vài ví dụ:

### Giá trị lớn nhất và giá trị nhỏ nhất của hàm số
Xét ký hiệu sau đây:

\min_{x\in\mathbb R}\; x^2 + 1

Đây là ký hiệu cho giá trị nhỏ nhất của hàm mục tiêu x^2+1, với x nằm trong tập số thực \mathbb {R}. Giá trị nhỏ nhất trong trường hợp này là 1, xảy ra tại x=0.

Tương tự thì ký hiệu

\max_{x\in\mathbb R}\; 2x

chỉ ra giá trị lớn nhất cho hàm mục tiêu 2x, với xlà một số thực. Trong trường hợp này, không có giá trị đó do biểu thức không bị chặn trên, vậy kết quả là "giá trị vô cùng" hoặc "không xác định".

### Đối số tối ưu
Xét ký hiệu sau đây:

\underset{x\in(-\infty,-1]}{\operatorname{arg\,min}} \; x^2 + 1,

hay tương đương là

\underset{x}{\operatorname{arg\,min}} \; x^2 + 1, \; \text{subject to:} \; x\in(-\infty,-1].

Ký hiệu này biểu diễn một hoặc nhiều giá trị của đối số xtrong đoạn (-\infty,-1]sao cho hàm mục tiêu x^2 + 1đạt giá trị nhỏ nhất (chứ không yêu cầu tìm giá trị nhỏ nhất đó). Kết quả là x=-1, do không như ví dụ đầu tiên, x=0không nằm trong tập khả thi.

Tương tự,

\underset{x\in[-5,5], \; y\in\mathbb R}{\operatorname{arg\,max}} \; x\cos(y),

hay ký hiệu tương đương

\underset{x, \; y}{\operatorname{arg\,max}} \; x\cos(y), \; \text{subject to:} \; x\in[-5,5], \; y\in\mathbb R,

Biểu diễn một hay nhiều cặp (x,y)làm cho hàm mục tiêu x \cos (y) đạt giá trị lớn nhất, với ràng buộc là *x* nằm trong đoạn [-5,5]. (Một lần nữa, giá trị tối ưu của hàm mục tiêu không quan trọng, hàm \arg \maxchỉ cho ra cặp (x,y)thỏa mãn yêu cầu trên.) Trong trường hợp này, kết quả là các cặp số có dạng (5,\,2k\pi)và (-5,\,(2k+1)\pi), với k là số nguyên tùy ý.

## Các lĩnh vực con chính

* Quy hoạch lồi (*Convex programming*) nghiên cứu trường hợp khi hàm mục tiêu là hàm lồi (cực đại hóa) hoặc hàm lõm (cực tiểu hóa) và tập khả thi là lồi. Đây có thể xem như trường hợp đặc biệt của quy hoạch phi tuyến hoặc trường hợp tổng quát của quy hoạch tuyến tính và quy hoạch lồi bậc hai.
** Quy hoạch tuyến tính (*Linear programming*) nghiên cứu các trường hợp khi hàm mục tiêu *f*  là hàm tuyến tính và các ràng buộc có dạng các đẳng thức và bất đẳng thức tuyến tính (Tập ràng buộc như vậy gọi là một polytope).
** *Second-order cone programming* (SOCP) bao gồm một số dạng nhất định trong quy hoạch bậc hai.
** *Semidefinite programming* (SDP) là lĩnh vực con của tối ưu lồi tương tự như quy hoạch tuyến tính, nhưng thay thế cho các ràng buộc với đối số thực là các ràng buộc với đối số là ma trận bán xác định.
** *Conic programming* là dạng tổng quát của quy hoạch lồi. Quy hoạch tuyến tính, SOCP và SDP đều có thể xem là conic programming với loại nón (cone) xác định.
** *Geometric programming* là bài toán tối ưu có hàm mục tiêu và hàm điều kiện ràng buộc viết được dưới dạng các đa thức đa biến và chuyển đổi về được quy hoạch lồi.
*Quy hoạch số nguyên (*Integer programming*) nghiên cứu các quy hoạch tuyến tính trong đó một số hoặc tất cả các biến có giới hạn là các số nguyên.
* Quy hoạch bậc hai (hay quy hoạch toàn phương) (*Quadratic programming*) cho phép hàm mục tiêu có các toán hạng bậc hai, trong khi tập *A* phải mô tả được bằng các đẳng thức và bất đẳng thức tuyến tính (A được gọi là một khúc lồi).
*Quy hoạch phi tuyến (*Nonlinear programming*) nghiên cứu trường hợp tổng quát khi hàm mục tiêu hay các ràng buộc hoặc cả hai chứa các thành phần không tuyến tính.
*Quy hoạch ngẫu nhiên (*Stochastic programming*) nghiên cứu các trường hợp khi một số ràng buộc phụ thuộc vào các biến ngẫu nhiên.
*Quy hoạch động (*Dynamic programming*) nghiên cứu các trường hợp khi chiến lược tối ưu hóa dựa trên việc chia bài toán thành các bài toán con nhỏ hơn (nguyên lý quy hoạch động).
*Tối ưu hóa tổ hợp (*Combinatorial optimization*) quan tâm đến các bài toán trong đó tập các lời giải khả thi là rời rạc hoặc có thể được rút gọn về một tập rời rạc.
*Infinite-dimensional optimization nghiên cứu trường hợp khi tập các lời giải khả thi là một tập con của một không gian vô số chiều, chẳng hạn không gian các hàm số (ví dụ bài toán điều khiển tối ưu).
*Constraint satisfaction nghiên cứu trường hợp khi hàm mục tiêu *f* là hằng số – đây là vấn đề quan trọng của ngành Trí tuệ nhân tạo, đặc biệt là lĩnh vực Suy luận tự động (*Automated reasoning*).

## Các kỹ thuật

Đối với các hàm khả vi hai lần (*twice-differentiable*), có thể giải các bài toán không ràng buộc bằng cách tìm các điểm mà tại đó đạo hàm của hàm mục tiêu bằng 0 (điểm dừng) và sử dụng ma trận Hesse để xác định xem đó là cực tiểu, cực đại, hay điểm yên ngựa.

Ta có thể tìm các điểm dừng bằng cách bắt đầu từ một điểm dự đoán là điểm dừng rồi tiến về điểm dừng bằng cách lặp đi lặp lại các phương pháp như
* Phương pháp Gradient (*gradient descent*)
* phương pháp Newton
* phương pháp Gradient liên hợp (*conjugate gradient*)
* line search

Nếu hàm mục tiêu là hàm lồi trong vùng quan tâm thì cực tiểu địa phương sẽ là cực tiểu toàn cục. Có các phương pháp số nhanh chóng và hiệu quả cho việc tối ưu hóa các hàm lồi khả vi hai lần.

Các bài toán ràng buộc thường có thể được biến đổi thành một bài toán không có ràng buộc bằng phương pháp nhân tử Lagrange (*Lagrange multiplier*).

Dưới đây là một số phương pháp thông dụng:
* random-restart hill climbing (*leo đồi lặp ngẫu nhiên*)
* phương pháp luyện thép (*simulated annealing*)
* stochastic tunneling (dò tìm ngẫu nhiên)
* giải thuật di truyền
* chiến lược tiến hóa
* differential evolution
* particle swarm optimization (tối ưu bầy đàn)

## Ứng dụng

Các bài toán trong động lực học vật rắn (cụ thể là động lực học vật rắn chính xác) thường đòi hỏi các kỹ thuật quy hoạch toán học, do ta có thể coi động lực học vật rắn như là việc giải các phương trình vi phân thường (*ordinary differential equation*) trên một đa tạp ràng buộc (*constraint manifold*); các ràng buộc là các ràng buộc hình học không tuyến tính đa dạng, chẳng hạn "hai điểm này phải luôn trùng nhau", "bề mặt này không được xuyên qua các bề mặt khác", hoặc "điểm này phải nằm đâu đó trên đường cong này". Ngoài ra, vấn đề tính toán các lực tiếp xúc có thể được thực hiện bằng cách giải một bài toán bù tuyến tính (linear complementarity problem). Dạng bài nài cũng có thể được coi là bài toán quy hoạch bậc hai.

Nhiều bài toán thiết kế cũng có thể được biểu diễn dưới dạng các chương trình tối ưu hóa. Áp dụng này được gọi là tối ưu hóa thiết kế. Một lĩnh vực con mới phát triển trong thời gian gần đây là multidisciplinary design optimization. Nó hữu ích cho nhiều bài toán và đã được áp dụng cho các bài toán kỹ nghệ hàng không (*aerospace engineering*).

Vận trù học (operations research) là lĩnh vực sử dụng rất nhiều đến các kỹ thuật tối ưu hóa.

## Xem thêm

* arg max
* lý thuyết trò chơi
* vận trù học
* logic mờ
* tối ưu hóa ngẫu nhiên (*random optimization*)
* variational inequality ("Bất đẳng thức biến phân")
* thuật toán đơn hình (*simplex algorithm*)
* interior point methods ("Các phương pháp điểm trong")
* Bài toán cân bằng ("Equilbrium problems")
* Các ấn bản quan trọng về ngành tối ưu hóa

## Tham khảo

* Stephen Boyd and Lieven Vandenberghe (2004). Convex Optimization , Cambridge University Press. ISBN 0-521-83378-7.
* Doãn Tam Hòe, *Lý thuyết tối ưu và đồ thị*, Nhà xuất bản Giáo dục 2005.

## Liên kết ngoài
* NEOS Guide 

**Phần mềm:**
* AIMMS Optimization Modeling  — include optimization in industry solutions (free trial license available);
* Xpress-MP – Optimization software free to students