Wednesday, October 31, 2018

Selected theoretical publications on GA clustering and source code isomorphism.

Data Clustering using Genetic Algorithm. Zheyung Feng.

Работа написана в 2012 и обладает максимально возможной , полнотой описания операторов
генетического алгоритма и их воздействие на производительность и определение глобального
минимума. Показывается добавление шагов k-mean к каждой итерации генетического алгоритма,
что приводит к заметному уменьшению шагов решения. Так же определено, что предварительная
сортировка данных приводит к увеличению вероятности нахождения локального минимума, но
операторы генетического алгоритма могут быть подобраны так, что исправляют эту возможную
ситуацию. Так же затронут вопрос неевклидовых кластеров вытянутой или серповидной формы, за
их нахождение отвечают операторы селекции, объединяющие и удаляющие кластера. Статья
является наглядным пособием по созданию инструментов классификации на основе GA.

Implementation and Analysis of Graph Algorithm Used for Software Plagiatism Identification. Dr. Carlos Rivero

То , что среди статей об классификации данных освещаю и статьи по поиску плагиата в
программах, говорит о моей цели объединить два механизма определения схожести.
Классификатор и анализ изоморфизма связаны между собой в том , что классификация кода не
может быть представлена евклидовом пространством, вместо этого определением разницы в коде
может заниматься изоморфный анализ графов активности, полученных ANTLR.
В статье не только рассматривается способ сохранения AST ,  в базе данных графов Neo4j , но и
алгоритм нахождения подобных поддеревьев в полученной базе данных. К сожалению, средства
нахождения изоморфизма в работе не указан, но они ссылаются на  GraphQL и Nema.

Parallel programing with Inductive Synthesis. Shaon Barman, Rastislav Bodik, Sagar Jain, Yewen Pu, Saurabh Srivastava, and Nicholas Tung.

Эта работа может показаться сугубо математической, так как в ней обсуждается нахождение
коэффициентов факторизованного представления полинома, но в целом она рассказывает более
общий принцип адаптации выбранного алгоритма к необходимому математическому решению с
помощью gpu. Если представить, что генетический алгоритм действительно найдет подходящий
для решения проблем программный код, то параметры взаимодействия с этим кодом, как и
внутренние коэффициенты нужно будет вычислить. При этом можно применять индуктивный
подход. Такая операция перебора и определения коэффициентов возможна с помощью gpu.

Abstract Syntax Tree Generation using Modified Grammar for Source Code Plagiatism Detection. Resmi N. G. Soman K. P.

 В статье от Resmi и Soman обсуждается каким образом пробовать делать грамматику для ANTLR ,
инвариантной к стилю написания кода. Затрагивается проблема вариаций в синтаксисе и
адаптация к комментариям и другим не связанным с синтаксисом элементам. Но к сожалению , не
решена инвариантность синтаксического сахара. Метод фильтрации кода  на уровне грамматики ,

в принципе можно использовать как базовый при внесении AST в базу данных ArangoDB, но
парсинг полноценной грамматики и вычисление разницы между графами может пополнить
метаданные вершин графа, оставленными автором комментариями.

Genetic Algorithm for Clustering with an Ordered Representation. Jay Bhuyan

Работа представлена в 1991 году и отражает использование генетического алгоритма в
кластеризации данных, как нового метода, позволяющего обходить локальные минимумы в
решении. В примере рассматривается евклидово пространство и два вида жадных алгоритмов.
Алгоритм называется жадным , если он принимает во внимание оптимальное решение на каждом
шаге алгоритма.
Если данные заранее отсортированы , с применением эвристического сравнения данных между
собой, то генетический алгоритм получает схожесть.
Автор показывает , что применение эвристических правил в генетическом алгоритме позволяет
балансировать между производительностью и точностью. Также в эвристике автор предлагает
использовать противоположные суждения, для того чтобы найти глобальный оптимум. И главной
идеей является утверждение в том , что подготовленные данные лучше поддаются
классификации, и в этом могут помочь сортировки больших данных, которые я описал в  блоге .

Monday, September 10, 2018

.NET Portability Analyzer

Когда то использовал автоматический анализатор кода для проверки совместимости .NET приложений с Xamarin платформой. Мое приложение тогда показало 100% совместимость, все таки Mono+GtkSharp. Теперь портируя приложения на .Net Core тоже использую подобный анализатор.

Собрать можно с помощью скрипта

.\build.ps1 -Configuration Debug -Platform AnyCPU

после этого посмотреть установленные на компьютере платформы

.\ApiPort.exe listTargets

Проверить, что требует портирования, задав платформы:

.\ApiPort.exe analyze -f "my.exe" -t ".NET Framework, Version=4.6.2" -t ".Net Core, Version=2.1" -r HTML -o AnalysisReport.html

Еще, есть UI, тем более что WPF уже будет в .NET Core 3.0

Вот какого плана создается отчет

Target type .Net Core,Version=v2.1 .NET Framework,Version=v4.6.2 Recommended changes
Microsoft.AspNetCore.StaticFiles.FileExtensionContentTypeProvider
#ctor
get_Mappings
TryGetContentType(System.String,System.String@)
Microsoft.VisualBasic.Devices.ComputerInfo
#ctor
get_AvailablePhysicalMemory
get_OSFullName
get_TotalPhysicalMemory
System.Configuration.ConfigurationElement Use configuration appropriate for your application model. For portable Framework Components, expose API for configuration on type.
#ctor Use configuration appropriate for your application model. For portable Framework Components, expose API for configuration on type.
get_Item(System.String) Use configuration appropriate for your application model. For portable Framework Components, expose API for configuration on type.
set_Item(System.String,System.Object) Use configuration appropriate for your application model. For portable Framework Components, expose API for configuration on type.
System.Configuration.ConfigurationManager Use configuration appropriate for your application model. For portable Framework Components, expose API for configuration on type.
get_AppSettings Use configuration appropriate for your application model. For portable Framework Components, expose API for configuration on type.
GetSection(System.String) Use configuration appropriate for your application model. For portable Framework Components, expose API for configuration on type.
System.Configuration.ConfigurationPropertyAttribute Use configuration appropriate for your application model. For portable Framework Components, expose API for configuration on type.
#ctor(System.String) Use configuration appropriate for your application model. For portable Framework Components, expose API for configuration on type.
System.Configuration.ConfigurationSection Use configuration appropriate for your application model. For portable Framework Components, expose API for configuration on type.
#ctor Use configuration appropriate for your application model. For portable Framework Components, expose API for configuration on type.

debug magazine archive

  71 jounals still available on issuu with great story of netlabels time.  debug_mag Publisher Publications - Issuu