Tối ưu có ràng buộc biên

Nhập môn Tối ưu hóa với Python

Jasmin Ludolf

Content Developer

Tối ưu có ràng buộc biên

 

  • Bộ giải mặc định: Broyden-Fletcher-Goldfarb-Shanno (BFGS)
  • Ràng buộc là một khoảng
  • Sản xuất từ 50 đến 100 đơn vị mỗi ngày

 

from scipy.optimize import Bounds

bounds = Bounds(50, 100)
Nhập môn Tối ưu hóa với Python

L-BFGS-B

from scipy.optimize import minimize, Bounds

def objective_function(b):
  return (2*b[0] - 1.5*b[1])

bounds = Bounds([5, 10], [25, 30])
x0 = [10, 5] result = minimize(objective_function, x0, method='L-BFGS-B', bounds=bounds) print(result.x)
[ 5. 30.]
Nhập môn Tối ưu hóa với Python

Tối ưu có ràng buộc tuyến tính

Hàm mục tiêu HOẶC

  • Tuyến tính
  • $p = 2x + 1.5y$

Đồ thị tuyến tính của hàm mục tiêu

Ràng buộc

  • Tuyến tính
  • $3x + 2y <= 100$

Đồ thị tuyến tính của các ràng buộc

Nhập môn Tối ưu hóa với Python

Bất đẳng thức cứng

  • Một điều kiện
  • Hết bột là không làm thêm bánh quy!

Túi bột mì

Nhập môn Tối ưu hóa với Python

Giải bài toán có ràng buộc tuyến tính

from scipy.optimize import minimize


def objective_function(b): return (b[0]) ** 2 + (b[1]) ** 0.5
def constraint_function(x): return 2*x[0] + 3*x[1] - 6
constraint = {'type': 'ineq', 'fun': constraint_function}
x0 = [20, 20]
result = minimize(objective_function, x0, constraints=[constraint])
print(result)
     fun: 1.4000405652399073
     jac: array([0.24057153, 0.36086182])
 message: 'Optimization terminated successfully'
    nfev: 25
     nit: 8
    njev: 8
  status: 0
 success: True
       x: array([0.12028576, 1.9198095 ])
  • Các loại ràng buộc:
    • 'eq': đẳng thức
    • 'ineq': bất đẳng thức
Nhập môn Tối ưu hóa với Python

Ayo berlatih!

Nhập môn Tối ưu hóa với Python

Preparing Video For Download...