support search options, added 'restart'
This commit is contained in:
@@ -344,13 +344,38 @@ maximize(Space,IVar1,IVar2) :-
|
||||
assert_is_IntVar(IVar2,IVar2_),
|
||||
gecode_space_maximize_ratio(Space_,IVar1_,IVar2_).
|
||||
|
||||
gecode_search_options_init(search_options(0)).
|
||||
|
||||
gecode_search_options_offset(restart,0).
|
||||
|
||||
gecode_search_options_from_alist(L,O) :-
|
||||
gecode_search_options_init(O),
|
||||
gecode_search_options_process_alist(L,O).
|
||||
|
||||
gecode_search_options_process_alist([],O).
|
||||
gecode_search_options_process_alist([F=V|L],O) :- !,
|
||||
gecode_search_options_set(F,V,O),
|
||||
gecode_search_options_process_alist(L,O).
|
||||
gecode_search_options_process_alist([F|L],O) :- !,
|
||||
gecode_search_options_set(F,1,O),
|
||||
gecode_search_options_process_alist(L,O).
|
||||
|
||||
gecode_search_options_set(F,V,O) :-
|
||||
gecode_search_options_offset(F,I),
|
||||
setarg(I,O,V).
|
||||
|
||||
search(Space, Solution) :-
|
||||
search(Space, Solution, []).
|
||||
|
||||
search(Space, Solution, Alist) :-
|
||||
assert_is_Space(Space,Space_),
|
||||
assert_var(Solution),
|
||||
gecode_new_engine(Space_,Engine_),
|
||||
gecode_search_options_from_alist(Alist,O),
|
||||
gecode_new_engine(Space_,Engine_,O),
|
||||
gecode_engine_search(Engine_,Solution_),
|
||||
Solution='Space'(Solution_).
|
||||
|
||||
|
||||
%% INSPECTING VARIABLES
|
||||
|
||||
get_for_vars([],Space,[],F).
|
||||
@@ -647,6 +672,7 @@ new_setvars_(L,Space,N,X1,X2) :- length(L,N), new_setvars(L,Space,X1,X2).
|
||||
(X := clause(Disj)) :- !, new_clause(X,Disj).
|
||||
|
||||
(X := search(Y)) :- !, search(Y,X).
|
||||
(X := search(Y,L)) :- !, search(Y,X,L).
|
||||
|
||||
% these should be autogenerated:
|
||||
(C += forward(X,Y)) :- !, new_forward(C,X,Y).
|
||||
|
Reference in New Issue
Block a user