Advertisement
rnort

tpr-2

Oct 17th, 2012
366
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.13 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace TPR_2_Console
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.  
  13.             ICollection<Entity> teachingRow = Entity.GenerateEntities(
  14.                 new[] { 0, 1, 1, 2, 1, 1, 0, 2, 2, 5, 5, 4, 3, 5, 4, 3, 2, 4, 8, 3 },
  15.                 new[] { 1, 0, 1, 2, 3, 2, 0, 1, 3, 1, 3, 3, 6, 5, 4, 5, 7, 6, 1, 7 },
  16.                 new[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
  17.                 );
  18.             Entity weightVector = new Entity(1,1,1);
  19.            
  20.             Double alpha = 0.00005;
  21.             Int32 tag = 1, iter = 0, a = 1;
  22.             Int32 resultY;
  23.  
  24.             while ( tag != 0 )
  25.             {
  26.                 tag = 0;
  27.                 foreach( Entity e in teachingRow)
  28.                 {
  29.                     Console.WriteLine("{0} {1} {2}", weightVector.X, weightVector.Y, weightVector.Class);
  30.                     if( weightVector.X * e.X + weightVector.Y * e.Y <= weightVector.Class)
  31.                     {
  32.                         resultY = 0;
  33.                     }
  34.                     else
  35.                     {
  36.                         resultY = 1;
  37.                     }
  38.                     if ( resultY != e.Class)
  39.                     {
  40.                         ++tag;
  41.                     }
  42.                     else
  43.                     {
  44.                         continue;
  45.                     }
  46.                     switch( a )
  47.                     {
  48.                         case 1:
  49.                             weightVector.X += alpha * e.X * (e.Class - resultY);
  50.                             ++a;
  51.                             break;
  52.                         case 2:
  53.                             weightVector.Y += alpha * e.Y * (e.Class - resultY);
  54.                             ++a;
  55.                             break;
  56.                         case 3:
  57.                             weightVector.Class += alpha * (e.Class - resultY);
  58.                             a = 1;
  59.                             break;
  60.                         default:
  61.                             break;
  62.                     }
  63.                 }
  64.                 ++iter;
  65.             }
  66.             Console.WriteLine("{0} {1} {2}", weightVector.X, weightVector.Y, weightVector.Class);
  67.             Console.ReadKey();
  68.         }
  69.     }
  70.  
  71.  
  72.  
  73.     public class Entity
  74.     {
  75.         public Double X { get; set; }
  76.         public Double Y { get; set; }
  77.         public Double Class { get; set; }
  78.  
  79.         public Entity()
  80.         {
  81.  
  82.         }
  83.  
  84.         public Entity(Int32 X, Int32 Y, Int32 Class)
  85.         {
  86.             this.X = X;
  87.             this.Y = Y;
  88.             this.Class = Class;
  89.         }
  90.  
  91.         public static ICollection<Entity> GenerateEntities( Int32[] xArray, Int32[] yArray, Int32[] classArray)
  92.         {
  93.             ICollection<Entity> entities = new List<Entity>();
  94.             for ( int i = 0; i < xArray.Length; ++i)
  95.             {
  96.                 entities.Add(new Entity()
  97.                 {
  98.                     X = xArray[i],
  99.                     Y = yArray[i],
  100.                     Class = classArray[i]
  101.                 });
  102.             }
  103.             return entities;
  104.         }
  105.     }
  106.  
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement