Oliver Scheickl wrote: > Thanks to your help I can now start and interact with ECLiPSe from within > Eclipse. As I am new to ECLiPSe and not really advanced in CLP in gerneral I > want to ask you to comment on my general problem solving approach. > I need to solve a kind of special scheduling problem. Actually, it is about > distribution of time budgets across a system under certain conditions and > rules to be met. I have a system model and some time budget information > coming from Eclipse. In my understanding all this information is my > knowledge base or my facts for problem solving. The rules that have to be > considered during problem solving can directly be programmed in Prolog. > > I am asking myself now, how do I feed the facts to ECLiPSe, which are > dynamically coming from Eclipse? My plan is to generate a Prolog file, > representing all the facts, at runtime. I then call the .compile() method > ans ask ECLiPSe to compile both the facts and the rules file. Then i call > rpc() and ask ECLiPSe to find a solution by executing a predefined goal. > > Does this make sense? I could not yet find a similar example where I can > learn from. The Embedding and Interfacing Manual provides examples using > queues. But I dont think it makes sense to queue dozens of facts to ECLiPSe. > Also it cannot really make sense to generate a huge String that is handed > over using ECLiPSe`s .rpc() method. > Hi Oliver, If I understood you correctly, you plan to write your general ECLiPSe program directly, and then pass the problem specific data via another ECLiPSe program that you generated from Java. It is almost always a bad idea to try to generate an ECLiPSe program from Java, even if these are simple facts. The main problem is that you need to generate the correct syntax, and the differences between ECLiPSe and Java, even for such basic data type like strings, is going to be a source of error. The EXDR format provided by the interface is designed to avoid this problem. If your data is sufficiently simple (simple enough to be converted to ECLiPSe facts), you are probably much better off to pass this data directly to ECLiPSe, and in your ECLiPSe program, convert this data to the form you need (e.g. constraints). If you I/O model is as simple as you say, i.e. you have all the data you need when you run the query, and you are only interested in the result from the query, then you can pass the data via arguments of your RPC goal. [The data queues is designed for more complex interaction between your Java and ECLiPSe code] From what you described, I do think that using the OutOfProcess ECLiPSe engine is better than the embedded ECLiPSe, as Joachim suggested. Cheers, Kish -- This e-mail may contain confidential and privileged material for the sole use of the intended recipient. Any review, use, distribution or disclosure by others is strictly prohibited. If you are not the intended recipient (or authorized to receive for the recipient), please contact the sender by reply e-mail and delete all copies of this message. Cisco Systems Limited (Company Number: 02558939), is registered in England and Wales with its registered office at 1 Callaghan Square, Cardiff, South Glamorgan CF10 5BT.Received on Fri Oct 02 2009 - 17:58:30 CEST
This archive was generated by hypermail 2.2.0 : Thu Feb 02 2012 - 02:31:58 CET