<?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>L&#039;Univers D&#039;Adjanakis &#187; Intelligence Artificielle</title>
	<atom:link href="https://blog.developpez.com/adjanakis/pcategory/intelligence-artificielle/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/adjanakis</link>
	<description></description>
	<lastBuildDate>Sun, 24 Nov 2013 00:46:48 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Choco Solver</title>
		<link>https://blog.developpez.com/adjanakis/p6059/intelligence-artificielle/choco_solver</link>
		<comments>https://blog.developpez.com/adjanakis/p6059/intelligence-artificielle/choco_solver#comments</comments>
		<pubDate>Fri, 11 Jul 2008 22:20:22 +0000</pubDate>
		<dc:creator><![CDATA[Adjanakis]]></dc:creator>
				<category><![CDATA[Intelligence Artificielle]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Choco est une librairie écrite en java permettant de faire ce que l&#8217;on appelle de la programmation par contraintes. Grossièrement, cela signifie que cette librairie permet de trouver pour chaque variable d&#8217;un problème, un ensemble de valeur satisfaisant des règles(contraintes) imposées. C&#8217;est le cas par exemple du problème du sudoku. Dans un tel contexte, les règles seront : Tous les nombres d&#8217;une ligne sont différents Tous les nombres d&#8217;une colonne sont différents Tous les nombres [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://choco.sourceforge.net/">Choco</a> est une librairie écrite en java permettant de faire ce que l&rsquo;on appelle de la programmation par contraintes. Grossièrement, cela signifie que cette librairie permet de trouver pour chaque variable d&rsquo;un problème, un ensemble de valeur satisfaisant des règles(contraintes) imposées. C&rsquo;est le cas par exemple du problème du sudoku. Dans un tel contexte, les règles seront :</p>
<ul>
<li> Tous les nombres d&rsquo;une ligne sont différents</li>
<li> Tous les nombres d&rsquo;une colonne sont différents</li>
<li> Tous les nombres des carrés de 3 cases de coté sont différents</li>
</ul>
<p>Le solveur permettra la résolution de la grille de sudoku en donnant des valeurs respectant les contraintes. L&rsquo;idée de cet article m&rsquo;est venu en fouillant dans de vieilles sources Java. Afin de démystifier le développement de programme pour la résolution d&rsquo;une grille de sudoku, voici quelques lignes de code qui pourraient presque prétendre les résoudre à coup sûr.</p>
<p><span id="more-44"></span></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">/** <br />
&nbsp;* &nbsp;This program is free software; you can redistribute it and/or modify <br />
&nbsp;* &nbsp;it under the terms of the GNU General Public License as published by <br />
&nbsp;* &nbsp;the Free Software Foundation; either version 2 of the License, or <br />
&nbsp;* &nbsp;(at your option) any later version. <br />
&nbsp;* &nbsp; &nbsp; &nbsp;<br />
&nbsp;* &nbsp;This program is distributed in the hope that it will be useful, <br />
&nbsp;* &nbsp;but WITHOUT ANY WARRANTY; without even the implied warranty of <br />
&nbsp;* &nbsp;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. &nbsp;See the <br />
&nbsp;* &nbsp;GNU General Public License for more details. <br />
&nbsp;* &nbsp; <br />
&nbsp;* &nbsp;You should have received a copy of the GNU General Public License <br />
&nbsp;* &nbsp;along with this program; if not, write to the Free Software <br />
&nbsp;* &nbsp;Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA &nbsp;02110-1301 &nbsp;USA <br />
&nbsp;*/ <br />
package org.adjanakis.chokodoku; <br />
&nbsp;<br />
import choco.ContradictionException; <br />
import choco.Problem; <br />
import choco.integer.IntVar; <br />
&nbsp;<br />
/** <br />
&nbsp;* Chokodoku <br />
&nbsp;* &nbsp;<br />
&nbsp;* This program use to be an example of one usage of the choco-solver. This <br />
&nbsp;* application aims at easily solving any sudoku problem. All sudoku problem <br />
&nbsp;* hasn't been tested. If many solutions are possible, this program will not <br />
&nbsp;* be really accurate. <br />
&nbsp;* &nbsp;<br />
&nbsp;* Based on Choco 1.0b003 &nbsp;<br />
&nbsp;* &nbsp;<br />
&nbsp;* @author Adjanakis (http://code.adjanakis.org/) <br />
&nbsp;* @version 0.1.0 <br />
&nbsp;*/ <br />
public class Chokodoku { <br />
&nbsp;<br />
&nbsp; /** <br />
&nbsp; &nbsp;* Number of numbers on one side of the internal square. 3 is the usual value. <br />
&nbsp; &nbsp;*/ <br />
&nbsp; private static int CHOKODOKU_SIZE = 3; <br />
&nbsp;<br />
&nbsp; &nbsp; /** <br />
&nbsp; &nbsp; &nbsp;* Here is the description of the sudoku problem. Each number represents a value to <br />
&nbsp; &nbsp; &nbsp;* find or a value to get. The values to find are represented by a 0. &nbsp;<br />
&nbsp; &nbsp; &nbsp;*/ <br />
&nbsp; private static int[] pbDescr = new int[]{ <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 8,0,4,0,0,0,2,0,9, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,0,9,0,0,0,1,0,0, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1,0,0,3,0,2,0,0,7, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,5,0,1,0,4,0,8,0, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,0,0,0,3,0,0,0,0, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,1,0,7,0,9,0,2,0, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 5,0,0,4,0,3,0,0,8, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,0,3,0,0,0,4,0,0, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 4,0,6,0,0,0,3,0,1 <br />
&nbsp; &nbsp; }; <br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp;<br />
&nbsp; &nbsp; /** <br />
&nbsp; &nbsp; &nbsp;* The object used to represent the problem. It will store the constraint a the &nbsp;<br />
&nbsp; &nbsp; &nbsp;* possible value for each value of the sudoku. &nbsp;<br />
&nbsp; &nbsp; &nbsp;*/ <br />
&nbsp; private static Problem myPb = new Problem(); <br />
&nbsp; <br />
&nbsp; /** <br />
&nbsp; &nbsp;* Basic method to launch the program <br />
&nbsp; &nbsp;* @param args parameters are not used <br />
&nbsp; &nbsp;*/ <br />
&nbsp; public static void main(String[] args) { <br />
&nbsp; &nbsp; launch(); <br />
&nbsp; } <br />
&nbsp;<br />
&nbsp; /** <br />
&nbsp; &nbsp;* Method used to resolve a sudoku problem. This problem is hard coded into this method. <br />
&nbsp; &nbsp;*/ <br />
&nbsp; public static void launch(){ <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; //The variables will be stored into a vector <br />
&nbsp; &nbsp; IntVar[] myPbVars = new IntVar[CHOKODOKU_SIZE*CHOKODOKU_SIZE*CHOKODOKU_SIZE*CHOKODOKU_SIZE]; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; //We attribute the possible value for each value of the problem into our vector. <br />
&nbsp; &nbsp; for( int i = 0; i &lt; CHOKODOKU_SIZE*CHOKODOKU_SIZE*CHOKODOKU_SIZE*CHOKODOKU_SIZE; i++ ){ <br />
&nbsp; &nbsp; &nbsp; if( pbDescr[i] != 0 ){ <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //The value defined by the problem <br />
&nbsp; &nbsp; &nbsp; &nbsp; myPbVars[i] = myPb.makeEnumIntVar(null,pbDescr[i],pbDescr[i]); <br />
&nbsp; &nbsp; &nbsp; } else { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //The value is undefined. It may be on from 1 to the max value <br />
&nbsp; &nbsp; &nbsp; &nbsp; myPbVars[i] = myPb.makeEnumIntVar(null,1,CHOKODOKU_SIZE*CHOKODOKU_SIZE); <br />
&nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; } <br />
&nbsp;<br />
&nbsp; &nbsp; //Creation of the sudoku constraint <br />
&nbsp; &nbsp; for( int i = 0; i &lt; 9; i++){ <br />
&nbsp; &nbsp; &nbsp; IntVar[] bufIntVarsRow &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= new IntVar[CHOKODOKU_SIZE*CHOKODOKU_SIZE]; <br />
&nbsp; &nbsp; &nbsp; IntVar[] bufIntVarsColumn &nbsp; &nbsp; &nbsp; &nbsp; = new IntVar[CHOKODOKU_SIZE*CHOKODOKU_SIZE]; <br />
&nbsp; &nbsp; &nbsp; IntVar[] bufIntVarsInternalSquare = new IntVar[CHOKODOKU_SIZE*CHOKODOKU_SIZE]; <br />
&nbsp; &nbsp; &nbsp; for( int j = 0; j &lt; 9; j++){ <br />
&nbsp; &nbsp; &nbsp; &nbsp; bufIntVarsRow[j] &nbsp; = myPbVars[ i*CHOKODOKU_SIZE*CHOKODOKU_SIZE + j ]; <br />
&nbsp; &nbsp; &nbsp; &nbsp; bufIntVarsColumn[j] = myPbVars[ j*CHOKODOKU_SIZE*CHOKODOKU_SIZE + i ]; <br />
&nbsp; &nbsp; &nbsp; &nbsp; bufIntVarsInternalSquare[j] &nbsp; = myPbVars[ (i%CHOKODOKU_SIZE)*CHOKODOKU_SIZE + <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; j%CHOKODOKU_SIZE + <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (i/CHOKODOKU_SIZE)*CHOKODOKU_SIZE*CHOKODOKU_SIZE*CHOKODOKU_SIZE + <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (j/CHOKODOKU_SIZE)*CHOKODOKU_SIZE*CHOKODOKU_SIZE]; <br />
&nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; //All values of a line must be different <br />
&nbsp; &nbsp; &nbsp; myPb.post(myPb.allDifferent(bufIntVarsRow)); <br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; //All value of a column must be different <br />
&nbsp; &nbsp; &nbsp; myPb.post(myPb.allDifferent(bufIntVarsColumn)); <br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; //All value of an internal square must be different <br />
&nbsp; &nbsp; &nbsp; myPb.post(myPb.allDifferent(bufIntVarsInternalSquare)); <br />
&nbsp; &nbsp; } <br />
&nbsp;<br />
&nbsp; &nbsp; try { <br />
&nbsp; &nbsp; &nbsp; &nbsp; //Have the unique solution of the problem if it exists, or an approximation <br />
&nbsp; &nbsp; &nbsp; myPb.propagate(); <br />
&nbsp; &nbsp; } <br />
&nbsp; &nbsp; catch (ContradictionException e) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; //Solving the problem is not possible <br />
&nbsp; &nbsp; &nbsp; System.err.println(&quot;This problem is over-constrained&quot;); <br />
&nbsp; &nbsp; } <br />
&nbsp; &nbsp; System.out.println(&quot;solve&quot;); <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; //Display the result found <br />
&nbsp; &nbsp; for( int i = 0; i &lt; 9; i++){ <br />
&nbsp; &nbsp; &nbsp; for( int j = 0; j &lt; 9; j++){ <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.print(&quot; &quot; + myPbVars[i*9+j].getVal()); <br />
&nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; System.out.println(); <br />
&nbsp; &nbsp; } <br />
&nbsp; } <br />
}</div></div>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Référence sur l&#8217;intelligence artificielle</title>
		<link>https://blog.developpez.com/adjanakis/p2748/intelligence-artificielle/reference_sur_l_intelligence_artificiell</link>
		<comments>https://blog.developpez.com/adjanakis/p2748/intelligence-artificielle/reference_sur_l_intelligence_artificiell#comments</comments>
		<pubDate>Sun, 28 Jan 2007 19:00:00 +0000</pubDate>
		<dc:creator><![CDATA[Adjanakis]]></dc:creator>
				<category><![CDATA[Intelligence Artificielle]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Si l&#8217;intelligence artificielle a marqué mon parcours informatique, si la robotique a toujours mon intérêt, c&#8217;est parce qu&#8217;il existe des sites web passionnants qui fournissent une information claire et complète sur de multiples domaines. Parmi ces sites, vieartificielle.com a cependant ma préférence, et ce n&#8217;est pas étonnant ! Ce site suit l&#8217;actualité de l&#8217;Intelligence Artificielle en faisant la part belle à des news croustillantes sur les robots les plus insolites. Robotique toujours, le site fournit [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Si l&rsquo;intelligence artificielle a marqué mon parcours informatique, si la robotique a toujours mon intérêt, c&rsquo;est parce qu&rsquo;il existe des sites web passionnants qui fournissent une information claire et complète sur de multiples domaines. Parmi ces sites, <a href="http://www.vieartificielle.com">vieartificielle.com</a> a cependant ma préférence, et ce n&rsquo;est pas étonnant ! Ce site suit l&rsquo;actualité de l&rsquo;Intelligence Artificielle en faisant la part belle à des news croustillantes sur les robots les plus insolites. Robotique toujours, le site fournit de nombreuses informations pour réaliser une création de son choix selon ses goûts. Néanmoins, <a href="http://www.vieartificielle.com">vieartificielle.com</a> permet également d&rsquo;apprendre des algorithme bien sioux pour réaliser les IA les plus complexes. Bref, pour un projet de ce type, rien de tel pour stimuler son imagination et obtenir les astuces qui feront mouches !</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Challenge de programmation Java</title>
		<link>https://blog.developpez.com/adjanakis/p2214/breves/code_invaders</link>
		<comments>https://blog.developpez.com/adjanakis/p2214/breves/code_invaders#comments</comments>
		<pubDate>Fri, 14 Jul 2006 10:00:02 +0000</pubDate>
		<dc:creator><![CDATA[Adjanakis]]></dc:creator>
				<category><![CDATA[Brèves]]></category>
		<category><![CDATA[Intelligence Artificielle]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Le nouveau né des framework de programmation ludique d&#8217;IBM a officiellement vu le jour le 29 juin dernier et se prénomme : CodeInvaders Challenge ! Le but est cette fois-ci de programmer le comportement d&#8217;un vaisseau spatial avide d&#8217;énergie au point de détruire ses concurrents. Ce challenge est ouvert à tous et est accessible du programmeur débutant au plus chevronné d&#8217;entre nous. Alors pour les futurs participants, bonne chance et faites un petit coucou de [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.alphaworks.ibm.com/awss.nsf/E7C77CE3E9D4ED5E8825719A006B7D44/$File/codeinvaders01-thumb.jpg" alt="CodeInvaders ScreenShot" title="Arène de CodeInvaders" align="left" /><br />
</p>
<p>Le nouveau né des framework de programmation ludique d&rsquo;IBM a officiellement vu le jour le 29 juin dernier et se prénomme : <a href="http://www.alphaworks.ibm.com/tech/codeinvaders?open&amp;S_TACT=105AGX59&amp;ca=dgr-GRTARGETcodeinvaders">CodeInvaders Challenge</a> !</p>
<p></p>
<p>Le but est cette fois-ci de programmer le comportement d&rsquo;un vaisseau spatial avide d&rsquo;énergie au point de détruire ses concurrents. Ce challenge est ouvert à tous et est accessible du programmeur débutant au plus chevronné d&rsquo;entre nous. Alors pour les futurs participants, bonne chance et faites un petit coucou de temps en temps par ici histoire d&rsquo;échanger des idées de stratégie ou des vaisseaux pour les tests :o).</p>
<p></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Soyons Fair-Play</title>
		<link>https://blog.developpez.com/adjanakis/p1503/intelligence-artificielle/soyons_fair_play</link>
		<comments>https://blog.developpez.com/adjanakis/p1503/intelligence-artificielle/soyons_fair_play#comments</comments>
		<pubDate>Wed, 06 Jul 2005 18:06:17 +0000</pubDate>
		<dc:creator><![CDATA[Adjanakis]]></dc:creator>
				<category><![CDATA[Intelligence Artificielle]]></category>
		<category><![CDATA[Sport]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[La réponse est tombée, London accueillera les jeux olympiques en 2012 :(. Consolons-nous en nous disant que les anglais ne sont pas au bout du monde&#8230; Toujours est-il qu&#8217;il y a quand même une déduction à faire de ce résultat. C&#8217;est que la seule chose dont-on puisse être sûr suite à ce scrutin est que la seule candidature qui ne devait pas gagner était PARIS :&#124;. En effet, si plus de 50% d&#8217;une population préfère [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>La <a href="http://www.olympic.org/fr/index_fr.asp">réponse</a> est tombée, London accueillera les jeux olympiques en 2012 :(. Consolons-nous en nous disant que les anglais ne sont pas au bout du monde&#8230; Toujours est-il qu&rsquo;il y a quand même une déduction à faire de ce résultat. C&rsquo;est que la seule chose dont-on puisse être sûr suite à ce scrutin est que la seule candidature qui ne devait pas gagner était PARIS :|.</p>
<p>En effet, si plus de 50% d&rsquo;une population préfère Londres, alors Paris ne devait pas gagner. Mais qu&rsquo;en est-il de Madrid qui par une astuce atypique a eu moins de vote à son dernier tour qu&rsquo;au précédent. Si cette candidature avait été en finale face à l&rsquo;Angleterre, n&rsquo;aurait-elle pas gagnée ? On ne peut pas le savoir. Ce que j&rsquo;ai appris de primordial en &laquo;&nbsp;Théorie du choix social&nbsp;&raquo;, c&rsquo;est qu&rsquo;un système de vote est forcémet imparfait. Celui-ci est certe plus proche de la vérité que notre système français d&rsquo;élection présidentielle, mais il permet aussi d&rsquo;élire l&rsquo;antépénultième candidature de la compétition. J&rsquo;aurai préféré un mode d&rsquo;élection de type championnat. Celui-ci a pour principal défaut de ne pas satisfaire la propriété de séparabilité, certes, mais vu que l&rsquo;on ne sépare pas les électeurs du comité, c&rsquo;est à mes yeux une meilleure solution.</p>
<p>PS: mais je changerai peut être d&rsquo;avis quand je serai un peu moins dégoutté.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
