<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Constraint Applications Blog by Helmut Simonis</title>
	<atom:link href="http://hsimonis.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://hsimonis.wordpress.com</link>
	<description>Lots of Constraint Applications</description>
	<lastBuildDate>Sun, 01 Jan 2012 13:52:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='hsimonis.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Constraint Applications Blog by Helmut Simonis</title>
		<link>http://hsimonis.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://hsimonis.wordpress.com/osd.xml" title="Constraint Applications Blog by Helmut Simonis" />
	<atom:link rel='hub' href='http://hsimonis.wordpress.com/?pushpress=hub'/>
		<item>
		<title>CP Conference Application Track: Call for Papers</title>
		<link>http://hsimonis.wordpress.com/2011/03/23/cp-conference-application-track-call-for-papers/</link>
		<comments>http://hsimonis.wordpress.com/2011/03/23/cp-conference-application-track-call-for-papers/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 09:31:24 +0000</pubDate>
		<dc:creator>hsimonis</dc:creator>
				<category><![CDATA[CP Conference]]></category>

		<guid isPermaLink="false">http://hsimonis.wordpress.com/?p=538</guid>
		<description><![CDATA[If you are reading this blog, then you probably are a prime candidate for the following call for papers: http://www.dmi.unipg.it/cp2011/cfa.html We are looking for interesting papers describing running applications using constraint technology. There is still a month until the submission &#8230; <a href="http://hsimonis.wordpress.com/2011/03/23/cp-conference-application-track-call-for-papers/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=538&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If you are reading this blog, then you probably are a prime candidate for the following call for papers:</p>
<p><a href="http://www.dmi.unipg.it/cp2011/cfa.html">http://www.dmi.unipg.it/cp2011/cfa.html</a></p>
<p>We are looking for interesting papers describing running applications using constraint technology. There is still a month until the submission deadline, so start writing <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hsimonis.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hsimonis.wordpress.com/538/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hsimonis.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hsimonis.wordpress.com/538/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hsimonis.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hsimonis.wordpress.com/538/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hsimonis.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hsimonis.wordpress.com/538/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hsimonis.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hsimonis.wordpress.com/538/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hsimonis.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hsimonis.wordpress.com/538/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hsimonis.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hsimonis.wordpress.com/538/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=538&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hsimonis.wordpress.com/2011/03/23/cp-conference-application-track-call-for-papers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0e4ad1c6607ae7e663511a42106ab7b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hsimonis</media:title>
		</media:content>
	</item>
		<item>
		<title>Another Guest Post</title>
		<link>http://hsimonis.wordpress.com/2010/09/30/another-guest-post/</link>
		<comments>http://hsimonis.wordpress.com/2010/09/30/another-guest-post/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 10:25:49 +0000</pubDate>
		<dc:creator>hsimonis</dc:creator>
				<category><![CDATA[Asides]]></category>

		<guid isPermaLink="false">http://hsimonis.wordpress.com/?p=530</guid>
		<description><![CDATA[Welcome to blog contributor Roberto Castañeda Lozano, whose post on Financial Markets, Random Testing and Constraint Programming describes a system he developed as part of his Master&#8217;s thesis (which won a prize by the Swedish AI Society this year). Two &#8230; <a href="http://hsimonis.wordpress.com/2010/09/30/another-guest-post/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=530&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Welcome to blog contributor Roberto Castañeda Lozano, whose post on <a href="http://hsimonis.wordpress.com/2010/09/30/financial-markets-random-testing-and-constraint-programming/">Financial Markets, Random Testing and Constraint Programming</a> describes a system he developed as part of his Master&#8217;s thesis (which won a <a href="http://www.sais.se/sais2010/">prize by the Swedish AI Society</a> this year).</p>
<p>Two guest blog entries in a row, do you see a trend here? If you have developed a constraint application and want to present it to the world in a non-technical way, get in touch!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hsimonis.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hsimonis.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hsimonis.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hsimonis.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hsimonis.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hsimonis.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hsimonis.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hsimonis.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hsimonis.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hsimonis.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hsimonis.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hsimonis.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hsimonis.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hsimonis.wordpress.com/530/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=530&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hsimonis.wordpress.com/2010/09/30/another-guest-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0e4ad1c6607ae7e663511a42106ab7b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hsimonis</media:title>
		</media:content>
	</item>
		<item>
		<title>Financial Markets, Random Testing and Constraint Programming</title>
		<link>http://hsimonis.wordpress.com/2010/09/30/financial-markets-random-testing-and-constraint-programming/</link>
		<comments>http://hsimonis.wordpress.com/2010/09/30/financial-markets-random-testing-and-constraint-programming/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 10:05:24 +0000</pubDate>
		<dc:creator>Roberto Castañeda Lozano</dc:creator>
				<category><![CDATA[2010]]></category>
		<category><![CDATA[66 Auxiliary to Financial and Insurance Activities]]></category>
		<category><![CDATA[66.11 Administration of Financial Markets]]></category>
		<category><![CDATA[CP Conference]]></category>
		<category><![CDATA[K Financial and Insurance Activities]]></category>
		<category><![CDATA[continuous double auction]]></category>
		<category><![CDATA[financial markets]]></category>
		<category><![CDATA[random testing]]></category>
		<category><![CDATA[test oracle]]></category>

		<guid isPermaLink="false">http://hsimonis.wordpress.com/?p=486</guid>
		<description><![CDATA[Nowadays, all major financial markets use computer trading systems to support their trading activities. Because failures in these systems can cause serious economic damage, reliability is a top goal in their development. The complex functionality that trading systems deliver makes &#8230; <a href="http://hsimonis.wordpress.com/2010/09/30/financial-markets-random-testing-and-constraint-programming/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=486&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Nowadays, all major financial markets use computer trading systems to support their trading activities. Because <a href="http://royal.pingdom.com/2008/10/30/when-trading-stops-major-stock-exchange-outages-this-decade/">failures in these systems</a> can cause serious economic damage, reliability is a top goal in their development.</p>
<p><img src="http://hsimonis.files.wordpress.com/2010/09/stock_exchange.jpg?w=640" alt="Stock Exchange. By Travel Aficionado, from http://www.flickr.com/photos/travel_aficionado/2396814840/" /></p>
<p>The <a href="http://www.nyse.com/pdfs/fact_sheet_nyse_orders.pdf">complex functionality</a> that trading systems deliver makes testing them challenging. A tester with knowledge in the financial domain can generate test cases that cover the most usual trading scenarios, but it is practically impossible to come up with all the situations that will occur in production. At <a href="http://www.cinnober.com/">Cinnober</a>, the company that develops the trading system <em>TRADExpress</em>, the manual generation of test cases is complemented with random testing, as an attempt to cover uncommon (yet possible) scenarios.<br />
<span id="more-486"></span><br />
For random testing to be effective, an automatic mechanism that decides the correctness of each random test is needed. This mechanism is commonly called <em>test oracle</em>, and it can range from a simple crash check to an independent implementation of the system&#8217;s functionality.</p>
<p>At Cinnober fairly simple test oracles were used, which were only able to detect failures such as negative prices in trades and system crashes. Encouraged by previous success in applying random testing, we decided to develop a more complete test oracle. The test oracle would be accurate and cheap to develop and maintain, while covering a significant part of the <em>TRADExpress</em> functionality. As the core functionality of the system can be seen as a combinatorial problem (matching <em>bid</em> and <em>ask</em> orders placed in an <a href="http://en.wikipedia.org/wiki/Order_book_(trading)">order book</a>), we chose to use a constraint model of it as the test oracle.</p>
<h2>The functionality to test: continuous double auction</h2>
<p>The main mechanism to match orders is called <em>continuous <a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.84.4644&amp;rep=rep1&amp;type=pdf">double auction</a></em> (CDA). In a CDA, orders are stored in an order book and matched against each other as soon as their constraints allow it. The main operations that a trader can perform are to enter, update and cancel orders. A trade order usually includes, at least, these attributes:</p>
<ul>
<li>Side (bid or ask)</li>
<li>Quantity</li>
<li>Minimum acceptable quantity</li>
<li>Limit price (worst acceptable price)</li>
</ul>
<p>Let&#8217;s see now how our CDA works through an example. Consider this order book, where orders are represented following the notation (quantity [&gt;= minimum acceptable quantity] @ price):</p>
<table border="1" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<th>Bid orders</th>
<th>Ask orders</th>
</tr>
<tr>
<td>b1: 50 (&gt;= 20) @ 24</td>
<td>a1: 15 @ 23</td>
</tr>
<tr>
<td>b2: 50 @ 22</td>
<td></td>
</tr>
</tbody>
</table>
<p>In this state, no match between bid and ask orders is possible: the price limit constraint allows a1 to match only with b1, but this is not possible because the minimum quantity constraint of b1 cannot be satisfied. What happens if a trader enters a new order a2 with quantity 40 and limit price 24?</p>
<table border="1" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<th>Bid orders</th>
<th>Ask orders</th>
</tr>
<tr>
<td>b1: 50 (&gt;= 20) @ 24</td>
<td>a1: 15 @ 23</td>
</tr>
<tr>
<td>b2: 50 @ 22</td>
<td>-&gt; a2: 40 @ 24</td>
</tr>
</tbody>
</table>
<p>The new order a2 gets lower priority than a1 because of its worse limit price. But now a1 and a2 can satisfy together the minimum quantity constraint of b1. Therefore the orders are matched, resulting in b1 trading 15 units with a1 and 35 units with a2. After the trade, b1 and a1 are totally filled, and the quantity of a2 is updated:</p>
<table border="1" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<th>Bid orders</th>
<th>Ask orders</th>
</tr>
<tr>
<td>b2: 50 @ 22</td>
<td>a2: 5 @ 24</td>
</tr>
</tbody>
</table>
<h2>The test oracle</h2>
<p>As the example shows, the CDA problem is very naturally described in terms of constraints, and an optimization objective: to maximize the total traded quantity between orders in every match. This makes the implementation very direct, which is a good feature for a test oracle: a MiniZinc <a href="http://hsimonis.wordpress.com/testing-example-minizinc/">formulation of the problem</a> captures the logic explained above in less than 100 lines of code! (get some example data files <a href="http://4c.ucc.ie/~hsimonis/blog/cda_examples.zip">here</a>). Note that the actual model used as a test oracle is, unfortunately, a little more complex: for example, it is decomposed into two steps to reflect the expected behavior of <em>TRADExpress</em>.</p>
<p><img src="http://hsimonis.files.wordpress.com/2010/09/bug.jpg?w=640" alt="code bug. By gui.tavares, from http://www.flickr.com/photos/guitavares/1703252007/" /></p>
<h2>The outcome</h2>
<p>The most interesting part came at the end, when we ran the tests: after a few random trader operations, the constraint-based oracle reported system failures! The failures were triggered by complex scenarios, which could not be anticipated by a more <em>systematic</em> process based on the manual selection of test cases. Such is the result of combining the innocence of random testing with the soundness of a constraint-based oracle.</p>
<h2>To learn more</h2>
<p>The complete model is given in the following paper:</p>
<ul>
<li><a href="http://web.it.kth.se/~cschulte/papers/CastanedaSchulteWahlberg_CP_2010.pdf">Testing Continuous Double Auctions with a Constraint-based Oracle</a>, <a href="http://www.sics.se/people/rcas">Roberto Castañeda Lozano</a>, <a href="http://web.it.kth.se/~cschulte/">Christian Schulte</a>, Lars Wahlberg. Sixteenth International Conference on Principles and Practice of Constraint Programming, 2010.</li>
</ul>
<p>This application was developed as a master&#8217;s thesis between the <a href="http://www.kth.se/?l=en_UK">Royal Institute of Technology</a> (Sweden) and Cinnober Financial Technology AB. Further detail and background information is given in the master&#8217;s thesis report:</p>
<ul>
<li>Roberto Castañeda Lozano, <a href="http://web.it.kth.se/~cschulte/teaching/theses/TRITA-ICT-EX-2010:69.pdf">Constraint Programming for Random Testing of a Trading System</a>. Royal Institute of Technology, Stockholm, Sweden, Master thesis, TRITA-ICT-EX-2010:69, 2010.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hsimonis.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hsimonis.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hsimonis.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hsimonis.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hsimonis.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hsimonis.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hsimonis.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hsimonis.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hsimonis.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hsimonis.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hsimonis.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hsimonis.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hsimonis.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hsimonis.wordpress.com/486/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=486&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hsimonis.wordpress.com/2010/09/30/financial-markets-random-testing-and-constraint-programming/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f80aa86c69a2a7713af4f4c1d386941?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robertocastaneda</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/09/stock_exchange.jpg" medium="image">
			<media:title type="html">Stock Exchange. By Travel Aficionado, from http://www.flickr.com/photos/travel_aficionado/2396814840/</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/09/bug.jpg" medium="image">
			<media:title type="html">code bug. By gui.tavares, from http://www.flickr.com/photos/guitavares/1703252007/</media:title>
		</media:content>
	</item>
		<item>
		<title>Context-Sensitive Call Control using Constraints and Rules</title>
		<link>http://hsimonis.wordpress.com/2010/09/03/context-sensitive-call-control-using-constraints-and-rules/</link>
		<comments>http://hsimonis.wordpress.com/2010/09/03/context-sensitive-call-control-using-constraints-and-rules/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 14:29:53 +0000</pubDate>
		<dc:creator>Luis Quesada</dc:creator>
				<category><![CDATA[2008]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[61 Telecommunications]]></category>
		<category><![CDATA[61.2 Wireless Telecommunications]]></category>
		<category><![CDATA[Choco]]></category>
		<category><![CDATA[CP Conference]]></category>
		<category><![CDATA[ECAI]]></category>
		<category><![CDATA[J Information and Communications]]></category>
		<category><![CDATA[JAIR]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[prototype]]></category>

		<guid isPermaLink="false">http://hsimonis.wordpress.com/?p=462</guid>
		<description><![CDATA[Telecommunications services like instant messaging or internet telephony bring increased flexibility to communicate at home, in the office or on the move. Their pervasiveness is also a source of disruptions and intrusions. Service providers are therefore looking for personalisation solutions &#8230; <a href="http://hsimonis.wordpress.com/2010/09/03/context-sensitive-call-control-using-constraints-and-rules/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=462&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Telecommunications services like instant messaging or internet telephony bring increased flexibility to communicate at home, in the office or on the move. Their pervasiveness is also a source of disruptions and intrusions. Service providers are therefore looking for personalisation solutions allowing users to control the timing and modalities of their communications. In the case of telephony services, personalisation solutions are built around call control features. Technically, a feature is an increment of functionality that modifies the basic system behaviour. Dozens of call control features have been created to address concerns such as mobility, privacy, presentation,  or billing (see Figure 1).</p>
<div id="attachment_473" class="wp-caption alignnone" style="width: 650px"><a href="http://hsimonis.files.wordpress.com/2010/09/screenshot001.png"><img class="size-full wp-image-473" title="ScreenShot001" src="http://hsimonis.files.wordpress.com/2010/09/screenshot001.png?w=640&#038;h=284" alt="" width="640" height="284" /></a><p class="wp-caption-text">Figure 1: Feature and Feature Types</p></div>
<p>Features are designed as independent separate module and  are exposed through feature catalogs (see Figure 2). A user selects from the catalog the set of features that he wants to be active during the session in which he is involved. He may also want to sequence the activation of the selected features in a particular way to better suit his needs (e.g., he may want to filter his incoming calls before diverting them). The features that the user has selected plus the ordering constraints that he has imposed on them constitute the feature subscription of the user.</p>
<div id="attachment_468" class="wp-caption alignnone" style="width: 650px"><a href="http://hsimonis.files.wordpress.com/2010/09/yourcallcat1.png"><img class="size-full wp-image-468" title="YourCallCat" src="http://hsimonis.files.wordpress.com/2010/09/yourcallcat1.png?w=640&#038;h=479" alt="" width="640" height="479" /></a><p class="wp-caption-text">Figure 2: An Example of a Catalog</p></div>
<p><span id="more-462"></span>As features are designed independently, each feature is  designed under the assumption that it is the only activated feature during the call. This assumption is what causes the interaction between features. A feature interaction is a way in which a feature modifies or influences the behavior of another feature in generating the system&#8217;s overall behavior. Undesirable interactions must be detected and avoided when users configure their subscriptions.</p>
<div id="attachment_470" class="wp-caption alignnone" style="width: 650px"><a href="http://hsimonis.files.wordpress.com/2010/09/featureinteractionexample.png"><img class="size-full wp-image-470" title="featureInteractionExample" src="http://hsimonis.files.wordpress.com/2010/09/featureinteractionexample.png?w=640&#038;h=277" alt="" width="640" height="277" /></a><p class="wp-caption-text">Figure 3: Example of Undesirable Feature Interaction</p></div>
<p>In Figure 3, we show an  example of  an undesirable interaction: <em>Y </em>has two features in his  subscription: a &#8220;terminating call screening&#8221; feature and a &#8220;call  forwarding unconditional&#8221; feature. <em>Y</em> has requested that the &#8220;call  forwarding unconditional&#8221; feature must be activated before the &#8220;terminating call screening&#8221; feature. As the &#8220;call forwarding  unconditional&#8221; changes the destination of the call, the &#8220;terminating  call screening&#8221; feature is never activated. So when <em>X</em> calls <em>Y</em>, <em>X</em> will always be re-directed to <em>Z</em>, even if <em>X</em> is the list of banned  callers. A simple fix is to inverse the order of activation (as shown in  Figure 4).</p>
<div id="attachment_469" class="wp-caption alignnone" style="width: 650px"><a href="http://hsimonis.files.wordpress.com/2010/09/featureinteractionavoided.png"><img class="size-full wp-image-469" title="featureInteractionAvoided" src="http://hsimonis.files.wordpress.com/2010/09/featureinteractionavoided.png?w=640&#038;h=288" alt="" width="640" height="288" /></a><p class="wp-caption-text">Figure 4: Avoiding the Undesirable Feature Interaction</p></div>
<p>Key  requirements that drive the design of  feature-rich telephony systems    are: the ability for users to parametrise features (e.g., &#8220;Call-Divert  to mobile&#8221;), address caller and callee scenarios (e.g., &#8220;Do-Not-Disturb and Speed-Dial&#8221;), combine or sequence features (e.g., &#8220;Call-Screen then Call-Divert&#8221;), request context-sensitive feature  configurations (e.g., &#8220;Mute during seminars&#8221;), and express preferences  or priorities (e.g., call policies imposed on a workforce). Different  approaches ranging from scripting to policy enforcement have been  proposed to meet these requirements. None, however, provides a  comprehensive personalisation solution to:  resolve undesirable feature  interactions arising due to compositionality;  manage conflicting  preferences; and handle the uncertainty inherent to context data. To  address these issues we designed a system for  Context-sensitive  Configuration of Call Control features using Rules (<strong>4CRules</strong>)  [3].</p>
<p><strong>4CRules</strong> allows a user to describe the behaviour of the communication service through a set of Feature Configuration Rules (<em>FCR</em>s). Conceptually, a <em>FCR</em> is  weighted and associates a context condition to a feature subscription, which is defined to be a set of  features, and a set of precedence constraints prescribed by a user and the feature catalogue.  Each time a user&#8217;s context is updated, the engine of <strong>4CRules</strong> infers a sequence of features from his/her set of <em>FCR</em>s.  %and a catalogue of precedence constraints. This sequence  is free of undesirable feature interactions  and it is  applied to all calls involving the user until his context changes again.</p>
<p>A set of <em>FCR</em>s that are applicable for  a given current context of a user  could  be inconsistent due to a variety of reasons as explained in [3]. The <strong>4CRules</strong> engine computes a  maximal subset of the applicable <em>FCR</em>s that is consistent and optimal in some sense. The optimality is  based on a strict weak ordering over <em>FCR</em>s, which  is obtained by evaluating a value for each <em>FCR</em> by combining  priority of the <em>FCR</em>, concreteness of the context condition of the <em>FCR</em>, and  probability of applicability of the <em>FCR</em>. The principle of the presented approach is to view <em>FCR</em>s processing as a constraint optimisation task.  Overall, the method ensures maximum adherence to user requirements and interaction constraints.</p>
<div id="attachment_471" class="wp-caption alignnone" style="width: 650px"><a href="http://hsimonis.files.wordpress.com/2010/09/yourcallui.png"><img class="size-full wp-image-471" title="YourCallUI" src="http://hsimonis.files.wordpress.com/2010/09/yourcallui.png?w=640&#038;h=479" alt="" width="640" height="479" /></a><p class="wp-caption-text">Figure 5: Subscription Interface</p></div>
<p>Figure 5 shows a snapshot of the widget-based web interface to the subscription configuration system. The interface exposes the catalogue from which users can pick and sequence features through drag-and-drop operations and the context dimensions. The constraint engine then guides the user towards consistent subscriptions in different ways:</p>
<ul>
<li><strong>verification</strong>: checking the consistency of the input subscription;</li>
<li><strong>partial completion</strong>: if consistent, extend it with entailed precedence constraints;</li>
<li><strong>filtering</strong>: if consistent, filter out the set of additional features and precedence constraints that would make it inconsistent;</li>
<li><strong>completion</strong>: if consistent, suggest complete and consistent extensions;</li>
<li><strong>revision</strong>: if inconsistent, suggest consistent and optimal relaxations.</li>
</ul>
<p>These services are implemented by modeling and solving the feature subscription configuration problem as a combinatorial problem [4]. The constraint engine implements branch-and-bound and constraint filtering algorithms to compute relaxations and graph algorithms (topogical sort and transitive closure) for the other tasks. It is programmed with the Java-based constraint programming library Choco [2]. An alternative approach is to compile the catalogue into a binary decision diagram  in the offline phase and based on the input of a user  use polynomial time operations in the online phase [1]. The subscription interface is implemented using JavaScript, Java Server Pages and Ajax techniques. The service delivery platform is itself based on the Session Initiation Protocol [5, 6] with routers and features implemented as SIP servlets.</p>
<h2>To learn more</h2>
<ol>
<li>Tarik Hadzic, David Lesaint, Deepak Mehta, Barry O’Sullivan, Luis Quesada, and NicWilson. A BDD Approach to the Feature Subscription Problem. In Prestigous Applications of Intelligent Systems (PAIS), Patras, Greece, July 2008. To appear.</li>
<li>F. Laburthe and N. Jussien. JChoco: A java library for constraint programming.</li>
<li>David Lesaint, Deepak Mehta, Barry O’Sullivan, Luis Quesada, and Nic Wilson. Context-Sensitive Call Control using Constraints and Rules. In Proceedings of the 16th International Conference on Principles and Practice of Constraint Programming, St Andrews, Scotland, 2010. Springer.</li>
<li>David Lesaint, Deepak Mehta, Barry O’Sullivan, Luis Quesada, and Nic Wilson. Developing approaches for solving a telecommunications feature subscription problem. Journal of Artificial Intelligence Research (JAIR), 2010.</li>
<li>Jonathan Rosenberg, Henning Schulzrinne, Gonzalo Camarillo, Alan B. Johnston, Jon Peterson, Robert Sparks, Mark Handley, and Eve M. Schooler. SIP: Session Initiation Protocol. RFC 3261 (standard), IETF, June 2002. Updated by RFCs 3265, 3853, 4320.</li>
<li>Robert Sparks. SIP: Basics and Beyond. ACM Queue, 5(2):22–33, March 2007.</li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hsimonis.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hsimonis.wordpress.com/462/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hsimonis.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hsimonis.wordpress.com/462/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hsimonis.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hsimonis.wordpress.com/462/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hsimonis.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hsimonis.wordpress.com/462/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hsimonis.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hsimonis.wordpress.com/462/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hsimonis.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hsimonis.wordpress.com/462/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hsimonis.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hsimonis.wordpress.com/462/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=462&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hsimonis.wordpress.com/2010/09/03/context-sensitive-call-control-using-constraints-and-rules/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/96ecd9a27b318eeee7f8a914ca9203ec?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">loqr</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/09/screenshot001.png" medium="image">
			<media:title type="html">ScreenShot001</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/09/yourcallcat1.png" medium="image">
			<media:title type="html">YourCallCat</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/09/featureinteractionexample.png" medium="image">
			<media:title type="html">featureInteractionExample</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/09/featureinteractionavoided.png" medium="image">
			<media:title type="html">featureInteractionAvoided</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/09/yourcallui.png" medium="image">
			<media:title type="html">YourCallUI</media:title>
		</media:content>
	</item>
		<item>
		<title>Welcome to the First Guest Contribution</title>
		<link>http://hsimonis.wordpress.com/2010/09/03/welcome-to-the-first-guest-contribution/</link>
		<comments>http://hsimonis.wordpress.com/2010/09/03/welcome-to-the-first-guest-contribution/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 14:29:13 +0000</pubDate>
		<dc:creator>hsimonis</dc:creator>
				<category><![CDATA[Asides]]></category>

		<guid isPermaLink="false">http://hsimonis.wordpress.com/?p=478</guid>
		<description><![CDATA[The next blog entry will be a guest contribution by Luis Quesda from 4C, who describes joint work with David Lesaint, Deepak Mehta, Barry O&#8217; Sullivan and Nic Wilson on a prototype call control system developed by a joint project &#8230; <a href="http://hsimonis.wordpress.com/2010/09/03/welcome-to-the-first-guest-contribution/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=478&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The next blog entry will be a guest contribution by Luis Quesda from 4C, who describes joint work with David Lesaint, Deepak Mehta, Barry O&#8217; Sullivan and Nic Wilson on a prototype call control system developed by a joint project of BT and 4C.</p>
<p>I&#8217;m sure you will enjoy this description of the 4CRules system, and perhaps this will encourage others to show us their work as well <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hsimonis.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hsimonis.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hsimonis.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hsimonis.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hsimonis.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hsimonis.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hsimonis.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hsimonis.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hsimonis.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hsimonis.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hsimonis.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hsimonis.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hsimonis.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hsimonis.wordpress.com/478/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=478&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hsimonis.wordpress.com/2010/09/03/welcome-to-the-first-guest-contribution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0e4ad1c6607ae7e663511a42106ab7b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hsimonis</media:title>
		</media:content>
	</item>
		<item>
		<title>Preview of Applications at CP2010 in St Andrews</title>
		<link>http://hsimonis.wordpress.com/2010/08/30/preview-of-applications-at-cp2010-in-st-andrews/</link>
		<comments>http://hsimonis.wordpress.com/2010/08/30/preview-of-applications-at-cp2010-in-st-andrews/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 21:38:40 +0000</pubDate>
		<dc:creator>hsimonis</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://hsimonis.wordpress.com/?p=454</guid>
		<description><![CDATA[Just a short note on the upcoming CP2010 conference in St. Andrews. It is a good year for constraint applications, with quite a number of application talks at the conference. I&#8217;ve got the following list from the conference programme: Tuesday &#8230; <a href="http://hsimonis.wordpress.com/2010/08/30/preview-of-applications-at-cp2010-in-st-andrews/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=454&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://hsimonis.files.wordpress.com/2010/08/standrews.jpg"><img class="alignnone size-full wp-image-455" title="StAndrews" src="http://hsimonis.files.wordpress.com/2010/08/standrews.jpg?w=640&#038;h=103" alt="" width="640" height="103" /></a>Just a short note on the upcoming <a href="http://cp2010.cs.st-andrews.ac.uk/index.php">CP2010 conference in St. Andrews</a>. It is a good year for constraint applications, with quite a number of application talks at the conference. I&#8217;ve got the following list from the conference <a href="http://cp2010.cs.st-andrews.ac.uk/program.php">programme</a>:</p>
<p>Tuesday</p>
<ul>
<li>14:00 A Safe and Flexible CP-based Approach for Velocity Tuning Problems. Michaël Soulignac, Rueher Michel, Patrick Taillibert</li>
<li>14:25 Constraint Programming for Mining n-ary Patterns. Mehdi Khiari, Patrice Boizumault, Bruno Cremilleux</li>
<li>14:50 Testing Continuous Double Auctions with a Constraint-based Oracle. Christian Schulte, Roberto Castañeda Lozano, Lars Wahlberg</li>
<li>15:15 Global Constraints on Feature Models. Ahmet Serkan Karata¸, Halit Oğuztüzün, Ali Doğru</li>
</ul>
<p>Friday</p>
<ul>
<li>11:00 Contingency Plans for Air Traffic Management. Karl Sundequist Blomdahl, Pierre Flener, Justin Pearson</li>
<li>11:25 An Integrated Business Rules and Constraints Approach to Data Centre Capacity Management. Roman van der Krogt, Jacob Feldman, James Little, David Stynes</li>
<li>11:50 Load Balancing and Almost Symmetries for RAMBO Quorum Hosting. Laurent Michel, Alexander Shvartsman, Elaine Sonderegger, Pascal Van Hentenryck</li>
<li>12:15 Context-Sensitive Call Control using Constraints and Rules. David Lesaint, Deepak Mehta, Barry O’Sullivan, Nic Wilson, Luis Quesada</li>
<li>14:00 An Integrated Modelling, Debugging, and Visualisation Environment for G12. Andreas Bauer, Viorica Botea, Mark Brown, Matt Gray, Daniel Harabor, John Slaney</li>
<li>14:25 An Empirical Study of Optimization for Maximizing Diffusion in Networks. Kiyan Ahmadizadeh, Bistra Dilkina, Carla Gomes, Ashish Sabharwal</li>
</ul>
<p>The best application paper will be presented on Wednesday</p>
<ul>
<li>10:00 <strong>Distinguished paper (Applications Track)</strong> Applying Constraint Programming to Identification and Assignment of Service Professionals. Sigal Asaf, Haggai Eran, Yossi Richter, Daniel P. Connors, Donna L.Gresh, Julio Ortega, Michael J Mcinnis</li>
</ul>
<p>I hope to learn more about these systems at the conference, and to perhaps convince some of the authors to guest-edit a blog post here. Stay tuned!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hsimonis.wordpress.com/454/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hsimonis.wordpress.com/454/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hsimonis.wordpress.com/454/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hsimonis.wordpress.com/454/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hsimonis.wordpress.com/454/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hsimonis.wordpress.com/454/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hsimonis.wordpress.com/454/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hsimonis.wordpress.com/454/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hsimonis.wordpress.com/454/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hsimonis.wordpress.com/454/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hsimonis.wordpress.com/454/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hsimonis.wordpress.com/454/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hsimonis.wordpress.com/454/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hsimonis.wordpress.com/454/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=454&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hsimonis.wordpress.com/2010/08/30/preview-of-applications-at-cp2010-in-st-andrews/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0e4ad1c6607ae7e663511a42106ab7b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hsimonis</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/08/standrews.jpg" medium="image">
			<media:title type="html">StAndrews</media:title>
		</media:content>
	</item>
		<item>
		<title>Bandwidth on Demand</title>
		<link>http://hsimonis.wordpress.com/2010/08/16/bandwidth-on-demand/</link>
		<comments>http://hsimonis.wordpress.com/2010/08/16/bandwidth-on-demand/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 22:30:03 +0000</pubDate>
		<dc:creator>hsimonis</dc:creator>
				<category><![CDATA[2003]]></category>
		<category><![CDATA[61 Telecommunications]]></category>
		<category><![CDATA[61.1 Wired Telecommunnications]]></category>
		<category><![CDATA[ECLiPSe]]></category>
		<category><![CDATA[J Information and Communications]]></category>
		<category><![CDATA[live application]]></category>
		<category><![CDATA[Network]]></category>

		<guid isPermaLink="false">http://hsimonis.wordpress.com/?p=428</guid>
		<description><![CDATA[Bandwidth on Demand (BoD) describes a network management problem, where users can request large amounts of bandwidth, but only for some fixed time interval. The network management tool must find out if such a request can be accommodated on the &#8230; <a href="http://hsimonis.wordpress.com/2010/08/16/bandwidth-on-demand/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=428&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bandwidth on Demand (BoD) describes a network management problem, where users can request large amounts of bandwidth, but only for some fixed time interval. The network management tool must find out if such a request can be accommodated on the network, and if yes, must provision the network to provide the service at its start-time, and then remove the provisioning at the end of the service period. Parc Technologies and IC-Parc developed such a Bandwidth on Demand solution for Schlumberger in 2003, which was installed on their dexa.net network. I was working on the solver side of this project with Quanshi Xia from IC-Parc, while Nick Bradshaw and Peter Rylance from Parc Technologies worked on the overall system design and implementation. The project was managed by Barry Richards, the director of IC-Parc.</p>
<div id="attachment_431" class="wp-caption alignnone" style="width: 458px"><a href="http://hsimonis.files.wordpress.com/2010/08/seismic_vizroom.jpg"><img class="size-full wp-image-431" title="Photography by Keith Rinearson PhotoArt Phone (405) 557-0924" src="http://hsimonis.files.wordpress.com/2010/08/seismic_vizroom.jpg?w=640" alt=""   /></a><p class="wp-caption-text">Need for BoD: 3D Seismic Data Analysis (from askchesapeake.com)</p></div>
<h2><span id="more-428"></span>Why Schlumberger?</h2>
<div id="attachment_433" class="wp-caption alignleft" style="width: 332px"><a href="http://hsimonis.files.wordpress.com/2010/08/drillingtools.png"><img class="size-full wp-image-433" title="drillingtools" src="http://hsimonis.files.wordpress.com/2010/08/drillingtools.png?w=640" alt=""   /></a><p class="wp-caption-text">A Data Collector for Well Logging (Schlumberger)</p></div>
<p>Why is Bandwidth on Demand an important problem for Schlumberger? <a href="http://en.wikipedia.org/wiki/Schlumberger">Schlumberger </a>is one the of largest oil-field services providers in the world. Historically, <a href="http://en.wikipedia.org/wiki/Well_logging">well logging</a> is at the core of its business, and today the company offers many different sensor packs that can be placed in the drill hole. The picture on the left shows such a sensor tool, which looks like yet another piece of pipe in the drill stack, but contains different types of sensors plus data collection and forwarding equipment, operating in one of the toughest environments imaginable. In modern well logging equipment, a multitude of data (up to 12Mbs is quoted) can be collected while the drilling is ongoing. Some of that data is used directly at the drill site for control of the drilling operation, but much of the data must be analyzed centrally in a data centre. Historically, the logging data (reels of data tape) would be sent by courier to the central office, as the network connection to the well head did not have enough capacity. Delays of several days would ensue. Modern <a href="http://en.wikipedia.org/wiki/VSAT">VSAT satellite links</a> and optical fibres along-side pipelines do provide enough capacity to carry this data to the network backbone. In the data centre the data is analyzed and visualized with a multitude of tools. The drilling operation is often controlled by a consortium of companies, all of which must be involved in the decision-making process. As their analysis experts are in very high demand, it is impossible to require physical meetings for these discussions. Instead, video conferencing supported by shared data visualization is used to connect multiple sites around the world. As the cost of drilling operations can be very high, all this IT infrastructure must work as advertised, i.e. faults in data collection, transport and analysis may not delay the drilling. One way of achieving this is by using a specialized, high-performance network.</p>
<h2>A Global Enterprise Network</h2>
<p>The dexa.net network was designed as a global enterprise network, providing connectivity to places that normal ISPs do not go, like off-shore oil fields, or seismic exploration ships. The &#8220;last mile&#8221; connectivity very often is by VSAT satellite link, but a global wired network connects centers of oil exploration and data analysis.</p>
<div id="attachment_429" class="wp-caption alignnone" style="width: 650px"><a href="http://hsimonis.files.wordpress.com/2010/08/dexanet.png"><img class="size-full wp-image-429" title="dexanet" src="http://hsimonis.files.wordpress.com/2010/08/dexanet.png?w=640&#038;h=440" alt="" width="640" height="440" /></a><p class="wp-caption-text">Schlumberger dexa.net Global Network</p></div>
<p>The image above shows a diagram of dexa.net from my CP-AI-OR 2004 tutorial. This is an enterprise network, not a carrier network. This means that the connection links are rented from telecoms, and are thus sized carefully based on current and future demands to reduce rental cost. Providing enough spare capacity for an unlimited number of well logging tasks is not economically feasible.</p>
<div id="attachment_440" class="wp-caption alignnone" style="width: 490px"><a href="http://hsimonis.files.wordpress.com/2010/08/cisco12000routers1.jpg"><img class="size-full wp-image-440" title="cisco12000routers" src="http://hsimonis.files.wordpress.com/2010/08/cisco12000routers1.jpg?w=640" alt=""   /></a><p class="wp-caption-text">Cisco 12000 Series Routers (from Cisco website)</p></div>
<p>The network infrastructure is based on Cisco 12000 series routers, which offer the required MPLS-TE and DiffServ technologies. MPLS-TE (Traffic Engineering over MPLS (<a href="http://en.wikipedia.org/wiki/MPLS">Multi-Protocol Label Switching</a>) provides mechanisms to set up explicit paths between two network nodes, controlling which links are used in the connection. This by-passes the normal routing in the IP network, and gives more flexibility to the network engineer setting up the connection. <a href="http://en.wikipedia.org/wiki/Diffserv">DiffServ</a> provides multiple traffic classes controlling the queuing in the router interfaces. This allows to favour certain types of traffic over other traffic types, for example making sure that video data is forwarded with (nearly) no packet loss, and low latency and jitter. If too much traffic arrives at some part of the network, other, less important traffic classes are dropped first, while quality of service for the important traffic types is maintained.</p>
<p>The BoD application uses these technologies to set up tunnels for new user demands for the time of their operation. This is an extension of the Demand Acceptance problem, adding a time dimension (fixed start and end) to each demand. Only demands which overlap in time compete for resources, while all demands compete with the normal traffic loads of the network. The tool therefore consists of two main components, a network analysis tool to predict the base load in the network at some future time point, and the routing module which tries to find paths for demands given estimated free capacities.</p>
<div id="attachment_447" class="wp-caption alignnone" style="width: 650px"><a href="http://hsimonis.files.wordpress.com/2010/08/dexautilisation.png"><img class="size-full wp-image-447" title="dexautilisation" src="http://hsimonis.files.wordpress.com/2010/08/dexautilisation.png?w=640&#038;h=396" alt="" width="640" height="396" /></a><p class="wp-caption-text">BoD: Network Hotspots Marked in Red</p></div>
<p>Note that user demands are not just single point-to-point connections, users typically request a VPN (Virtual Private Network) between multiple locations. This can translate into many point-to-point connections. Finding routes for only some of those binary connections is not enough, the user request will only be satisfied if all connections can be set up at the same time.</p>
<p>The BoD network operates under a <em>first-come, first-serve</em> policy: if a user has made a reservation, which was accepted, then we are no longer allowed to reject the demand at some future time, in order to allow other orders to be satisfied. If the connection has not yet started, we are able to re-route the path, as long as its QoS parameters stay satisfied. If the connection is already live, we are not allowed to touch it, as any modification could lead to loss of connection and unacceptable packet loss.  All these constraints mean that we can not solve this problem effectively if we only consider adding point-to-point demands one at a time. We must resolve the complete problem, where some of the previous solution is fixed, and previously accepted demands must be kept. Solving the complete problem for all time points in one step is often not feasible, so that a temporal decomposition must be used.</p>
<div id="attachment_448" class="wp-caption alignnone" style="width: 650px"><a href="http://hsimonis.files.wordpress.com/2010/08/dexagantt.png"><img class="size-full wp-image-448" title="dexagantt" src="http://hsimonis.files.wordpress.com/2010/08/dexagantt.png?w=640&#038;h=290" alt="" width="640" height="290" /></a><p class="wp-caption-text">Gantt Chart Showing Accepted and Rejected Demands</p></div>
<h2>To learn more</h2>
<p>A mathematical description of the Bandwidth on Demand problem is given in chapter 25 of the Handbook of Constraint Programming on <a href="http://4c.ucc.ie/~hsimonis/Constraint%20Applications%20in%20Networks.pdf">Network Applications</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hsimonis.wordpress.com/428/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hsimonis.wordpress.com/428/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hsimonis.wordpress.com/428/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hsimonis.wordpress.com/428/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hsimonis.wordpress.com/428/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hsimonis.wordpress.com/428/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hsimonis.wordpress.com/428/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hsimonis.wordpress.com/428/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hsimonis.wordpress.com/428/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hsimonis.wordpress.com/428/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hsimonis.wordpress.com/428/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hsimonis.wordpress.com/428/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hsimonis.wordpress.com/428/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hsimonis.wordpress.com/428/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=428&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hsimonis.wordpress.com/2010/08/16/bandwidth-on-demand/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0e4ad1c6607ae7e663511a42106ab7b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hsimonis</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/08/seismic_vizroom.jpg" medium="image">
			<media:title type="html">Photography by Keith Rinearson PhotoArt Phone (405) 557-0924</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/08/drillingtools.png" medium="image">
			<media:title type="html">drillingtools</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/08/dexanet.png" medium="image">
			<media:title type="html">dexanet</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/08/cisco12000routers1.jpg" medium="image">
			<media:title type="html">cisco12000routers</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/08/dexautilisation.png" medium="image">
			<media:title type="html">dexautilisation</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/08/dexagantt.png" medium="image">
			<media:title type="html">dexagantt</media:title>
		</media:content>
	</item>
		<item>
		<title>Short Article on CPTV</title>
		<link>http://hsimonis.wordpress.com/2010/08/11/short-article-on-cptv/</link>
		<comments>http://hsimonis.wordpress.com/2010/08/11/short-article-on-cptv/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 21:09:35 +0000</pubDate>
		<dc:creator>hsimonis</dc:creator>
				<category><![CDATA[2009]]></category>
		<category><![CDATA[59 Motion pictures video and TV]]></category>
		<category><![CDATA[59.1 Motion pictures video and TV programmes]]></category>
		<category><![CDATA[ECLiPSe]]></category>
		<category><![CDATA[J Information and Communications]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[Scheduling]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://hsimonis.wordpress.com/?p=419</guid>
		<description><![CDATA[The work on CPTV (Constrained-Based Personalized TV Schedules) was sponsored by the Commercialization Fund of Enterprise Ireland, one of our national funding agencies, with support from the European Regional Development Fund. In the July/August issue of EI&#8217;s magazine, Technology Ireland, &#8230; <a href="http://hsimonis.wordpress.com/2010/08/11/short-article-on-cptv/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=419&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_452" class="wp-caption alignnone" style="width: 650px"><a href="http://hsimonis.files.wordpress.com/2010/08/cptv-article.jpg"><img class="size-full wp-image-452" title="CPTV-article" src="http://hsimonis.files.wordpress.com/2010/08/cptv-article.jpg?w=640&#038;h=574" alt="" width="640" height="574" /></a><p class="wp-caption-text">A Short Article in Technology Ireland About CPTV</p></div>
<p>The work on <a href="http://hsimonis.wordpress.com/2010/07/11/personalized-tv-schedules/">CPTV</a> (Constrained-Based Personalized TV Schedules) was sponsored by the Commercialization Fund of Enterprise Ireland, one of our national funding agencies, with support from the European Regional Development Fund. In the July/August issue of EI&#8217;s magazine,<a href="http://www.enterprise-ireland.com/en/Publications/Technology-Ireland/Jul-and-Aug-2010-Issue.pdf"> Technology Ireland</a>, you can find a short write-up of the project on pages 14/15.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hsimonis.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hsimonis.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hsimonis.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hsimonis.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hsimonis.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hsimonis.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hsimonis.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hsimonis.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hsimonis.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hsimonis.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hsimonis.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hsimonis.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hsimonis.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hsimonis.wordpress.com/419/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=419&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hsimonis.wordpress.com/2010/08/11/short-article-on-cptv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0e4ad1c6607ae7e663511a42106ab7b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hsimonis</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/08/cptv-article.jpg" medium="image">
			<media:title type="html">CPTV-article</media:title>
		</media:content>
	</item>
		<item>
		<title>Reader opinion wanted</title>
		<link>http://hsimonis.wordpress.com/2010/08/08/reader-opinion-wanted/</link>
		<comments>http://hsimonis.wordpress.com/2010/08/08/reader-opinion-wanted/#comments</comments>
		<pubDate>Sun, 08 Aug 2010 20:27:37 +0000</pubDate>
		<dc:creator>hsimonis</dc:creator>
				<category><![CDATA[Asides]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://hsimonis.wordpress.com/?p=415</guid>
		<description><![CDATA[Please tell me about application areas you want to see more about. This will help me to focus on areas of interest to you!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=415&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<a href="http://polldaddy.com/poll/3591071/">View This Poll</a>
<p>Please tell me about application areas you want to see more about. This will help me to focus on areas of interest to you!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hsimonis.wordpress.com/415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hsimonis.wordpress.com/415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hsimonis.wordpress.com/415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hsimonis.wordpress.com/415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hsimonis.wordpress.com/415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hsimonis.wordpress.com/415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hsimonis.wordpress.com/415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hsimonis.wordpress.com/415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hsimonis.wordpress.com/415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hsimonis.wordpress.com/415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hsimonis.wordpress.com/415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hsimonis.wordpress.com/415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hsimonis.wordpress.com/415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hsimonis.wordpress.com/415/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=415&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hsimonis.wordpress.com/2010/08/08/reader-opinion-wanted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0e4ad1c6607ae7e663511a42106ab7b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hsimonis</media:title>
		</media:content>
	</item>
		<item>
		<title>Train Crew Diagraming</title>
		<link>http://hsimonis.wordpress.com/2010/08/07/train-crew-diagraming/</link>
		<comments>http://hsimonis.wordpress.com/2010/08/07/train-crew-diagraming/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 22:34:07 +0000</pubDate>
		<dc:creator>hsimonis</dc:creator>
				<category><![CDATA[1999]]></category>
		<category><![CDATA[49 Land Transport]]></category>
		<category><![CDATA[49.1 Passenger rail transport]]></category>
		<category><![CDATA[CHIP]]></category>
		<category><![CDATA[H Transportation and Storage]]></category>
		<category><![CDATA[industrial study]]></category>
		<category><![CDATA[live application]]></category>
		<category><![CDATA[Personnel]]></category>
		<category><![CDATA[Transport]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://hsimonis.wordpress.com/?p=368</guid>
		<description><![CDATA[This probably was the most complex and complicated project I was ever working on. And while we delivered the product and met the specification (we even got the bonus payment for solution quality), the system was never used operationally. The &#8230; <a href="http://hsimonis.wordpress.com/2010/08/07/train-crew-diagraming/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=368&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This probably was the most complex and complicated project I was ever working on. And while we delivered the product and met the specification (we even got the bonus payment for solution quality), the system was never used operationally.</p>
<p>The problem is about train crew diagraming for the regional trains services in the north-west of England, centered on Manchester. Most trains used are diesel-powered units like this one:</p>
<div id="attachment_371" class="wp-caption alignnone" style="width: 650px"><a href="http://hsimonis.files.wordpress.com/2010/08/nwt-153316_at_carlisle.jpg"><img class="size-full wp-image-371 " title="OLYMPUS DIGITAL CAMERA" src="http://hsimonis.files.wordpress.com/2010/08/nwt-153316_at_carlisle.jpg?w=640&#038;h=480" alt="" width="640" height="480" /></a><p class="wp-caption-text">NWT Type 153 at Carlisle (from Wikipedia)</p></div>
<p><span id="more-368"></span>A diagram is a statement of work for an anonymous train driver or conductor (guard), describing all the work activities he has to perform from clock-on to clock-off. A typical diagram for a driver consists of around 12 driving tasks, and 16 non-driving tasks, like coupling/decoupling of units, preparing/shutting down a train, walking between platforms or between a siding and a station. It might also describe more complex movements between stations, either walking, driving by staff car, by bus or taxi, or dead-heading in one of the companies&#8217; trains or using a train connection of a competitor. Each activity is governed by rules and union agreements, which have grown over a period of 100 years to a very complex set of rules and exceptions. A diagram always starts and ends in the same location, the crew depot. In our case, we have to deal with 12 depots of vastly different sizes, the largest centred on Manchester Piccadilly and Manchester Victoria (the two main stations in Manchester).</p>
<div id="attachment_380" class="wp-caption alignnone" style="width: 650px"><a href="http://hsimonis.files.wordpress.com/2010/08/800px-manchester_picadilly_station.jpg"><img class="size-full wp-image-380 " title="800px-Manchester_Picadilly_Station" src="http://hsimonis.files.wordpress.com/2010/08/800px-manchester_picadilly_station.jpg?w=640&#038;h=428" alt="" width="640" height="428" /></a><p class="wp-caption-text">Manchester Piccadilly (from Wikipedia)</p></div>
<p>A priori, individual route segments can be performed by drivers from different depots, although restrictions on route knowledge and training apply. Drivers and conductors are often able to operate several of the <a href="http://en.wikipedia.org/wiki/First_North_Western">different train types</a>. The diagraming is not concerned with individual drivers, it only creates the diagram for some depot. Assigning the diagram to an actual person is the task of rostering, performed as a separate step.</p>
<p>Different diagrams are created for the Monday-Friday timetable, and for Saturday and for Sunday timetables. In principle they are valid for half a year, in practice a lot of changes are required for the weekend diagrams, as the dreaded &#8220;engineering works&#8221; require updates to many train operations. Changes are also required for special events, e.g. Manchester United playing in the Champions&#8217; League on a Wednesday, with extra services to/from Old Trafford being needed. Before we started this project, a team of 10 crew schedulers was working full-time on making these adaptions, and planning the diagrams for the next timetable.</p>
<div id="attachment_393" class="wp-caption alignnone" style="width: 650px"><a href="http://hsimonis.files.wordpress.com/2010/08/800px-manchester_united_halt1.jpg"><img class="size-full wp-image-393 " title="800px-Manchester_United_Halt1" src="http://hsimonis.files.wordpress.com/2010/08/800px-manchester_united_halt1.jpg?w=640&#038;h=480" alt="" width="640" height="480" /></a><p class="wp-caption-text">Manchester United Halt: Extra Trains for Game Days Only (from Wikipedia)</p></div>
<p>The route network stretches from Carlisle in the north to Birmingham, and from Holyhead (the ferry port to Dublin) to Sheffield in the north-east. There were even some long distance trains from Manchester to London Euston to consider. The map shows the major stations used, indicating only those locations where either train services start/end, or where crew can be changed.<br />
<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.ie/maps/ms?client=firefox-a&amp;hl=en&amp;ie=UTF8&amp;msa=0&amp;msid=114162468568787423147.00048d3bd79d5304a9120&amp;ll=53.440628,-2.48291&amp;spn=0.572608,1.167297&amp;z=9&amp;output=embed"></iframe><br /><small><a href="http://maps.google.ie/maps/ms?client=firefox-a&amp;hl=en&amp;ie=UTF8&amp;msa=0&amp;msid=114162468568787423147.00048d3bd79d5304a9120&amp;ll=53.440628,-2.48291&amp;spn=0.572608,1.167297&amp;z=9&amp;source=embed" style="text-align:left">View Larger Map</a></small></p>
<p>Overall this is a major operation, there are around 200 trains, and 700 drivers and 600 conductors to consider. The following figure shows the distribution of demand during the length of a day.</p>
<div id="attachment_384" class="wp-caption alignnone" style="width: 650px"><a href="http://hsimonis.files.wordpress.com/2010/08/cobra-overall-demand.png"><img class="size-full wp-image-384" title="cobra overall demand" src="http://hsimonis.files.wordpress.com/2010/08/cobra-overall-demand.png?w=640&#038;h=205" alt="" width="640" height="205" /></a><p class="wp-caption-text">Demand During Day</p></div>
<p>The map above shows each station as a marker, this should not give the impression that they are all the same. We have seen a picture of Manchester Piccadilly above, it is the largest station in this part of the network, used by several other train operating companies as well. The picture shows the main hall, renovated to reflect its Victorian origin. At the other end of the spectrum we have a station like Bidston (below), which is the end point of the Bidston-Wrexham line, connecting Merseyside to North Wales.</p>
<div id="attachment_381" class="wp-caption alignnone" style="width: 650px"><a href="http://hsimonis.files.wordpress.com/2010/08/bidston_railway_station_in_2007.jpg"><img class="size-full wp-image-381 " title="Bidston_railway_station_in_2007" src="http://hsimonis.files.wordpress.com/2010/08/bidston_railway_station_in_2007.jpg?w=640&#038;h=480" alt="" width="640" height="480" /></a><p class="wp-caption-text">The End of a Line: Bidston Railway Station (from Wikipedia)</p></div>
<h2>A Changing Environment</h2>
<p>We always claim that Constraint Programming is able to work in rapidly changing environments, but this was a bit much even for CP <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  We started the discussions when the company was called North West Regional Railways,</p>
<div id="attachment_388" class="wp-caption alignnone" style="width: 210px"><a href="http://hsimonis.files.wordpress.com/2010/08/200px-regional_railways_logo-svg.png"><img class="size-full wp-image-388" title="200px-Regional_railways_logo.svg" src="http://hsimonis.files.wordpress.com/2010/08/200px-regional_railways_logo-svg.png?w=640" alt=""   /></a><p class="wp-caption-text">Logo #1: Regional Railways</p></div>
<p>part of the British Rail empire, and close to being privatized. The logo changed with the privatization, when the company became North Western Trains.</p>
<div id="attachment_387" class="wp-caption alignnone" style="width: 310px"><a href="http://hsimonis.files.wordpress.com/2010/08/north_western-logo1.jpg"><img class="size-medium wp-image-387" title="North_Western logo1" src="http://hsimonis.files.wordpress.com/2010/08/north_western-logo1.jpg?w=300&#038;h=118" alt="" width="300" height="118" /></a><p class="wp-caption-text">Logo #2: North Western Trains</p></div>
<p>That logo did not stay long, it was replaced by this:</p>
<div id="attachment_386" class="wp-caption alignnone" style="width: 310px"><a href="http://hsimonis.files.wordpress.com/2010/08/north_western_trains_logo2_bmp.jpg"><img class="size-medium wp-image-386" title="North_Western_Trains_logo2_bmp" src="http://hsimonis.files.wordpress.com/2010/08/north_western_trains_logo2_bmp.jpg?w=300&#038;h=75" alt="" width="300" height="75" /></a><p class="wp-caption-text">Logo #3: North Western Trains</p></div>
<p>Unfortunately, many other things changed as well. Ian Maclean from PA Consulting, working with us on the project,  described this in a talk at the Industrial Day of ICLP 98 in Manchester. Of the 23 persons we interacted with at the start of the project, only one was still in the employ of the company when we finished.</p>
<p>After a year of operating as an independent company, it was bought by the First group, a major bus and train operator in the UK. Logo number 4 followed quickly. As First already had operational systems for unit and crew diagraming, the need for our new system went away, and the project was shelved.</p>
<div id="attachment_385" class="wp-caption alignnone" style="width: 210px"><a href="http://hsimonis.files.wordpress.com/2010/08/200px-first_north_western_1.jpg"><img class="size-full wp-image-385" title="200px-First_North_Western_1" src="http://hsimonis.files.wordpress.com/2010/08/200px-first_north_western_1.jpg?w=640" alt=""   /></a><p class="wp-caption-text">Logo #4: First North Western Logo</p></div>
<h2>Lessons Learned</h2>
<p>We learned a lot during this project, Phillipe Charlier and myself gave a presentation at the <a href="http://dimacs.rutgers.edu/Workshops/ConstraintProg/program.html">DIMACS workshop on Constraint Programming and Large Scale Discrete Optimization</a>, September 14 &#8211; 17, 1998 on a &#8220;A system for train crew scheduling&#8221;, from which most of the material used here is drawn.</p>
<h3>Data, data, Data!</h3>
<p>We were aware of this problem before, but it still cost us months of hard effort. Before our project, the diagrams were generated manually, using basically a text editor, and were only used by humans. Humans have a much higher tolerance to errors than computers, and contrary to airlines, railways did not have rule checkers to validate the manual diagrams. We spent months finding errors and exceptions to rules, indeed we fixed the last problems in the week of the final acceptance test.</p>
<h3>Closed World Assumption</h3>
<p>A constraint program always operates under a &#8220;closed world assumption&#8221;. This term from Artificial Intelligence research means that the program does not have any common-sense background knowledge, it only reasons about the information it is explicitly given. For example it does not know whether two stations are close enough to walk between. If the constraint model does not contain such a connection, it will not attempt to use it. A human may decide to use a train of another company between two locations, the computer does not even know that other companies exist.</p>
<h3>Depot Assignment</h3>
<p>One of the most critical decisions for the system is which activities to assign to which depot. A wrong choice may lead to big problems later on, but that impact is not immediately visible when making the initial choice. Modelling the problem as assigning activities to diagrams ignores this decision, and often makes an inefficient choice.</p>
<h3>Scalability Matters</h3>
<p>Our constraint model used the cycle constraint in a similar form as described for the <a href="http://hsimonis.wordpress.com/2010/08/04/open-flight-repair-for-air-crew/">TAP-AI application for SAS</a>. Activities and crew are the nodes, and there are connections between nodes if a connection is possible. But while the TAP-AI model used hundreds of nodes, we needed thousands of nodes to model this crew diagramming application. Unfortunately, the propagation methods inside the cycle constraint are quite expensive, this meant that run-times increased to hours, instead of minutes.</p>
<h2>Solution Chosen</h2>
<p>Over the project duration, we changed our model several times, in the end we used a decomposition with a set covering model to handle the depot assignment. In this model, we use the constraint model to generate candidate diagrams, and then use a MIP based set covering algorithm to select the best combination. In the set covering, we could also impose constraints on how many diagrams we allowed for each depot, to avoid cases where some depot is overwhelmed with work that could also be assigned to a less-utilized depot.</p>
<p>Once the depot assignment was done, we had a working solution for each depot. We then tried to re-run the model for each depot using constraint programming alone, in order to improve the solution. Solution quality is measured in the number of diagrams used, but also in total working time, and the balance between diagram durations. As we now only had to work with the tasks assigned to a single depot, and we knew the problem was feasible, we had a more manageable problem to solve at this step.</p>
<h2>To know more</h2>
<p>The definitive paper on solving the crew assignment problem for railways is from the Netherlands:</p>
<p><em>Leo Kroon, Dennis Huisman, Erwin Abbink, Pieter-Jan Fioole, Matteo Fischetti, Gábor Maróti, Alexander Schrijver, Adri Steenbeek, Roelof Ybema. The New Dutch Timetable: The OR Revolution. INTERFACES Vol. 39, No. 1, January-February 2009, pp. 6-17, DOI: 10.1287/inte.1080.0409</em></p>
<p>This system won the <a href="http://www.informs.org/Recognize-Excellence/Franz-Edelman-Award">INFORMS  Edelman</a> prize in 2008, for saving millions in operating cost of the Dutch railways. It is not using constraint programming, though. It would be fun to check if CP has progressed enough in the last ten years to threaten a classical OR approach, but better plan for a longish project.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hsimonis.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hsimonis.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hsimonis.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hsimonis.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hsimonis.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hsimonis.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hsimonis.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hsimonis.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hsimonis.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hsimonis.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hsimonis.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hsimonis.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hsimonis.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hsimonis.wordpress.com/368/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hsimonis.wordpress.com&amp;blog=14594157&amp;post=368&amp;subd=hsimonis&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hsimonis.wordpress.com/2010/08/07/train-crew-diagraming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0e4ad1c6607ae7e663511a42106ab7b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hsimonis</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/08/nwt-153316_at_carlisle.jpg" medium="image">
			<media:title type="html">OLYMPUS DIGITAL CAMERA</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/08/800px-manchester_picadilly_station.jpg" medium="image">
			<media:title type="html">800px-Manchester_Picadilly_Station</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/08/800px-manchester_united_halt1.jpg" medium="image">
			<media:title type="html">800px-Manchester_United_Halt1</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/08/cobra-overall-demand.png" medium="image">
			<media:title type="html">cobra overall demand</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/08/bidston_railway_station_in_2007.jpg" medium="image">
			<media:title type="html">Bidston_railway_station_in_2007</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/08/200px-regional_railways_logo-svg.png" medium="image">
			<media:title type="html">200px-Regional_railways_logo.svg</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/08/north_western-logo1.jpg?w=300" medium="image">
			<media:title type="html">North_Western logo1</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/08/north_western_trains_logo2_bmp.jpg?w=300" medium="image">
			<media:title type="html">North_Western_Trains_logo2_bmp</media:title>
		</media:content>

		<media:content url="http://hsimonis.files.wordpress.com/2010/08/200px-first_north_western_1.jpg" medium="image">
			<media:title type="html">200px-First_North_Western_1</media:title>
		</media:content>
	</item>
	</channel>
</rss>
