среда, 28 июля 2010 г.

Генетическое программирование на C#

Для изучения C# написал библиотеку работы с генетическим программированием. Это базовая реализация. На счет пополнения функционалом нечего не знаю. Пока оно умеет аппроксимировать табличные данные. Пример табличных данных имеется.

github

Также провел сравнение с .Net Framework с Windows 7.
Какая именно версия там, точно сказать не могу, поскольку запуск проводил не я, а запускающий не знает где это глянуть (как и я). Версия mono 2.6.3.
Результаты такие:
На тесте abs_cos.csv алгоритм делал 100 шагов. Время от 10 запусков засекалось и бралось среднее.  mono оказался в 2 с копейками раза медленней. что не так плохо, как мне казалось.

пятница, 16 июля 2010 г.

Вызываем C код из C#

Не найдя устраивающей меня библиотеки для C# для работы с матрицами (уровня libgsl) нашел простой способ вызова C кода из C#. Делается все элементарно.  Есть такая штука, как System.Runtime.InteropServices. А в ней объявлен атрибут DllImport. Вот, что пишет MSDN:

"Атрибут DllImportAttribute предоставляет сведения, необходимые для вызова функции, экспортированной из неуправляемой динамической библиотеки (DLL).Минимальным требованием является указание имени динамической библиотеки (DLL), содержащей точку входа."

А вот и пример привязки к gsl. Класс Matrix. Умеет только создаваться и метод для доступа к матрице.

using System;
using System.Runtime.InteropServices;
namespace test
{
   
    class GslMatrix
    {
        [DllImport("libgsl.dll")]
        static extern IntPtr gsl_matrix_alloc(int n1,int n2);
        [DllImport("libgsl.dll")]
        static extern double gsl_matrix_get(IntPtr m,int i,int j);
        [DllImport("libgsl.dll")]
        static extern double gsl_matrix_set(IntPtr m,int i,int j,double v);
       
        private IntPtr data;
        public  int Rows {get;set;}
        public  int Cols {get;set;}
        public GslMatrix(int rows,int cols){
            data=gsl_matrix_alloc(rows,cols);
            Cols=cols;
            Rows=rows;
        }
        public double this[int i,int j]{
            get{
                return gsl_matrix_get(data,i,j);
            }
            set{
                gsl_matrix_set(data,i,j,value);
            }
        }
        public override string ToString ()
        {
            string result="";
            for(int i=0;i
                for(int j=0;j
                    result+=string.Format("{0} ",this[i,j]);
                result+="\n";
            }
            return result;
        }
    }
    class MainClass
    {       
        public static void Main (string[] args)
        {
            var mtr=new GslMatrix(2,2);
            mtr[0,0]=1;mtr[0,1]=1;
            mtr[1,0]=2;mtr[0,0]=2;
            Console.WriteLine(mtr.ToString());
        }
    }
}

среда, 14 июля 2010 г.

Bugs Everywhere

собственно subj. Это системы хранения заметок-ошибок. Ошибки она может хранить в репе систем контроля версий (держит Arch, Bazaar, Darcs, Git, Mercurial, Monotone). Поддерживает комментирование ошибок. Интерфейс у нее cli. Умеет dump в виде html. Написана на python.


Оф. сайт.

понедельник, 12 июля 2010 г.

Todo в Mercurial репозитории.

Нашел интересное расширение для hg. Позволяет вести ToDo листы прямо в hg репозитории. Позволяет их передавать в родительский реп при комманде push --all-tasks или передавать только завершенные --completed-tasks.

updated
Есть такая же штуковина но для git. Умеет тоже самое

четверг, 8 июля 2010 г.

Ubuntu 10.04 и Monodevelop 2.4

Последняя доступная версия для Ubuntu это 2.2. ДЛя установки новой версии (2.4) можно сделать следующее:

C# и линейная алгебра.

Наткнулся на такую штуку, как numerics Math.Net. Не знаю, может и баян, но для меня, как новичка в C# и .Net в целом, это новинка. Пока не пробовал, но по описанию вполне вкусно.

Попробовал написать нейронную сеть на C#. Каждый слой считается в несколько  потоков. Мучился примерно часа 4. Оно и понятно, язык не знаком, библиотеки тоже. Но получилось. Скорость работы многопоточной версии в 3 раза выше, чем у однопоточной. На больших данных, конечно

вторник, 6 июля 2010 г.

Windows 7.

В данный момент занимаюсь изучением C#. Язык очень интересный. В него запихали почти все, что придумали в области ЯПВУ. Тесты делал в MonoDevelop. Раз C# развивается совместно с .NET, то логично поставить Windows и VisualStudio и пробовать C# там. У брата на ноуте установлена Window7. Ну раз это последняя версия данной ОС, то и старых багов там должно быть меньше. Решил ее посмотреть на его ноуте. После получаса работы, при попытке скопировать папку из сети вылетел проводник, но восстановился почти сразу. Делал проводник это с завидным постоянством. Новая навороченная панель мне показалась удобной. Но лишь по первому времени. Потом она стала меня бесить. Необходимость антивируса который есть некислый процент ресурсов, тоже не добавил плюсов. После двух часов мучений я забил на этот процесс. В Mono хоть и не самая последняя версия .Net, но реализация C# на уровне. Так и остался в родной Ubutnu 10.04.

воскресенье, 4 июля 2010 г.

Из белгорода в мин.воды

Если необходимо выехать из белгорода в южное направление, а на 27 поезд не билетов, то можно ехать через Россошь. 4.5 часа на автобусе от белгорода + 15 минут от автовокзала до ж.д. вокзала. Как вариант, поезд С. Питербург - Кисловодск ходит каждый день.