Research Article

A Hybrid Programming Framework for Modeling and Solving Constraint Satisfaction and Optimization Problems

Algorithm 2

Instances of facts for illustrative example.
%F_machine(#M).
F_machine (M1).    F_machine(M2).F_machine(M3).F_machine(M4).F_machine(M5).
F_machine(M6).      F_machine(M7).F_machine(M8).F_machine(M9).F_machine(M10).
F_machine(M11).    F_machine(M12).
%F_product(#I).
F_product(A). F_product(B). F_product(C). F_product(D). F_product(E).
F_product(F). F_product(G). F_product(H). F_product(I). F_product(J).
F_product(K). F_product(L). F_product(M). F_product(N). F_product(O).
%technology(#I,#M,tr).
F_technology(A,M1,1).      F_technology(A,M2,2).     F_technology(A,M3,2).
F_technology(A,M10,1).  F_technology(B,M1,1).    F_technology(B,M5,2).
F_technology(B,M8,1).    F_technology(C,M4,2).    F_technology(C,M9,4).
F_technology(D,M5,2).    F_technology(D,M6,2).    F_technology(D,M7,5).
F_technology(D,M8,2).      F_technology(E,M1,2).    F_technology(E,M2,1).
F_technology(E,M3,2).      F_technology(E,M4,2).    F_technology(F,M5,2).
F_technology(F,M6,2).      F_technology(G,M3,1).    F_technology(G,M5,2).
F_technology(G,M8,2).    F_technology(H,M8,1).    F_technology(H,M9,1).
F_technology(H,M10,1).  F_technology(I,M6,1).    F_technology(I,M7,1).
F_technology(I,M8,1).      F_technology(J,M4,1).    F_technology(J,M5,1).
F_technology(J,M6,1).      F_technology(K,M10,1).  F_technology(K,M11,1).
F_technology(K,M12,1).  F_technology(L,M1,2).    F_technology(L,M11,2).
F_technology(L,M12,2).  F_technology(M,M9,1).    F_technology(M,M10,1).
F_technology(M,M11,2).  F_technology(N,M1,2).    F_technology(N,M12,2).
F_technology(O,M2,2).      F_technology(O,M11,2).
%resources (#R,ko).
F_resources(R1,8). F_resources(R2,8).
F_resources(R3,8).F_resources (R4,8).
%allocation(#R,#M,#I,d)
F_allocation(R1,A,M1,1).    F_allocation(R2,A,M2,1).      F_allocation(R2,A,M3,2).
F_allocation(R3,A,M10,1).  F_allocation(R1,B,M1,2).      F_allocation(R3,B,M5,2).
F_allocation(R1,B,M8,1).    F_allocation(R2,C,M4,2).      F_allocation(R2,C,M9,2).
F_allocation(R3,D,M5,2).    F_allocation(R1,D,M6,1).      F_allocation(R3,D,M7,1).
F_allocation(R4,D,M8,2).    F_allocation(R1,E,M1,1).      F_allocation(R1,E,M2,1).
F_allocation(R3,E,M3,2).    F_allocation(R3,E,M3,1).      F_allocation(R3,F,M5,1).
F_allocation(R1,F,M6,2).    F_allocation(R4,G,M3,1).      F_allocation(R3,G,M5,2).
F_allocation(R1,G,M8,2).    F_allocation(R2,H,M8,1).      F_allocation(R1,H,M9,2).
F_allocation(R3,H,M10,2).  F_allocation(R3,I,M6,1).      F_allocation(R1,I,M7,1).
F_allocation(R2,I,M8,1).    F_allocation(R4,J,M4,1).      F_allocation(R3,J,M5,1).
F_allocation(R3,J,M6,1).    F_allocation(R4,K,M10,1).  F_allocation(R3,K,M11,1).
F_allocation(R1,K,M12,2).  F_allocation(R2,L,M1,1).      F_allocation(R1,L,M11,2).
F_allocation(R3,L,M12,2).  F_allocation(R1,M,M9,1).      F_allocation(R1,M,M10,1).
F_allocation(R2,M,M11,2).  F_allocation(R3,N,M1,1).      F_allocation(R2,N,M12,2).
F_allocation(R3,O,M2,2).    F_allocation(R3,O,M11,2).
%precedence(#I,#M,#M).
F_precedence(A,M1,M2).  F_precedence(A,M2,M3). F_precedence(A,M3,M10).
F_precedence(B,M1,M5).  F_precedence(B,M5,M8). F_precedence(C,M4,M9).
F_precedence(D,M5,M6).  F_precedence(D,M6,M7). F_precedence(D,M7,M8).
F_precedence(E,M1,M2).  F_precedence(E,M2,M3). F_precedence(E,M3,M4).
F_precedence(F,M5,M6).  F_precedence(G,M3,M5). F_precedence(G,M5,M8).
F_precedence(H,M8,M9).  F_precedence(H,M9,M10).F_precedence(I,M6,M7).
F_precedence(I,M7,M8).  F_precedence(J,M4,M5).  F_precedence(J,M5,M6).
F_precedence(K,M10,M11). F_precedence(K,M11,M12). F_precedence(L,M1,M11).
F_precedence(L,M11,M12). F_precedence(M,M9,M10).F_precedence(m,M10,M11).
F_precedence(N,M1,M12).    F_precedence(O,M2,M11).
orders(#I,or).
F_order(A,1). F_order(B,1). F_order(C,2). F_order(D,2). F_order(E,2).
F_order(F,1). F_order(G,1). F_order(F,1). F_order(G,1). F_order(F,1).