Tính toán Khoảng cách tối ưu tương đối trong GAMS Vấn đề MIP
Tôi muốn tính toán khoảng cách tối ưu tương đối của một vấn đề MIP cũng như tôi muốn hủy bỏ các lần chạy tại một thời điểm chạy nhất định. phương pháp này:
F(1)
abs(mymodel.objest - mymodel.objval)/max(abs(mymodel.objest),abs(mymodel.objval))
không phù hợp với khoảng cách mà GAMS tính toán trong nhật ký. GAMS sử dụng "Số nguyên tốt nhất" để tìm khoảng trống không phải giá trị mục tiêu hiện tại. Cái nào đúng? và Làm cách nào để lưu "Số nguyên tốt nhất" hiện tại vào một tham số (như .objval).
và cuối cùng tính toán Gap tối ưu tương đối trong một thuật toán uốn có đúng theo cách này không?
rgap = (upperBound - lowerBound)/(1 + abs(upperBound));
Tính toán GAMS gì bằng "Giải pháp MIP"
MIP Solution: 3334501534.000555 (1625 iterations, 0 nodes)
Final Solve: 56330158.829040 (2561 iterations)
Best possible: 48915652.476336
Absolute gap: 3285585881.524219
Relative gap: 0.985330
F (1) khoảng cách được tính toán bằng cách sử dụng mymodel.objval (mymodel.objval trả về "Giải quyết cuối cùng") nên khoảng cách được tính toán là% 13 và giá trị mymodel.objval là 5,633016E + 7 (khoảng cách được tính toán theo GAMS là% 98). vì vậy tôi cần lưu "Giải pháp MIP" vào một tham số để xuất nó sang tệp excel.
Trả lời
Có nhiều công thức khác nhau để tính toán khoảng cách tối ưu tương đối. Nó phụ thuộc vào bộ giải bạn sử dụng, cái nào được áp dụng. Một số thông tin về điều này có thể được tìm thấy trong mô tả của tùy chọn GAMS optCR . Hướng dẫn sử dụng bộ giải của bộ giải mà bạn sử dụng có thể có thêm chi tiết về công thức thực sự được áp dụng.
CHỈNH SỬA sau khi câu hỏi được cập nhật:
Như bạn đã viết mymodel.objval
trả về Final Solve
giá trị. Nếu bạn muốn xem MIP Solution
giá trị thay thế (vì liên kết Cplex thực hiện nó trong nội bộ), bạn có thể hủy kích hoạt giải pháp cuối cùng. Tuy nhiên, nếu Final Solve
và MIP Solution
quá khác nhau như trong ví dụ của bạn thì đây thường là một dấu hiệu cho một số vấn đề (thông thường, chúng (gần như) giống hệt nhau). Thông thường, điều này cho thấy một mô hình được chia tỷ lệ kém. Có lẽ bạn có thể cải thiện tình hình bằng cách thắt chặt các dung sai Cplex (xem các tùy chọn Cplex epopt
, eprhs
, epint
) và kích hoạt rộng hung hăng (Cplex tùy chọn scaind 2
). Đang kích hoạt mipkappastats
(https://www.gams.com/latest/docs/S_CPLEX.html#CPLEXmipkappastats) và quality
(https://www.gams.com/latest/docs/S_CPLEX.html#CPLEXquality) có thể cung cấp cho bạn thêm thông tin. DataCheck=2
(https://www.gams.com/latest/docs/S_CPLEX.html#CPLEXdatacheck) có thể cho thấy một số vấn đề.