5

Tôi đang giải quyết các vấn đề tối ưu hóa lớn với API Java CPLEX. Hiện tại tôi chỉ cầnSử dụng tối ưu CPLEX Java cho thông lượng cao

IloCplex cplex = new IloCplex(); 
... add lots of variables and constraints ... 
cplex.solve(); 
cplex.end(); 

Điều này thật tuyệt vời, nhưng tôi lặp lại quá trình này thường xuyên khi tôi chỉ thay đổi hệ số. Mỗi lần tôi lặp lại, tôi tạo đối tượng cplex mới và tạo lại tất cả các biến.

Có cách nào hiệu quả hơn để thực hiện việc này không? Tài liệu của IBM có ngôn ngữ như 'thêm mô hình vào ví dụ của mô hình', điều này nghe có vẻ kì lạ, nhưng tôi nghĩ nó gợi ý rằng có thể tái sử dụng mọi thứ.

Mọi đề xuất từ ​​những người dùng có kinh nghiệm hơn sẽ thật tuyệt vời. Cảm ơn.

+2

Bạn có thể nhận được phản hồi tốt hơn từ các diễn đàn thảo luận của IBM hoặc từ OR-Exchange, một trang web chị em đến Stack Overflow. –

Trả lời

6

Nếu bạn chỉ muốn thay đổi hệ số của các ràng buộc (hoặc các hàm của hàm mục tiêu), bạn có thể sửa đổi các hệ số trên đối tượng IloCplex hiện có. Bạn không nên tạo mô hình từ đầu.

retval = cplex.solve(); 
// verify that the solve was successful 

// change coeficients on constraints (or in the objective) 
cplex.setLinearCoef(constraint, newCoef, variable); 
cplex.setLinearCoef(objective, newObjCoef, variable); 

// change right bounds on constraints 
constraint.setBounds(newLB, newUB); 

// change variable bounds 
var.setBounds(newLB, newUB); 

retval = cplex.solve(); 
// verify the solve 
+0

Cảm ơn. Điều này làm sáng tỏ sự nhầm lẫn của tôi về API. –

Các vấn đề liên quan