Các biến được khai báo trong một Model theo một loại nhất định như IntegerVariable, SetVariable, RealVariable. Khi đọc model, Solver lặp lại trên các biến model sau đó tạo ra các biến Solver tương ứng và các cấu trúc dữ liệu tên miền theo các loại trên.
27
Biến Model và biến Solver là các đối tượng riêng biệt. Các biến Model sử dụng Varible còn Solver dùng Var. Một biến model được xác định bằng một đại diện trừu tượng của miền ban đầu trong khi một biến Solver được tóm gọn là một đại diện rời rạc của tên miền và duy trì trạng thái hiện tại của nó trong tìm kiếm. Do đó, chúng ta không thể tiếp cận trực tiếp vào một giá trị biến từ một biến model nhưng chúng ta lại có thể tiếp cận trong trường hợp là biến Solver tương ứng. Các biến Solver là ẩn danh nhưng có thể tiếp cận được từ các biến model tương ứng bằng cách sử dụng getVar(Variable v) và getVar (Variable… v)
a. IntDomainVar
Đối với các biến số nguyên, solver Intdomain Var là đối ứng với model IntegerVariable. Phương pháp getVar (IntegerVariable var) và getVar (IntegerVariable… vars) của Solver trả về đối tượng IntDomainVar và IntDomainVar[] tương ứng với var và vars:
IntegerVariable x = Choco.makeEnumIntVar(“x”, 1, 100); // model variable IntDomainVar xOnSolver = solver.getVar(x); // solver variable
b. SetVar
Đối với các biến tập hợp, Solver SetVar là đối ứng với model SetVariable. Các phương pháp getVar (SetVariable var) và getVar (SetVariable… vars) của Solver trả về các đối tượng SetVar và SetVar[] tương ứng với var và vars:
SetVariable x = Choco.makeBoundSetVarv(“x”, 1, 40); //model variable SetVar xOnSolver = solver.getVar(x); // Solver Variable
c. RealVar;
Đối với các biến thực, Solver RealVar là đối ứng tới model RealVariable
RealVariable x = Choco.makeRealVar(“x”, 1.0, 3.0); // model variable RealVar xOnSolver = solver.getVar(x); // Solver variable
28