Advertisement
prog

Integer NLP Solver

May 28th, 2011
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Solves the non linear system:
  2. // a² + b² = 45
  3. // b² + c² = 40
  4. // Where a, b and c are integers
  5.  
  6. function o(x)
  7. {
  8.   return Math.abs(x[0]*x[0] + x[1]*x[1] - 45) +
  9.          Math.abs(x[1]*x[1] + x[2]*x[2] - 40);
  10. }
  11.  
  12. function mutate(x)
  13. {
  14.   var x2 = x.slice(0); // clone
  15.  
  16.   for (var i = 0; i < x.length; i++)
  17.   {
  18.     var r = Math.random();
  19.     x2[i] += r < 1/3 ? -1 : r < 2/3 ? 0 : 1;
  20.   }
  21.  
  22.   return x2;
  23. }
  24.  
  25. var x = [10, 10, 10];
  26. var u = o(x);
  27.  
  28. var count = 0;
  29. while (u != 0)
  30. {
  31.   var x2 = mutate(x);
  32.   var n = o(x2);
  33.   if (n <= u)
  34.   {
  35.     u = n;
  36.     x = x2;
  37.   }
  38.   count++;
  39.   if (count == 1000)
  40.   {
  41.     break;
  42.   }
  43. }
  44.  
  45. WScript.Echo(x + ' (' + count + ' iterations)');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement