<?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>Pro-G &#187; productique</title>
	<atom:link href="http://projets.ch/wp/blog/cat/productique/feed/" rel="self" type="application/rss+xml" />
	<link>http://projets.ch/wp</link>
	<description>Accélérateur d'Innovation</description>
	<lastBuildDate>Tue, 24 Jun 2008 08:00:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>[english]Shortest Path Problem.[/english]</title>
		<link>http://projets.ch/wp/blog/44/</link>
		<comments>http://projets.ch/wp/blog/44/#comments</comments>
		<pubDate>Mon, 01 Sep 2003 07:44:04 +0000</pubDate>
		<dc:creator>Philippe Guglielmetti</dc:creator>
				<category><![CDATA[géométrie]]></category>
		<category><![CDATA[informatique]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[productique]]></category>
		<category><![CDATA[Concorde]]></category>
		<category><![CDATA[SolidWorks]]></category>

		<guid isPermaLink="false">http://projets.ch/wp/?p=44</guid>
		<description><![CDATA[[english]This page shows how to solve a common problem in  		geometry, with applications in CAD/CAM : How to find the shortest  		path going through a set of points ?
History
It all started form a &#8220;challenge&#8221; posted by Cliff Huprich on  		alt.machines.cnc newsgroup: find the shortest path going through 400  		random X/Y points. [...]]]></description>
			<content:encoded><![CDATA[<p>[english]This page shows how to solve a common problem in  		geometry, with applications in CAD/CAM : <strong>How to find the shortest  		path going through a set of points ?</strong></p>
<h3>History</h3>
<p>It all started form a &#8220;challenge&#8221; posted by Cliff Huprich on  		alt.machines.cnc newsgroup: find the shortest path going through 400  		random X/Y points. Some people tried to solve the problem with existing  		(expensive) tools or simple heuristics.</p>
<p>We took the challenge by considering the problem as a general  		operations research problem, made some web searches and proposed to use  		a &#8220;Travelling Salesman&#8221; approach in some posts summarized below:</p>
<p>This is known as the &#8220;travelling salesman&#8221; problem.<br />
see <a href="http://www.ing.unlp.edu.ar/cetad/mos/TSPBIB_home.html"> http://www.ing.unlp.edu.ar/cetad/mos/TSPBIB_home.html</a> for a complete  		reference.<br />
What you need is a program that would &#8220;sort&#8221; your list of points along  		the shortest path.<br />
&#8212;<br />
Made some more research on the &#8220;travelling salesman&#8221; problem (TSP) that<br />
reminded me good old times at university&#8230;</p>
<p>Basically, TSP is a &#8220;NP-complete&#8221; (even &#8220;NP_hard&#8221;) problem, which means  		the absolute optimum path can only be found by trying all possible paths,  		which results in exponential complexity :  if it takes a time T to solve  		for N points, it will take N*T to solve for N+1 points. On a powerful  		PC, if you have more than about 100 points, forget it!</p>
<p>Luckily, there are several approximate methods and algorithms around.  		See <a href="http://w1.859.telia.com/%7Eu85905224/tsp/TSP.htm"> http://w1.859.telia.com/~u85905224/tsp/TSP.htm</a> for very nice,  		animated web-based solvers that illustrate the most common methods.</p>
<p>The efficiency of the various approximate methods depends on how the  		points are distributed : they work faster on points that are grouped in  		clusters or spread along a curve compared to random points.</p>
<p><a href="http://www.math.princeton.edu/tsp/concorde.html"> http://www.math.princeton.edu/tsp/concorde.html</a> is apparently the  		most efficient code available (check their &#8220;benchmarks&#8221; link ) but it  		still takes 7 mins for 1000 points, one hour for 1300, and days for  		2000&#8230;<br />
So to solve your problem, the first question is : do you accept  		sub-optimal solutions ?<br />
The second is : how many points do you have ?<br />
And the third : how are they spread in space ? (please send me a sample  		by e-mail)<br />
&#8212;<br />
I could compile concorde on Windows and it works pretty well in 2D now,  		about 5 secs for 1000 points on my dual AMD 1800.<br />
Will modify it for 3D and ask Princeton if they allow me to release the  		executable<br />
for free, because their license restricts use to academic research.<br />
&#8212;</p>
<p>The &#8220;travelling salesman problem&#8221; (TSP) in general considers a &#8220;cost&#8221;  		for each pair of points (cities).<br />
all you have to provide to the algorithm is simply this cost function.<br />
If the function gives the (euclidian) distance between the points, it  		will solve the problem discussed here.<br />
In the case where you have highway or routes, you assign them for  		example the travel time as cost (and even give different costs to the  		A-&gt;B and B-&gt;A route), and infinite (or very large) cost to pairs that  		have no direct route between them, which actually speeds the algorithm  		considerably up by limiting the search width. This is why TSP algorithms  		are tested/benchmarked precisely on &#8220;symmetric euclidian&#8221; problems like  		the one we have here.</p>
<p style="text-align: center">
<a href='http://projets.ch/wp/blog/44/shorte3/' title='points'><img width="150" height="150" src="http://projets.ch/wp/files//2008/06/shorte3-150x150.gif" class="attachment-thumbnail" alt="400 random points" title="points" /></a>
<a href='http://projets.ch/wp/blog/44/shorte4/' title='initial guess'><img width="150" height="150" src="http://projets.ch/wp/files//2008/06/shorte4-150x150.gif" class="attachment-thumbnail" alt="best OPEN path found by Cliff Huprich (length=1554.35)" title="initial guess" /></a>
<a href='http://projets.ch/wp/blog/44/shorte5/' title='optimal'><img width="150" height="150" src="http://projets.ch/wp/files//2008/06/shorte5-150x150.gif" class="attachment-thumbnail" alt="optimal CLOSED path by Ph. Guglielmetti (length=1469.35)" title="optimal" /></a>
</p>
<p>As you see, the TSP approach is very powerful, but I still have a  		difficulty with the problem posed here as TSP solvers give the shortest  		*closed* path through all points. For an open path with a given start  		point, there should be a simple thing to do but I&#8217;m not sure which&#8230;</p>
<h3>Links:</h3>
<ol>
<li><a href="http://www.ing.unlp.edu.ar/cetad/mos/TSPBIB_home.html"> http://www.ing.unlp.edu.ar/cetad/mos/TSPBIB_home.html</a> everything  			on Travelling Salesman Problem (TSP)</li>
<li><a href="http://w1.859.telia.com/%7Eu85905224/tsp/TSP.htm"> http://w1.859.telia.com/~u85905224/tsp/TSP.htm</a> very nice,  			animated web-based solvers that illustrate the most common methods.</li>
<li><a href="http://www.math.princeton.edu/tsp/concorde.html"> http://www.math.princeton.edu/tsp/concorde.html</a> concorde solver</li>
<li>Kenneth Castelino Roshan D’Souza and Paul K. Wright &#8220;Tool-path  			Optimization for Minimizing Airtime during Machining&#8221; 			<a href="http://kingkong.me.berkeley.edu/%7Ekenneth/research/pubs/airtime_minimization_joms.pdf"> http://kingkong.me.berkeley.edu/~kenneth/research/pubs/airtime_minimization_joms.pdf</a></li>
</ol>
<p>[/english]</p>
]]></content:encoded>
			<wfw:commentRss>http://projets.ch/wp/blog/44/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flexi : high performance XY table.</title>
		<link>http://projets.ch/wp/blog/17/</link>
		<comments>http://projets.ch/wp/blog/17/#comments</comments>
		<pubDate>Mon, 28 Apr 1997 09:30:13 +0000</pubDate>
		<dc:creator>Philippe Guglielmetti</dc:creator>
				<category><![CDATA[automatique]]></category>
		<category><![CDATA[commande]]></category>
		<category><![CDATA[mécanique]]></category>
		<category><![CDATA[productique]]></category>
		<category><![CDATA[temps réel]]></category>
		<category><![CDATA[usinage]]></category>
		<category><![CDATA[électronique]]></category>

		<guid isPermaLink="false">http://projets.ch/wp/blog/17</guid>
		<description><![CDATA[XY Table for a miniature machine tool, with a minimal inertia and without any friction thanks to a flexible structure made of two titanium parts.

			
				
					
					
					
					
					
					
					
			
				
				
					
					
					
					
					
					
					
					
					
							This browser does not have a Java Plug-in.
							
							
								Get the latest Java Plug-in here.
							
					
				
			
				
			
			
Reference:

Stuart T. Smith, Derek G. Chetwynd,&#8221;Foundations of Ultraprecision Mechanism Design &#8220;, 1992, CRC Press, ISBN-2884490019

&#160;
]]></description>
			<content:encoded><![CDATA[<p>XY Table for a miniature machine tool, with a minimal inertia and without any friction thanks to a flexible structure made of two titanium parts.</p>
<p align="center"><div id="processing">
			<!--[if !IE]> -->
				<object classid="java:OBJViewer.class" 
            			type="application/x-java-applet"
            			archive="/processing/OBJViewer/applet/OBJViewer.jar"
            			width="512" height="384"
            			standby="Loading Processing software..." >
					<param name="archive" value="/processing/OBJViewer/applet/OBJViewer.jar" />
					<param name="mayscript" value="true" />
					<param name="scriptable" value="true" />
					<param name="image" value="loading.gif" />
					<param name="boxmessage" value="Loading Processing software..." />
					<param name="boxbgcolor" value="#FFFFFF" />
					<param name="test_string" value="outer" />
			<!--<![endif]-->
				
				<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" 
						codebase="http://java.sun.com/update/1.4.2/jinstall-1_4_2_12-windows-i586.cab"
						width="512" height="384"
						standby="Loading Processing software..."  >
					<param name="code" value="OBJViewer" />
					<param name="archive" value="/processing/OBJViewer/applet/OBJViewer.jar" />
					<param name="mayscript" value="true" />
					<param name="scriptable" value="true" />
					<param name="image" value="loading.gif" />
					<param name="boxmessage" value="Loading Processing software..." />
					<param name="boxbgcolor" value="#FFFFFF" />
					<param name="test_string" value="inner" />
					<p>
							This browser does not have a Java Plug-in.
							<br />
							<a href="http://java.sun.com/products/plugin/downloads/index.html" title="Download Java Plug-in">
								Get the latest Java Plug-in here.
							</a>
					</p>
				</object>
			<!--[if !IE]> -->
				</object>
			<!--<![endif]-->
			</div></p>
<p align="left">Reference:</p>
<ol>
<li>Stuart T. Smith, Derek G. Chetwynd,&#8221;Foundations of Ultraprecision Mechanism Design &#8220;, 1992, CRC Press, ISBN-2884490019</li>
</ol>
<p align="left">&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://projets.ch/wp/blog/17/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
