Tối ưu hóa

May 09 2022
Phạm vi vấn đề Bây giờ chúng ta hãy đi sâu vào tìm hiểu giải pháp tối ưu trong đó chúng tôi tối đa hóa doanh số bán sản phẩm bằng cách sản xuất các đơn vị sản phẩm thích hợp theo các điều kiện ngụ ý ở trên! Đầu tiên, nhập 'gekko'. Nếu bạn chưa cài đặt nó - -pip install gekko từ terminal như bên dưới: Tiếp theo, nhập gói vào sổ ghi chép của bạn và gọi phiên bản mô hình.

Phạm vi vấn đề

Bây giờ, chúng ta hãy đi sâu vào tìm hiểu giải pháp tối ưu mà chúng tôi tối đa hóa doanh số bán sản phẩm bằng cách sản xuất các đơn vị sản phẩm phù hợp với các điều kiện như ngụ ý ở trên!

Đầu tiên, nhập 'gekko'. Nếu bạn chưa cài đặt nó - -pip cài đặt gekko từ thiết bị đầu cuối như hình dưới đây:

Tiếp theo, nhập gói vào sổ ghi chép của bạn và gọi phiên bản mô hình.

from gekko import gekko
#Create model instance
m = gekko()

  • tablet_units: không. máy tính bảng được sản xuất
  • smartph_units: không. của điện thoại thông minh được sản xuất.
  • prod_constr: điều này chỉ định (# đơn vị * thời gian cần thiết để sản xuất chúng) cho mỗi sản phẩm
  • total_sales: số tiền bán hàng cuối cùng mà công ty sẽ nhận được dưới dạng số tiền tối đa

#Initiate variables
tablet_units = m.Var(value=1)
smartph_units = m.Var(value=1)
prod_constr = m.Var()
total_sales = m.Var()
#Production time to create each product type
tablet_time = 1.5
smartph_time = 2
#Sale price of each product stored as a constant value
tablet_price = 900
smartph_price = 1100

#Minimum units the stores need for each product
m.Equation(tablet_units>=500)
m.Equation(smartph_units>=200)
<gekko.gekko.EquationObj at 0x184f83a4220>

#Production constraint
m.Equation(prod_constr== (tablet_units*tablet_time)+(smartph_units*smartph_time))
m.Equation(prod_constr<=2999.5)
<gekko.gekko.EquationObj at 0x184f83a4730>

#Total sales 
m.Equation(total_sales==(tablet_units*tablet_price)+(smartph_units*smartph_price))
<gekko.gekko.EquationObj at 0x184f83a4e50>

#Setting the objective function
m.Obj(-total_sales)
m.options.SOLVER = 1

m.options.SOLVER: đặt bộ giải thành APOPT để nhận được một nghiệm nguyên vì chúng ta nên có đơn vị tích chỉ là số nguyên.

Tất cả chúng tôi đã sẵn sàng ngay bây giờ! Hãy gọi cho giải pháp!

m.solve()
apm 45.114.158.17_gk_model0 <br><pre> ----------------------------------------------------------------
 APMonitor, Version 1.0.1
 APMonitor Optimization Suite
 ----------------------------------------------------------------
 
 
 --------- APM Model Size ------------
 Each time step contains
   Objects      :            0
   Constants    :            0
   Variables    :            7
   Intermediates:            0
   Connections  :            0
   Equations    :            6
   Residuals    :            6
 
 Number of state variables:              7
 Number of total equations: -            5
 Number of slack variables: -            3
 ---------------------------------------
 Degrees of freedom       :             -1
 
 * Warning: DOF <= 0
 ----------------------------------------------
 Steady State Optimization with APOPT Solver
 ----------------------------------------------
 
 Iter    Objective  Convergence
    0 -6.70000E+05  2.99950E+03
    1 -1.72412E+06  0.00000E+00
    2 -1.77970E+06  2.22045E-16
    3 -1.77970E+06  2.22045E-16
    4 -1.77970E+06  2.22045E-16
 Successful solution
 
 ---------------------------------------------------
 Solver         :  APOPT (v1.0)
 Solution time  :   1.290000000153668E-002 sec
 Objective      :   -1779700.00000000     
 Successful solution
 ---------------------------------------------------

print('Total Tablet Units :' + str(tablet_units.value))
print('Total Smartphone Units:' +str(smartph_units.value))
print('Maximized total sales:' + str(total_sales.value))
Total Tablet Units :[1733.0]
Total Smartphone Units:[200.0]
Maximized total sales:[1779700.0]

© Copyright 2021 - 2022 | vngogo.com | All Rights Reserved