Re: your mail

From: Andrew Cheadle <amc4_at_icparc.ic.ac.uk>
Date: Fri 08 Apr 2005 11:31:31 AM GMT
Message-ID: <20050408113131.GA942@elstree.icparc.ic.ac.uk>
Josee

Could you be more clear on your question? You of course
don't want to write the entire program in C, because 
that would be silly. Wouldn't it? I assume you mean you
wish to be able to trigger a query associated with gp276/2
from a C program via our C embedding & interfacing interface? The 
embedding and interfacing manual:

http://www.icparc.ic.ac.uk/eclipse/doc/embedding/embroot.html

has excellent documentation and you can find examples at:

http://www.icparc.ic.ac.uk/eclipse/doc/examples/

Hope that helps.

Andy

On Fri, Apr 08, 2005 at 12:31:46AM -0700, Josee wrote:
> how would u write the c version of the following
> scheduling code. i seem to be having problems writing
> the code.
> 
> 
> :- use_module(library(fd)).
> :- use_module(library(structures)).
> :- use_module(library(lists)).
> 
> :- mode read_data(++,-).
> :- mode output_data(++,+).
> :- local struct( tttasks(name, jobno, duration,
> startime) ).
> 
> 
> % minimum schedule
>      gp276(End, Variables) :-
>         End :: [0..1000],
> read_data('//E/PROJECT/bin/a.ecl',Input),
>     minimize((schedule(Input, End, Variables),
> indomain(End)), End)).
> 
> 
> % problem List
> problem([task(t1,3,[],m1), task(t2,10,[t1],m2),
> task(t3,8,[t2],m3),
> 	 task(t4,6,[],m4), task(t5,3,[t4],m3),
> task(t6,4,[t5],m1),
> 	 task(t7,3,[],m3), task(t8,7,[t7],m2),
> task(t9,5,[t8],m1), task(t10,6,[t9],m4)]).
> 
> 
> % schedule program
> schedule(List, End, Variables)   :-
>           makeVariables(List, Variables, End),
>           precedences(List, Variables),
>           machines(List, Variables),
>           labeltasks(Variables).
> 
> 
> 
> % intializing domain variables
> makeVariables([],[],_).
> makeVariables([task(N,J,D,_,_)|Ts],
> [tttasks(N,J,D,TS)|Js], End)  :-
>      	TS :: [0..1000],
>          TS + D #<= End, %Start time should be less
> than the finish time of the sschedule
>          makeVariables(Ts, Js, End).
> 
> gettttasks(JL, J, N, D, TS)  :-
> once(member(tttasks(N,J,D,TS), JL)). %extract a task
> from the list of tasks
> 
> 
> 
> precedences([],_).
> precedences([task(N,_,_,Pre,_)|Ts], Variables)  :-
>      	gettttasks(Variables,_, N, _, TS),
> 	    prectask(Pre, TS, Variables),
> 	    precedences(Ts, Variables).
> 
> prectask([],  _, _).
> prectask([Name|Names], PostStart, Variables)  :-
>      	gettttasks(Variables, _, Name, D, TS),
> 	    TS + D #<= PostStart, 	%precedence constraints
> 	    prectask(Names, PostStart, Variables).% start
> time + duration of
> 	    					%the previous task has to be
> 	    					%less than the start time of
> 	    					%the next task
> 
> 
> machines([], _).
> machines([task(N,_,_,_,M)|Ts], Variables)  :-
>      	gettttasks(Variables, _, N, D, TS),
> 	    machtask(Ts, M, D, TS, Variables),
> 	    machines(Ts, Variables).
> 
> machtask([], _, _, _, _).
> machtask([task(SN,_,_,_,M0)|Ts], M, D, TS, Variables)
> :-
> 	     (M #= M0 ->
> 	         gettttasks(Variables, _, SN, SD, STS),
> 	         exclude(D, TS, SD, STS)
> 	     ; true ),
> 	    machtask(Ts, M, D, TS, Variables).
> 
> 
> exclude(_D, TS, SD, STS)  :-  STS + SD #<= TS.
> %machine constraints
> exclude(D, TS, _SD, STS)  :-  TS + D #<= STS.
> 
> labeltasks([]).
> labeltasks([tttasks(_,_,_,TS)|Js])   :-
>       indomain(TS),
>       labeltasks(Js).
> 
> 
> 
> 
> 
> 
> 		
> __________________________________
> Do you Yahoo!?
> Take Yahoo! Mail with you! Get it on your mobile phone.
> http://mobile.yahoo.com/maildemo
> 
> 
> 
> 
Received on Fri Apr 08 12:27:12 2005

This archive was generated by hypermail 2.1.8 : Wed 16 Nov 2005 06:07:35 PM GMT GMT