In theory, yes. In practice, it will not scale well.

Here is why: optimal planning is, in general, a problem with at least 
exponential complexity. When you have complexity like this, you can choose 
between two approaches:
1) explore the whole search space, trying very hard to prune and discard as 
much of it as you can as early as you can. This way you will have an 
optimal (in a sense that you will need to define) solution when (if) the 
search will complete. This is called "exhaustive search".
2) find ANY solution (it's generally much easier than to find an optimal 
one) and try to improve it changing bits of it. Repeat a lot of times, just 
in case it wasn't the best solution that can be. This is called "local 
search".
Second approach in general finds worse solutions, but scales better. 
Optaplanner is built around it. On the contrary, in core.logic you will 
need to perform an exhaustive search to find an optimal solution.

However, for a large and complex planning problems you may need to find 
*any* plan that satisfies all constrains, not necessarily an optimal one. 
In this setting, core.logic can be useful to implement planning algorithm 
such as Graphplan. 

On Wednesday, April 16, 2014 12:49:43 PM UTC+4, Josh Kamau wrote:
>
> Can core.logic be used to implement something like 
> http://www.optaplanner.org<http://www.google.com/url?q=http%3A%2F%2Fwww.optaplanner.org&sa=D&sntz=1&usg=AFQjCNEeuEd5d3AgwEpRnacr4QYQyuFHzA>
>   
> ? 
>
> Josh
>
>
> On Wed, Apr 16, 2014 at 9:36 AM, utel <umesh...@gmail.com <javascript:>>wrote:
>
>> Thanks Mikera and Andrew for the ideas. Some interesting suggestions 
>> there. I'll discuss these with my fellow devs. Much appreciated.
>>
>>
>> On Tuesday, April 15, 2014 1:14:11 AM UTC+1, Andrew Chambers wrote:
>>>
>>> Clojure logic programming with core.logic (something akin to a sudoku 
>>> solver https://gist.github.com/swannodette/3217582 is a good example) 
>>> or using datomic to have a database with a time machine and datalog for 
>>> queries might be cool (perhaps visualizing the data in the database at 
>>> arbitrary times in the past). Both don't really have equivalents in other 
>>> languages. Other things that are hard to achieve in other languages would 
>>> involve the immutable data structures, concurrency, and macros.
>>>
>>>
>>> On Monday, April 14, 2014 9:15:31 AM UTC+12, utel wrote:
>>>>
>>>> A handful of developers at the organisation I work at, want to 
>>>> encourage interest in Clojure with the aim of using it in production 
>>>> amongst the organisation's wider developer community (hundreds of 
>>>> developers). We ourselves are Clojure hobbyists.
>>>>
>>>> We wanted to do this through a basic project (with few moving parts), 
>>>> so I wanted to get feedback on a couple of aspects:
>>>> 1. Examples of basic project ideas that would be compelling to fellow 
>>>> developers not familiar with Clojure (e.g. something useful that you can 
>>>> do 
>>>> easily with Clojure that's harder to do in more established languages such 
>>>> as Java)
>>>> 2. Particular libraries that again had a wow factor towards an 
>>>> objective not easily achievable in more established languages (perhaps 
>>>> related to data analysis, visualisation, or taking advantage of the 
>>>> benefit 
>>>> of lazy evaluation in a novel way as examples).
>>>>
>>>> I realise these questions are somewhat open-ended, but just wanted to 
>>>> spark off some ideas for us through bouncing these questions off the 
>>>> google 
>>>> group's members.
>>>>
>>>> Thanks for any leads!
>>>>
>>>>  -- 
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clo...@googlegroups.com<javascript:>
>> Note that posts from new members are moderated - please be patient with 
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+u...@googlegroups.com <javascript:>
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to clojure+u...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to