<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Web Plant Media &#187; Prolog</title>
	<atom:link href="http://www.webplantmedia.com/category/prolog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.webplantmedia.com</link>
	<description>Lubbock Web Design and Web Development</description>
	<lastBuildDate>Wed, 28 Mar 2012 21:19:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Executable Prolog CLP Program for the Following Job Shop Scheduling Problem</title>
		<link>http://www.webplantmedia.com/prolog/2010/12/executable-prolog-clp-program-for-the-following-job-shop-scheduling-problem/</link>
		<comments>http://www.webplantmedia.com/prolog/2010/12/executable-prolog-clp-program-for-the-following-job-shop-scheduling-problem/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 07:01:16 +0000</pubDate>
		<dc:creator>ChrisB</dc:creator>
				<category><![CDATA[Prolog]]></category>

		<guid isPermaLink="false">http://www.webplantmedia.com/?p=530</guid>
		<description><![CDATA[The job shop scheduling problem has a wide range of applications in industry. The problem we will explore is a simple job shop scheduling for a print shop. The print shop has 6 machines: [printer, stapler, sorter, binder, packager, copier], and schedules a number of jobs over a two day (48 hour) period. Each job [...]]]></description>
			<content:encoded><![CDATA[<p>The job shop scheduling problem has a wide range of applications in industry. The problem we will explore is a simple job shop scheduling for a print shop. The print shop has 6 machines: [printer, stapler, sorter, binder, packager, copier], and schedules a number of jobs over a two day (48 hour) period. Each job is a sequence of tasks which have a name, duration (in hours) and machine that they must be performed on. A schedule assigns a start time for each task, so that no task starts before the previous task in the job has finished, and no machine is busy with two tasks at the same time. The main user defined predicate defined to solve the scheduling problem is data(TaskList, Jobs, Machines, Vars) where</p>
<ul class="blog-list">
<li>TaskList is a list of tasks. Each task is represented as a term task(Name, Duration, Machine, StartTime) where Name, Duration, StartTime are the name, start time, and duration of the task, Machine is the machine the task needs.</li>
<li>Jobs is a list of jobs which in turn by definition is a list of tasks. Each job in this list consists of the tasks that make up this job in the order that they should be completed,</li>
<li>Machines is the list of all machines in the shop, and</li>
<li>Vars is the list of all start time variables (of the tasks).</li>
</ul>
<p>As an example, data/4 below describes a pair of small advertising print jobs.</p>

<div class="wp_syntax"><div class="code"><pre class="prolog" style="font-family:monospace;">data<span style="color: #009900;">&#40;</span>
   <span style="color: #666666; font-style: italic;">%%% First argument is a list of tasks with name, duration</span>
   <span style="color: #666666; font-style: italic;">%%% and machine and start time (unconstrained)</span>
   <span style="color: #009900;">&#91;</span>
     task<span style="color: #009900;">&#40;</span>ad1_copy<span style="color: #339933;">,</span> <span style="color: #800080;">4</span><span style="color: #339933;">,</span> copier<span style="color: #339933;">,</span> AC1<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
     task<span style="color: #009900;">&#40;</span>ad1_sort<span style="color: #339933;">,</span> <span style="color: #800080;">4</span><span style="color: #339933;">,</span> sorter<span style="color: #339933;">,</span> AS1<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
     task<span style="color: #009900;">&#40;</span>ad1_pack<span style="color: #339933;">,</span> <span style="color: #800080;">3</span><span style="color: #339933;">,</span> packager<span style="color: #339933;">,</span> AD1<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
     task<span style="color: #009900;">&#40;</span>ad2_copy<span style="color: #339933;">,</span> <span style="color: #800080;">5</span><span style="color: #339933;">,</span> copier<span style="color: #339933;">,</span> AC2<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
     task<span style="color: #009900;">&#40;</span>ad2_sort<span style="color: #339933;">,</span> <span style="color: #800080;">4</span><span style="color: #339933;">,</span> sorter<span style="color: #339933;">,</span> AS2<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
     task<span style="color: #009900;">&#40;</span>ad2_pack<span style="color: #339933;">,</span> <span style="color: #800080;">4</span><span style="color: #339933;">,</span> packager<span style="color: #339933;">,</span> AD2<span style="color: #009900;">&#41;</span>
   <span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
   <span style="color: #666666; font-style: italic;">%%% second argument is a list of lists of task names to be</span>
   <span style="color: #666666; font-style: italic;">%%% performed in order</span>
   <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#91;</span>ad1_copy<span style="color: #339933;">,</span>ad1_sort<span style="color: #339933;">,</span>ad1_pack<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
    <span style="color: #009900;">&#91;</span>ad2_copy<span style="color: #339933;">,</span>ad2_sort<span style="color: #339933;">,</span>ad2_pack<span style="color: #009900;">&#93;</span>
   <span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
   <span style="color: #666666; font-style: italic;">%%% third argument is the list of different machines</span>
   <span style="color: #009900;">&#91;</span>copier<span style="color: #339933;">,</span>sorter<span style="color: #339933;">,</span>packager<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
   <span style="color: #666666; font-style: italic;">%%% fourth argument is the list of all start time variables</span>
   <span style="color: #009900;">&#91;</span>AC1<span style="color: #339933;">,</span>AS1<span style="color: #339933;">,</span>AD1<span style="color: #339933;">,</span>AC2<span style="color: #339933;">,</span>AS2<span style="color: #339933;">,</span>AD2<span style="color: #009900;">&#93;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span></pre></div></div>

<p>The file ’job.pl’ above, containing the data/4, should be saved under the same directory as your program. When your program is tested, it should be able to handle more jobs and each job may have more tasks. This program uses the template schedule-template.pl, below.</p>

<div class="wp_syntax"><div class="code"><pre class="prolog" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">%% This is a program stub for the job shop scheduling problem</span>
<span style="color: #666666; font-style: italic;">%% given in the project.</span>
&nbsp;
<span style="color: #666666; font-style: italic;">% Load in finite domain module</span>
<span style="color: #339933;">:-</span> use_module<span style="color: #009900;">&#40;</span>library<span style="color: #009900;">&#40;</span>clpfd<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
<span style="color: #666666; font-style: italic;">% Other modules you may use are loaded here</span>
&nbsp;
<span style="color: #666666; font-style: italic;">% You must use the following to load in the data</span>
<span style="color: #339933;">:-</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'job.pl'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span>
&nbsp;
<span style="color: #666666; font-style: italic;">% Your definition of the userdefined constraint jobshop(L) should be here.</span>
&nbsp;
member<span style="color: #009900;">&#40;</span>X<span style="color: #339933;">,</span><span style="color: #009900;">&#91;</span>X<span style="color: #339933;">|</span>_<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
member<span style="color: #009900;">&#40;</span>X<span style="color: #339933;">,</span><span style="color: #009900;">&#91;</span>_<span style="color: #339933;">|</span>T<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:-</span>
	member<span style="color: #009900;">&#40;</span>X<span style="color: #339933;">,</span>T<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
&nbsp;
jobshop<span style="color: #009900;">&#40;</span>L<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:-</span>
	data<span style="color: #009900;">&#40;</span>W<span style="color: #339933;">,</span>X<span style="color: #339933;">,</span>_<span style="color: #339933;">,</span>Z<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	init<span style="color: #009900;">&#40;</span>W<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	precLL<span style="color: #009900;">&#40;</span>X<span style="color: #339933;">,</span>W<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	capacity<span style="color: #009900;">&#40;</span>W<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	labeling<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>Z<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	L <span style="color: #339933;">=</span> Z<span style="color: #339933;">.</span>
&nbsp;
init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
init<span style="color: #009900;">&#40;</span>TASKLIST<span style="color: #009900;">&#41;</span><span style="color: #339933;">:-</span>
	TASKLIST<span style="color: #339933;">=</span><span style="color: #009900;">&#91;</span>task<span style="color: #009900;">&#40;</span>_<span style="color: #339933;">,</span>D<span style="color: #339933;">,</span>_<span style="color: #339933;">,</span>ST<span style="color: #009900;">&#41;</span><span style="color: #339933;">|</span>T<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
	ST in <span style="color: #800080;">0</span><span style="color: #339933;">..</span><span style="color: #800080;">48</span><span style="color: #339933;">,</span>
	ST<span style="color: #339933;">+</span>D #<span style="color: #339933;">=&lt;</span> <span style="color: #800080;">48</span><span style="color: #339933;">,</span>
	init<span style="color: #009900;">&#40;</span>T<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
&nbsp;
precLL<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> _<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
precLL<span style="color: #009900;">&#40;</span>JOBS<span style="color: #339933;">,</span>TASKLIST<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:-</span>
	JOBS <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>H<span style="color: #339933;">|</span>T<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
	precL<span style="color: #009900;">&#40;</span>H<span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span><span style="color: #800080;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> TASKLIST<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	precLL<span style="color: #009900;">&#40;</span>T<span style="color: #339933;">,</span>TASKLIST<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
&nbsp;
precL<span style="color: #009900;">&#40;</span>_<span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> _<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
precL<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> _<span style="color: #339933;">,</span> _<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
precL<span style="color: #009900;">&#40;</span>JOBS<span style="color: #339933;">,</span> _<span style="color: #339933;">,</span> TASKLIST<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:-</span>
	JOBS<span style="color: #339933;">=</span><span style="color: #009900;">&#91;</span>H<span style="color: #339933;">|</span>T<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> T<span style="color: #339933;">=</span><span style="color: #009900;">&#91;</span>HH<span style="color: #339933;">|</span>TT<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
	member<span style="color: #009900;">&#40;</span>task<span style="color: #009900;">&#40;</span>H<span style="color: #339933;">,</span>D1<span style="color: #339933;">,</span>_<span style="color: #339933;">,</span>T1<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> TASKLIST<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	member<span style="color: #009900;">&#40;</span>task<span style="color: #009900;">&#40;</span>HH<span style="color: #339933;">,</span>_<span style="color: #339933;">,</span>_<span style="color: #339933;">,</span>T2<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> TASKLIST<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	T1 <span style="color: #339933;">+</span> D1 #<span style="color: #339933;">&lt;</span> T2<span style="color: #339933;">,</span>
	<span style="color: #666666; font-style: italic;">%write(H), write('-'), write(HH),write('\n'),</span>
	precL<span style="color: #009900;">&#40;</span>T<span style="color: #339933;">,</span> TT<span style="color: #339933;">,</span>TASKLIST<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
&nbsp;
exlude<span style="color: #009900;">&#40;</span>T1<span style="color: #339933;">,</span> D1<span style="color: #339933;">,</span> T2<span style="color: #339933;">,</span> _<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:-</span>
	T1 <span style="color: #339933;">+</span> D1 #<span style="color: #339933;">&lt;</span> T2<span style="color: #339933;">.</span>
exlude<span style="color: #009900;">&#40;</span>T1<span style="color: #339933;">,</span> _<span style="color: #339933;">,</span> T2<span style="color: #339933;">,</span> D2<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:-</span>
	T2 <span style="color: #339933;">+</span> D2 #<span style="color: #339933;">&lt;</span> T1<span style="color: #339933;">.</span>
&nbsp;
capacity<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
capacity<span style="color: #009900;">&#40;</span>TASKLIST<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:-</span>
	TASKLIST <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>task<span style="color: #009900;">&#40;</span>J<span style="color: #339933;">,</span>D<span style="color: #339933;">,</span>M<span style="color: #339933;">,</span>_<span style="color: #009900;">&#41;</span><span style="color: #339933;">|</span>T<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
	<span style="color: #666666; font-style: italic;">%write(J), write('-'), write(D), write('-'), write(M), write('-'), write(ST), write('\n'),</span>
	nonoverlaps<span style="color: #009900;">&#40;</span>J<span style="color: #339933;">,</span>D<span style="color: #339933;">,</span>M<span style="color: #339933;">,</span>T<span style="color: #339933;">,</span>TASKLIST<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	capacity<span style="color: #009900;">&#40;</span>T<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
&nbsp;
nonoverlaps<span style="color: #009900;">&#40;</span>_<span style="color: #339933;">,</span>_<span style="color: #339933;">,</span>_<span style="color: #339933;">,</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>_<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
nonoverlaps<span style="color: #009900;">&#40;</span>J<span style="color: #339933;">,</span>D<span style="color: #339933;">,</span>M<span style="color: #339933;">,</span>L<span style="color: #339933;">,</span>TASKLIST<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:-</span>
	L <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>task<span style="color: #009900;">&#40;</span>_<span style="color: #339933;">,</span> _<span style="color: #339933;">,</span> M2<span style="color: #339933;">,</span> _<span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> T<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
	M \<span style="color: #339933;">=</span> M2<span style="color: #339933;">,</span>
	nonoverlaps<span style="color: #009900;">&#40;</span>J<span style="color: #339933;">,</span>D<span style="color: #339933;">,</span>M<span style="color: #339933;">,</span>T<span style="color: #339933;">,</span>TASKLIST<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
nonoverlaps<span style="color: #009900;">&#40;</span>J<span style="color: #339933;">,</span>D<span style="color: #339933;">,</span>M<span style="color: #339933;">,</span>L<span style="color: #339933;">,</span>TASKLIST<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:-</span>
	L<span style="color: #339933;">=</span><span style="color: #009900;">&#91;</span>task<span style="color: #009900;">&#40;</span>_<span style="color: #339933;">,</span>D2<span style="color: #339933;">,</span>M2<span style="color: #339933;">,</span>T2<span style="color: #009900;">&#41;</span><span style="color: #339933;">|</span>T<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
	M <span style="color: #339933;">=</span> M2<span style="color: #339933;">,</span>
	member<span style="color: #009900;">&#40;</span>task<span style="color: #009900;">&#40;</span>J<span style="color: #339933;">,</span>D<span style="color: #339933;">,</span>M<span style="color: #339933;">,</span>T1<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>TASKLIST<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	exlude<span style="color: #009900;">&#40;</span>T1<span style="color: #339933;">,</span>D<span style="color: #339933;">,</span>T2<span style="color: #339933;">,</span>D2<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	nonoverlaps<span style="color: #009900;">&#40;</span>J<span style="color: #339933;">,</span>D<span style="color: #339933;">,</span>M<span style="color: #339933;">,</span>T<span style="color: #339933;">,</span>TASKLIST<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
&nbsp;
<span style="color: #666666; font-style: italic;">% Your rules should not go below this line</span>
&nbsp;
<span style="color: #666666; font-style: italic;">% Don't delete or comment away the following</span>
&nbsp;
<span style="color: #666666; font-style: italic;">%% Output the solution</span>
myoutput <span style="color: #339933;">:-</span> jobshop<span style="color: #009900;">&#40;</span>L<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
 	    <span style="color: #990000;">write</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'The starting time of the tasks are: \n'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
            myprint<span style="color: #009900;">&#40;</span>L<span style="color: #339933;">,</span> <span style="color: #800080;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
&nbsp;
<span style="color: #666666; font-style: italic;">%% this is to output the sarting time</span>
myprint<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> _<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
myprint<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span>X<span style="color: #339933;">|</span>L<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> I<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:-</span> <span style="color: #990000;">write</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'task '</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #990000;">write</span><span style="color: #009900;">&#40;</span>I<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #990000;">write</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">' starts at '</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
                   <span style="color: #990000;">write</span><span style="color: #009900;">&#40;</span>X<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #990000;">write</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'\n'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> Y #<span style="color: #339933;">=</span> I<span style="color: #339933;">+</span><span style="color: #800080;">1</span><span style="color: #339933;">,</span> myprint<span style="color: #009900;">&#40;</span>L<span style="color: #339933;">,</span> Y<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
&nbsp;
<span style="color: #666666; font-style: italic;">%% initiat the output.</span>
<span style="color: #339933;">:-</span> myoutput<span style="color: #339933;">.</span></pre></div></div>

<p>Sample query and output under Sicstus Prolog</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">banana$ sicstus
SICStus 3.11.2 (sparc-solaris-5.7): Wed Jun  2 11:43:16 MET DST 2004
Licensed to ttu.edu
| ?- ['schedule-template.pl'].
% consulting /home/undergrad3/ebaldelo/schedule-template.pl...
%  loading /usr/local/lib/sicstus-3.11.2/library/clpfd.po...
%  module clpfd imported into user
%   loading /usr/local/lib/sicstus-3.11.2/library/atts.po...
%   module attributes imported into clpfd
%    loading /usr/local/lib/sicstus-3.11.2/library/lists.po...
%    module lists imported into attributes
%    loaded /usr/local/lib/sicstus-3.11.2/library/lists.po in module lists, 10 msec 18528 bytes
%   loaded /usr/local/lib/sicstus-3.11.2/library/atts.po in module attributes, 10 msec 46400 bytes
%   loading /usr/local/lib/sicstus-3.11.2/library/assoc.po...
%   module assoc imported into clpfd
%    module lists imported into assoc
%   loaded /usr/local/lib/sicstus-3.11.2/library/assoc.po in module assoc, 20 msec 17988 bytes
%   module lists imported into clpfd
%   loading /usr/local/lib/sicstus-3.11.2/library/ordsets.po...
%   module ordsets imported into clpfd
%   loaded /usr/local/lib/sicstus-3.11.2/library/ordsets.po in module ordsets, 0 msec 21496 bytes
%   loading /usr/local/lib/sicstus-3.11.2/library/ugraphs.po...
%   module ugraphs imported into clpfd
%    module ordsets imported into ugraphs
%    module lists imported into ugraphs
%    module assoc imported into ugraphs
%    loading /usr/local/lib/sicstus-3.11.2/library/random.po...
%    module random imported into ugraphs
%     module assoc imported into random
%     loading foreign resource /usr/local/lib/sicstus-3.11.2/library/sparc-solaris-5.7/random.so in module random
%    loaded /usr/local/lib/sicstus-3.11.2/library/random.po in module random, 20 msec 7776 bytes
%   loaded /usr/local/lib/sicstus-3.11.2/library/ugraphs.po in module ugraphs, 70 msec 84872 bytes
%   loading foreign resource /usr/local/lib/sicstus-3.11.2/library/sparc-solaris-5.7/clpfd.so in module clpfd
%  loaded /usr/local/lib/sicstus-3.11.2/library/clpfd.po in module clpfd, 170 msec 829440 bytes
%  consulting /home/undergrad3/ebaldelo/job.pl...
%  consulted /home/undergrad3/ebaldelo/job.pl in module user, 0 msec 912 bytes
The starting time of the tasks are:
task 1 starts at 0
task 2 starts at 5
task 3 starts at 10
task 4 starts at 5
task 5 starts at 11
task 6 starts at 16
% consulted /home/undergrad3/ebaldelo/schedule-template.pl in module user, 200 msec 836040 bytes
yes
| ?-</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.webplantmedia.com/prolog/2010/12/executable-prolog-clp-program-for-the-following-job-shop-scheduling-problem/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Simple Constraint Programming Tutorial</title>
		<link>http://www.webplantmedia.com/prolog/2010/04/simple-constraint-programming-tutorial/</link>
		<comments>http://www.webplantmedia.com/prolog/2010/04/simple-constraint-programming-tutorial/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 04:03:40 +0000</pubDate>
		<dc:creator>ChrisB</dc:creator>
				<category><![CDATA[Prolog]]></category>

		<guid isPermaLink="false">http://www.webplantmedia.com/?p=407</guid>
		<description><![CDATA[A programming language is like a tool. Every tool has a specific purpose. One tool does one job better and another tool does another job better. Programming Languages should be thought of the same way. Why Constraint Programming The N-Queens puzzle is very popular and we were able to find several working examples in C [...]]]></description>
			<content:encoded><![CDATA[<p>A programming language is like a tool. Every tool has a specific purpose. One tool does one job better and another tool does another job better. Programming Languages should be thought of the same way.</p>
<h2>Why Constraint Programming</h2>
<p>The N-Queens puzzle is very popular and we were able to find several working examples in C and in Prolog.  We analyzed, compiled and tested all these programs and weighed all the pros and cons these two types of languages.</p>
<p>Prolog, being a higher level language, is intuitively easier to understand and easier to program. You can think about the problem with more abstraction. The challenge in actually programming in prolog is that you need to be able to correctly “define” and thus “constrain” the program to do what needs to be done. You don’t have to worry about data types, pointers, data structures and other lower level issues. All the prolog solutions we came across were between 40 and 50 lines of code. On the downside, it was inconvenient when trying to test any n size greater than 12. Trying to solve the puzzle for n=13 takes about 148 seconds.</p>
<p>We found one good example of the n queens problem written in C. We compiled it under Visual Studio 2008, and ran it. The obvious upside in the C program was the speed. It could still solve the puzzle in under a second for n=13. That’s a huge difference compared with the prolog program.  The downside is trying to understand the code and trying to write the code. It’s not as obvious to see what’s happening. The level of abstraction is not as narrow as it is in prolog. On top having to worry about correctly implementing a solution, you have to worry about correctly defining a data structure, defining the correct data types, properly handling arrays and pointers, and other lower level issues not in any way related to the puzzle’s algorithm. The C program that we were testing was 400 lines of code. 236 lines if you remove the comments. That’s almost 5 times the size of the prolog program.</p>
<h2>Time Comparisons between Prolog and C</h2>
<table class="stats" border="0" cellspacing="0" cellpadding="0">
<thead>
<tr>
<th width="213" valign="top"><strong>N</strong></th>
<th width="213" valign="top"><strong>Prolog <em>(seconds)</em></strong></th>
<th width="213" valign="top"><strong>C <em>(seconds)</em></strong></th>
</tr>
</thead>
<tbody>
<tr>
<td width="213" valign="top"><strong>1</strong></td>
<td width="213" valign="top">&lt; 1</td>
<td width="213" valign="top">&lt; 1</td>
</tr>
<tr>
<td width="213" valign="top"><strong>2</strong></td>
<td width="213" valign="top">&lt;   1</td>
<td width="213" valign="top">&lt;   1</td>
</tr>
<tr>
<td width="213" valign="top"><strong>3</strong></td>
<td width="213" valign="top">&lt; 1</td>
<td width="213" valign="top">&lt; 1</td>
</tr>
<tr>
<td width="213" valign="top"><strong>4</strong></td>
<td width="213" valign="top">&lt;   1</td>
<td width="213" valign="top">&lt;   1</td>
</tr>
<tr>
<td width="213" valign="top"><strong>5</strong></td>
<td width="213" valign="top">&lt; 1</td>
<td width="213" valign="top">&lt; 1</td>
</tr>
<tr>
<td width="213" valign="top"><strong>6</strong></td>
<td width="213" valign="top">&lt;   1</td>
<td width="213" valign="top">&lt;   1</td>
</tr>
<tr>
<td width="213" valign="top"><strong>7</strong></td>
<td width="213" valign="top">&lt; 1</td>
<td width="213" valign="top">&lt; 1</td>
</tr>
<tr>
<td width="213" valign="top"><strong>8</strong></td>
<td width="213" valign="top">&lt;   1</td>
<td width="213" valign="top">&lt;   1</td>
</tr>
<tr>
<td width="213" valign="top"><strong>9</strong></td>
<td width="213" valign="top">&lt; 1</td>
<td width="213" valign="top">&lt; 1</td>
</tr>
<tr>
<td width="213" valign="top"><strong>10</strong></td>
<td width="213" valign="top">&lt;   1</td>
<td width="213" valign="top">&lt;   1</td>
</tr>
<tr>
<td width="213" valign="top"><strong>11</strong></td>
<td width="213" valign="top">3.5</td>
<td width="213" valign="top">&lt; 1</td>
</tr>
<tr>
<td width="213" valign="top"><strong>12</strong></td>
<td width="213" valign="top">20.3</td>
<td width="213" valign="top">&lt;   1</td>
</tr>
<tr>
<td width="213" valign="top"><strong>13</strong></td>
<td width="213" valign="top">Too long</td>
<td width="213" valign="top">&lt; 1</td>
</tr>
<tr>
<td width="213" valign="top"><strong>14</strong></td>
<td width="213" valign="top">Too   long</td>
<td width="213" valign="top">1</td>
</tr>
<tr>
<td width="213" valign="top"><strong>15</strong></td>
<td width="213" valign="top">Too long</td>
<td width="213" valign="top">4</td>
</tr>
<tr>
<td width="213" valign="top"><strong>16</strong></td>
<td width="213" valign="top">Too   long</td>
<td width="213" valign="top">23</td>
</tr>
<tr>
<td width="213" valign="top"><strong>17</strong></td>
<td width="213" valign="top">Too long</td>
<td width="213" valign="top">Too long</td>
</tr>
</tbody>
</table>
<p>Next, we wanted to discuss the simplicity in solving the n-queens problem in prolog. Let’s define our solution for N=4.</p>
<p>We define our solution by stating that each of the 4 queens must occupy it’s very own row, column, downward diagonal, and upward diagonal on a 4&#215;4 board.</p>
<p><img class="alignnone size-full wp-image-408" title="n-queens" src="http://www.webplantmedia.com/wp-content/uploads/2010/04/n-queens1.jpg" alt="" width="400" height="425" /></p>
<p>And that’s our definition! Now we need to tell prolog to do this and write our constraints.</p>

<div class="wp_syntax"><div class="code"><pre class="prolog" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">%% DEFINE OUR BOARD     </span>
<span style="color: #666666; font-style: italic;">%% sq(y-coord, x-coord, downward-diag, upward-diag) </span>
 sq<span style="color: #009900;">&#40;</span><span style="color: #800080;">1</span><span style="color: #339933;">,</span><span style="color: #800080;">1</span><span style="color: #339933;">,</span><span style="color: #800080;">4</span><span style="color: #339933;">,</span><span style="color: #800080;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
 sq<span style="color: #009900;">&#40;</span><span style="color: #800080;">1</span><span style="color: #339933;">,</span><span style="color: #800080;">2</span><span style="color: #339933;">,</span><span style="color: #800080;">5</span><span style="color: #339933;">,</span><span style="color: #800080;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
 sq<span style="color: #009900;">&#40;</span><span style="color: #800080;">1</span><span style="color: #339933;">,</span><span style="color: #800080;">3</span><span style="color: #339933;">,</span><span style="color: #800080;">6</span><span style="color: #339933;">,</span><span style="color: #800080;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
 sq<span style="color: #009900;">&#40;</span><span style="color: #800080;">1</span><span style="color: #339933;">,</span><span style="color: #800080;">4</span><span style="color: #339933;">,</span><span style="color: #800080;">7</span><span style="color: #339933;">,</span><span style="color: #800080;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
 sq<span style="color: #009900;">&#40;</span><span style="color: #800080;">2</span><span style="color: #339933;">,</span><span style="color: #800080;">1</span><span style="color: #339933;">,</span><span style="color: #800080;">3</span><span style="color: #339933;">,</span><span style="color: #800080;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
 sq<span style="color: #009900;">&#40;</span><span style="color: #800080;">2</span><span style="color: #339933;">,</span><span style="color: #800080;">2</span><span style="color: #339933;">,</span><span style="color: #800080;">4</span><span style="color: #339933;">,</span><span style="color: #800080;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
 sq<span style="color: #009900;">&#40;</span><span style="color: #800080;">2</span><span style="color: #339933;">,</span><span style="color: #800080;">3</span><span style="color: #339933;">,</span><span style="color: #800080;">5</span><span style="color: #339933;">,</span><span style="color: #800080;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
 sq<span style="color: #009900;">&#40;</span><span style="color: #800080;">2</span><span style="color: #339933;">,</span><span style="color: #800080;">4</span><span style="color: #339933;">,</span><span style="color: #800080;">6</span><span style="color: #339933;">,</span><span style="color: #800080;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
 sq<span style="color: #009900;">&#40;</span><span style="color: #800080;">3</span><span style="color: #339933;">,</span><span style="color: #800080;">1</span><span style="color: #339933;">,</span><span style="color: #800080;">2</span><span style="color: #339933;">,</span><span style="color: #800080;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
 sq<span style="color: #009900;">&#40;</span><span style="color: #800080;">3</span><span style="color: #339933;">,</span><span style="color: #800080;">2</span><span style="color: #339933;">,</span><span style="color: #800080;">3</span><span style="color: #339933;">,</span><span style="color: #800080;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
 sq<span style="color: #009900;">&#40;</span><span style="color: #800080;">3</span><span style="color: #339933;">,</span><span style="color: #800080;">3</span><span style="color: #339933;">,</span><span style="color: #800080;">4</span><span style="color: #339933;">,</span><span style="color: #800080;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
 sq<span style="color: #009900;">&#40;</span><span style="color: #800080;">3</span><span style="color: #339933;">,</span><span style="color: #800080;">4</span><span style="color: #339933;">,</span><span style="color: #800080;">5</span><span style="color: #339933;">,</span><span style="color: #800080;">6</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
 sq<span style="color: #009900;">&#40;</span><span style="color: #800080;">4</span><span style="color: #339933;">,</span><span style="color: #800080;">1</span><span style="color: #339933;">,</span><span style="color: #800080;">1</span><span style="color: #339933;">,</span><span style="color: #800080;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
 sq<span style="color: #009900;">&#40;</span><span style="color: #800080;">4</span><span style="color: #339933;">,</span><span style="color: #800080;">2</span><span style="color: #339933;">,</span><span style="color: #800080;">2</span><span style="color: #339933;">,</span><span style="color: #800080;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
 sq<span style="color: #009900;">&#40;</span><span style="color: #800080;">4</span><span style="color: #339933;">,</span><span style="color: #800080;">3</span><span style="color: #339933;">,</span><span style="color: #800080;">3</span><span style="color: #339933;">,</span><span style="color: #800080;">6</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
 sq<span style="color: #009900;">&#40;</span><span style="color: #800080;">4</span><span style="color: #339933;">,</span><span style="color: #800080;">4</span><span style="color: #339933;">,</span><span style="color: #800080;">4</span><span style="color: #339933;">,</span><span style="color: #800080;">7</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
&nbsp;
<span style="color: #666666; font-style: italic;">%% CONSTRAINT</span>
<span style="color: #666666; font-style: italic;">%% We define our solution by stating that</span>
<span style="color: #666666; font-style: italic;">%% each of the 4 queens must occupy it’s</span>
<span style="color: #666666; font-style: italic;">%% very own row, column, downward diagonal,</span>
<span style="color: #666666; font-style: italic;">%% and upward diagonal on a 4x4 board.</span>
 chess<span style="color: #009900;">&#40;</span>A<span style="color: #339933;">,</span>B<span style="color: #339933;">,</span> E<span style="color: #339933;">,</span>F<span style="color: #339933;">,</span> I<span style="color: #339933;">,</span>J<span style="color: #339933;">,</span> M<span style="color: #339933;">,</span>N<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:-</span>
 sq<span style="color: #009900;">&#40;</span>A<span style="color: #339933;">,</span>B<span style="color: #339933;">,</span>C<span style="color: #339933;">,</span>D<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> sq<span style="color: #009900;">&#40;</span>E<span style="color: #339933;">,</span>F<span style="color: #339933;">,</span>G<span style="color: #339933;">,</span>H<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> sq<span style="color: #009900;">&#40;</span>I<span style="color: #339933;">,</span>J<span style="color: #339933;">,</span>K<span style="color: #339933;">,</span>L<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> sq<span style="color: #009900;">&#40;</span>M<span style="color: #339933;">,</span>N<span style="color: #339933;">,</span>O<span style="color: #339933;">,</span>P<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
 A<span style="color: #339933;">=</span><span style="color: #800080;">1</span><span style="color: #339933;">,</span> E<span style="color: #339933;">=</span><span style="color: #800080;">2</span><span style="color: #339933;">,</span> I<span style="color: #339933;">=</span><span style="color: #800080;">3</span><span style="color: #339933;">,</span> M<span style="color: #339933;">=</span><span style="color: #800080;">4</span><span style="color: #339933;">,</span>
 A\<span style="color: #339933;">=</span>E<span style="color: #339933;">,</span> A\<span style="color: #339933;">=</span>I<span style="color: #339933;">,</span> A\<span style="color: #339933;">=</span>M<span style="color: #339933;">,</span>
 B\<span style="color: #339933;">=</span>F<span style="color: #339933;">,</span> B\<span style="color: #339933;">=</span>J<span style="color: #339933;">,</span> B\<span style="color: #339933;">=</span>N<span style="color: #339933;">,</span>
 C\<span style="color: #339933;">=</span>G<span style="color: #339933;">,</span> C\<span style="color: #339933;">=</span>K<span style="color: #339933;">,</span> C\<span style="color: #339933;">=</span>O<span style="color: #339933;">,</span>
 D\<span style="color: #339933;">=</span>H<span style="color: #339933;">,</span> D\<span style="color: #339933;">=</span>L<span style="color: #339933;">,</span> D\<span style="color: #339933;">=</span>P<span style="color: #339933;">,</span>
 E\<span style="color: #339933;">=</span>I<span style="color: #339933;">,</span> E\<span style="color: #339933;">=</span>M<span style="color: #339933;">,</span>
 F\<span style="color: #339933;">=</span>J<span style="color: #339933;">,</span> F\<span style="color: #339933;">=</span>N<span style="color: #339933;">,</span>
 G\<span style="color: #339933;">=</span>K<span style="color: #339933;">,</span> G\<span style="color: #339933;">=</span>O<span style="color: #339933;">,</span>
 H\<span style="color: #339933;">=</span>L<span style="color: #339933;">,</span> H\<span style="color: #339933;">=</span>P<span style="color: #339933;">,</span>
 I\<span style="color: #339933;">=</span>M<span style="color: #339933;">,</span>
 J\<span style="color: #339933;">=</span>N<span style="color: #339933;">,</span>
 K\<span style="color: #339933;">=</span>O<span style="color: #339933;">,</span>
 L\<span style="color: #339933;">=</span>P<span style="color: #339933;">.</span></pre></div></div>

<p>Here is our output once we run our program:</p>

<div class="wp_syntax"><div class="code"><pre class="prolog" style="font-family:monospace;"><span style="color: #339933;">?-</span> chess<span style="color: #009900;">&#40;</span>A<span style="color: #339933;">,</span>B<span style="color: #339933;">,</span>E<span style="color: #339933;">,</span>F<span style="color: #339933;">,</span>I<span style="color: #339933;">,</span>J<span style="color: #339933;">,</span>M<span style="color: #339933;">,</span>N<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
&nbsp;
A <span style="color: #339933;">=</span> <span style="color: #800080;">1</span><span style="color: #339933;">,</span>
B <span style="color: #339933;">=</span> <span style="color: #800080;">2</span><span style="color: #339933;">,</span>
E <span style="color: #339933;">=</span> <span style="color: #800080;">2</span><span style="color: #339933;">,</span>
F <span style="color: #339933;">=</span> <span style="color: #800080;">4</span><span style="color: #339933;">,</span>
I <span style="color: #339933;">=</span> <span style="color: #800080;">3</span><span style="color: #339933;">,</span>
J <span style="color: #339933;">=</span> <span style="color: #800080;">1</span><span style="color: #339933;">,</span>
M <span style="color: #339933;">=</span> <span style="color: #800080;">4</span><span style="color: #339933;">,</span>
N <span style="color: #339933;">=</span> <span style="color: #800080;">3</span> <span style="color: #339933;">;</span></pre></div></div>

<p>Which means:  { Q1(1, 2) , Q2(2, 4) , Q3(3, 1) , Q4(4, 3) }</p>
<p><img class="alignnone size-full wp-image-409" title="nqueens2" src="http://www.webplantmedia.com/wp-content/uploads/2010/04/nqueens2.jpg" alt="" width="400" height="412" /></p>
<p>Which is of course, the right solution. Here was the other solution.</p>

<div class="wp_syntax"><div class="code"><pre class="prolog" style="font-family:monospace;">A <span style="color: #339933;">=</span> <span style="color: #800080;">1</span><span style="color: #339933;">,</span>
B <span style="color: #339933;">=</span> <span style="color: #800080;">3</span><span style="color: #339933;">,</span>
E <span style="color: #339933;">=</span> <span style="color: #800080;">2</span><span style="color: #339933;">,</span>
F <span style="color: #339933;">=</span> <span style="color: #800080;">1</span><span style="color: #339933;">,</span>
I <span style="color: #339933;">=</span> <span style="color: #800080;">3</span><span style="color: #339933;">,</span>
J <span style="color: #339933;">=</span> <span style="color: #800080;">4</span><span style="color: #339933;">,</span>
M <span style="color: #339933;">=</span> <span style="color: #800080;">4</span><span style="color: #339933;">,</span>
N <span style="color: #339933;">=</span> <span style="color: #800080;">2</span> <span style="color: #339933;">;</span></pre></div></div>

<p>Which means:  { Q1(1, 3) , Q2(2, 1) , Q3(3, 4) , Q4(4, 2) }</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webplantmedia.com/prolog/2010/04/simple-constraint-programming-tutorial/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Constraint Programming &#8211; &#8216;Send More Money&#8217; in Prolog</title>
		<link>http://www.webplantmedia.com/prolog/2010/03/constraint-programming-send-more-money-in-prolog/</link>
		<comments>http://www.webplantmedia.com/prolog/2010/03/constraint-programming-send-more-money-in-prolog/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 20:21:50 +0000</pubDate>
		<dc:creator>ChrisB</dc:creator>
				<category><![CDATA[Prolog]]></category>

		<guid isPermaLink="false">http://www.chrisbaldelomar.com/webplantmedia2/?p=57</guid>
		<description><![CDATA[Here is an example of a constraint program written in Prolog. SEND + MORE ------ MONEY 1 2 3 4 5 6 7 8 9 10 11 smm&#40;&#91;S,E,N,D,M,O,R,Y&#93;, Type&#41; :- domain&#40;&#91;S,E,N,D,M,O,R,Y&#93;, 0, 9&#41;, S#&#38;gt;0, M#&#38;gt;0, all_different&#40;&#91;S,E,N,D,M,O,R,Y&#93;&#41;, sum&#40;S,E,N,D,M,O,R,Y&#41;, labeling&#40;Type, &#91;S,E,N,D,M,O,R,Y&#93;&#41;. &#160; sum&#40;S,E,N,D,M,O,R,Y&#41; :- 1000*S + 100*E + 10*N + D + 1000*M + 100*O + 10*R [...]]]></description>
			<content:encoded><![CDATA[<p>Here is an example of a constraint program written in Prolog.</p>
<pre>  SEND
+ MORE
------
 MONEY
</pre>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="prolog" style="font-family:monospace;">smm<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span>S<span style="color: #339933;">,</span>E<span style="color: #339933;">,</span>N<span style="color: #339933;">,</span>D<span style="color: #339933;">,</span>M<span style="color: #339933;">,</span>O<span style="color: #339933;">,</span>R<span style="color: #339933;">,</span>Y<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> Type<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:-</span>
 domain<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span>S<span style="color: #339933;">,</span>E<span style="color: #339933;">,</span>N<span style="color: #339933;">,</span>D<span style="color: #339933;">,</span>M<span style="color: #339933;">,</span>O<span style="color: #339933;">,</span>R<span style="color: #339933;">,</span>Y<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #800080;">0</span><span style="color: #339933;">,</span> <span style="color: #800080;">9</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
 S#<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #800080;">0</span><span style="color: #339933;">,</span> M#<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #800080;">0</span><span style="color: #339933;">,</span>
 all_different<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span>S<span style="color: #339933;">,</span>E<span style="color: #339933;">,</span>N<span style="color: #339933;">,</span>D<span style="color: #339933;">,</span>M<span style="color: #339933;">,</span>O<span style="color: #339933;">,</span>R<span style="color: #339933;">,</span>Y<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
 sum<span style="color: #009900;">&#40;</span>S<span style="color: #339933;">,</span>E<span style="color: #339933;">,</span>N<span style="color: #339933;">,</span>D<span style="color: #339933;">,</span>M<span style="color: #339933;">,</span>O<span style="color: #339933;">,</span>R<span style="color: #339933;">,</span>Y<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
 labeling<span style="color: #009900;">&#40;</span>Type<span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span>S<span style="color: #339933;">,</span>E<span style="color: #339933;">,</span>N<span style="color: #339933;">,</span>D<span style="color: #339933;">,</span>M<span style="color: #339933;">,</span>O<span style="color: #339933;">,</span>R<span style="color: #339933;">,</span>Y<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
&nbsp;
sum<span style="color: #009900;">&#40;</span>S<span style="color: #339933;">,</span>E<span style="color: #339933;">,</span>N<span style="color: #339933;">,</span>D<span style="color: #339933;">,</span>M<span style="color: #339933;">,</span>O<span style="color: #339933;">,</span>R<span style="color: #339933;">,</span>Y<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:-</span>
 <span style="color: #800080;">1000</span><span style="color: #339933;">*</span>S <span style="color: #339933;">+</span> <span style="color: #800080;">100</span><span style="color: #339933;">*</span>E <span style="color: #339933;">+</span> <span style="color: #800080;">10</span><span style="color: #339933;">*</span>N <span style="color: #339933;">+</span> D <span style="color: #339933;">+</span>
 <span style="color: #800080;">1000</span><span style="color: #339933;">*</span>M <span style="color: #339933;">+</span> <span style="color: #800080;">100</span><span style="color: #339933;">*</span>O <span style="color: #339933;">+</span> <span style="color: #800080;">10</span><span style="color: #339933;">*</span>R <span style="color: #339933;">+</span> E #<span style="color: #339933;">=</span>
 <span style="color: #800080;">10000</span><span style="color: #339933;">*</span>M <span style="color: #339933;">+</span> <span style="color: #800080;">1000</span><span style="color: #339933;">*</span>O <span style="color: #339933;">+</span> <span style="color: #800080;">100</span><span style="color: #339933;">*</span>N <span style="color: #339933;">+</span> <span style="color: #800080;">10</span><span style="color: #339933;">*</span>E <span style="color: #339933;">+</span> Y<span style="color: #339933;">.</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.webplantmedia.com/prolog/2010/03/constraint-programming-send-more-money-in-prolog/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced
Object Caching 266/302 objects using disk: basic

Served from: www.webplantmedia.com @ 2012-05-18 07:30:52 -->
