Семинар по интервальным вычислениям на Java
description
Transcript of Семинар по интервальным вычислениям на Java
Семинар по интервальным вычислениям на Java
С. И. ЖилинАлтайский Государственный УниверситетБарнаул, Россия[email protected]
Д. Ю. НадёжинООО “Оракл Девелопмент Спб” Санкт-Петербург, Россия[email protected]
МАК’13
План
Введение в интервальные вычисления Проект стандарта P1788: основные идеи Установка и настройка ПО Простейшая программа (создание проекта) Интервалы: виды, контексты, операции Вектора и матрицы ИСЛАУ Разное
Барнаул, 28 Июня 2013 МАК 2013 2 / 60
Проект стандарта P1788
Уровни спецификации: 1, 2, 3, 4 Стили: теоретико-множественный, Каухера Классические интервалы – общие для всех стилей Декоры Интервальный тип (уровень 2)
Барнаул, 28 Июня 2013 МАК 2013 3 / 60
Уровни спецификации
1: Уровень математической модели 2: Уровень интервальных типов данных 3: Уровень представлений 4: Уровень цепочек битов
Барнаул, 28 Июня 2013 МАК 2013 4 / 60
Классические интервалы
[a,b], a <= b
Барнаул, 28 Июня 2013 МАК 2013 5 / 60
Теоретико-множественный стиль
[a,b], a <= b ∅ [-∞,b] [a,+∞] [-∞,+∞]
Барнаул, 28 Июня 2013 МАК 2013 6 / 60
Стиль Каухера
[a,b], a <= b [a,b], a > b
Барнаул, 28 Июня 2013 МАК 2013 7 / 60
Декоры
f(x) Dom(f) Com: x - непусто, x Dom(⊆ f) , f(x) непрерывна в каждой точке
интервала x ∊ x, результат – ограниченный интервал Dac: x - непусто, x Dom(⊆ f) , ограничение f(x) на x непрерывно Def: x - непусто, x Dom(⊆ f) Trv: всегда true Ill: не интервал NaI, формально Dom(f) пуст
Барнаул, 28 Июня 2013 МАК 2013 8 / 60
Декоры
f(x) = 1/x Dom(f)=[-∞,0) (0,+∞]∪
f([1,2]_com) = [½,1]_com f([1,+∞]_com) = [0,1]_dac sign([0,½]_com)=[0,1]_def f([0,1]_com) = [1,+∞]_trv f([0,0]_com) = [empty]_trv nums2interval(2,1) = [empty]_ill
Барнаул, 28 Июня 2013 МАК 2013 9 / 60
Интервальный тип (уровень 2)
Конечное подможество мноожества математических интервалов
Функция hull – проекция из всех математических интервалов в указанное подмножество
Барнаул, 28 Июня 2013 МАК 2013 10 / 60
Установка и настройка ПО
Java 7.0u25 и NetBeans 7.3 Ant или Maven Готовый Maven - репозиторий ~/.m2 После окончания семинара можно поправить
<offline>false</offline>в файле ~/.m2/settings.xml Не обязательно – исходные тексты Jinterval~/NetBeansProjects/net.java.jinterval~svn
Барнаул, 28 Июня 2013 МАК 2013 11 / 60
Создание проекта
File|New Project... Choose Project|Maven|Java Application|Next> Project name: tutor-rational GroupId: ru.asu Package: ru.asu.tutor.rational Enter
Open ru.asu.tutor.rational.App
Барнаул, 28 Июня 2013 МАК 2013 12 / 60
NetBeans не знает про Rational
package ru.asu.tutor.rational;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
Rational[] rats = {
Rational.zero()
};
System.out.println( "Hello World!" );
}
}
Барнаул, 28 Июня 2013 МАК 2013 13 / 60
Добавление зависимостей
Выбираем в Projects узелtutor-rational|Dependencies Щелчок правой кнопкой мыши Add dependency Query: rational Unfold: net.java.jinterval:jinterval-rational-java Choose: 0.1-SNAPSHOT [ jar ] local В окне редактирования правая кнопка мыши FixImport
Барнаул, 28 Июня 2013 МАК 2013 14 / 60
Импорт вставлен
package ru.asu.tutor.rational;
import net.java.jinterval.rational.Rational;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
Rational[] rats = {
Rational.zero()
};
}
}
Барнаул, 28 Июня 2013 МАК 2013 15 / 60
Способы создания Rational
package ru.asu.tutor.rational;
import net.java.jinterval.rational.Rational;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
Rational[] rats = {
Rational.zero(),
Rational.valueOf(2),
Rational.valueOf(0.1),
Rational.valueOf(1, 10)
};
for (Rational r: rats) {
System.out.println(r);
}
}
}
Барнаул, 28 Июня 2013 МАК 2013 16 / 60
Способы вывода Rational
MathContext mc20f = new MathContext(20, RoundingMode.FLOOR);
MathContext mc20c = new MathContext(20, RoundingMode.CEILING);
for (Rational r: rats) {
System.out.println(r +
" " + r.doubleValue() +
" [" + r.bigDecimalValue(mc20f) +
"," + r.bigDecimalValue(mc20c) +
"]");
}
0.0 0.0 [0,0]
+0x1p1 2.0 [2,2]
+0xccccccccccccdp-55 0.1 [0.10000000000000000555,0.10000000000000000556]
+0x1/0x5*2^-1 0.1 [0.1,0.1]
Барнаул, 28 Июня 2013 МАК 2013 17 / 60
Точные операции над Rational
ExtendedRational diff = ExtendedRationalOps.subtract(rats[2], rats[3]);
System.out.println("diff " + diff
+ " " + diff.doubleValue()
+ " [" + diff.bigDecimalValue(mc20f)
+ "," + diff.bigDecimalValue(mc20c)
+ "]");
diff +0x1/0x5*2^-55 5.551115123125783E-18 [5.5511151231257827021E-18,5.5511151231257827022E-18]
Барнаул, 28 Июня 2013 МАК 2013 18 / 60
Javadoc нет, взглянем на исходники
File|Open Project... ~/NetBeansProject/net.java.jinterval~svn/trunk/jinterval В Projects раскрыть jinterval|Modules Получили список подпроектов jinterval Двойной шелчок на jinterval-rational-java Раскрыть jinterval-rational-java|Source packages Получили список пакетов Раскрыть net.java.jinterval.rational Откроем ExtendedRationalContext
Барнаул, 28 Июня 2013 МАК 2013 19 / 60
Rump Example in Rationals
File|Open Project... ~/NetBeansProjects/RumpExample
Барнаул, 28 Июня 2013 МАК 2013 20 / 60
WHY INTERVAL COMPUTATIONS IN JVM?JInterval Library: Principles, Development, and Perspectives
Барнаул, 28 Июня 2013 МАК 2013 21 / 60
Java Is Popular
TIOBE Programming Community Index for September 2012– Calculated by counting hits of the most popular search engines
Барнаул, 28 Июня 2013 МАК 2013 22 / 60
Java Is Popular
RedMonk’s language ranking for September 2012
Барнаул, 28 Июня 2013 МАК 2013
Popularity Rank on Github.com (by # of projects)
Popularity Rank on StackOverflow
.com (by # of
tags)
23 / 60
Java Is Popular
Bookscan's reports on the top 3,000 titles sold
Барнаул, 28 Июня 2013 МАК 2013 24 / 60
Gap between Interval and Applied Software
Java is an attractive and widely adopted technology for applied software development
– Cross-platform portability of applications– General purpose object-oriented language – Almost any language can generate Java bytecodes– Advanced tools for distributed systems development– Huge amount of applied libraries
Interval analysis and interval computations have proved to be useful in numerous real-world applications
Interval software in Java is of fragmentary character Creation of systematic full-featured high-level interval library for
Java brings interval tools closer to developers of applied software
Барнаул, 28 Июня 2013 МАК 2013 25 / 60
Interval Computations in Java
Pro:• Portability of Java Virtual Machine (JVM)• Safe memory management
(no memory leaks and pointer errors)• Network-aware environment• Parallel and distributed computing
(threads, RMI)• Strict model of security • Standard API for GUI, graphics, DBMS, …• Widely adopted
– Embedded systems, browsers, …– Development, teaching, …
Con:• Low performance
– Virtual machine– Interpretation is slow– Overhead cost of safe memory management
• Language restrictions– No primitive structure type– No operator overloading– No traditional multidimesional arrays– No full compliance with IEEE 754*
• Relatively small number of scientific libraries on Java
• Scientific computing traditions: Fortran, С/С++
Барнаул, 28 Июня 2013 МАК 2013
Is Java suitable for scientific computing?
*Kahan W., Darcy J.D. How Java’s Floating-Point Hurts Everyone Everywhere//ACM 1998 Workshop on Java forHigh–Performance Network Computing, Stanford University, March 1998, http://www.cs.berkeley.edu/~wkahan/JAVAhurt.pdf
26 / 60
Interval Java Libraries
IA_math, 1997– Classic IA, classic interval elementary functions– Timothy J. Hickey, – Brandeis University, Boston, USA– interval.sourceforge.net/interval/
Java-XSC, 1999 – Classic IA, rectangular complex IA, classic interval elementary functions,
classic and complex interval vectors and matrices– Benjamin R.C. Bedregal, Jose E.M. Dutra – Universidade Federal do Rio Grande do Norte, Natal, Brazil – www.dimap.ufrn.br/~java-xsc/jxsc2007.html
Барнаул, 28 Июня 2013 МАК 2013 27 / 60
JINTERVAL EVOLUTIONJInterval Library: Principles, Development, and Perspectives
Барнаул, 28 Июня 2013 МАК 2013 28 / 60
Stages of JInterval Evolution
Sep 2008 JInterval is started as undergraduate student project ”Childhood” at Altai State University (Barnaul, Russia)
http://code.google.com/p/javaintervalmathasu/
Aug 2009 Dmitry Nadezhin (Sun Labs, Zelenograd, Russia) “Boyhood” joins the project
http://kenai.com/projects/jinterval
Jan 2012 Developing reference implementation and “Youth” test suite for P1788 becomes Priority #1
http://java.net/projects/jinterval orhttp://jinterval.java.net
Барнаул, 28 Июня 2013 МАК 2013 29 / 60
JInterval (Boyhood): A Priori Requirements
The library
1. Must be clear and easy to use
2. Should provide flexibility in the choice of interval algebra for computations
3. Should provide flexibility to extend its functionality
4. Should provide flexibility in choosing precision of interval boundaries and associated rounding policies
5. Must be portable
6. Should provide high performance7. Must be open source
Барнаул, 28 Июня 2013 МАК 2013 30 / 60
Priority
JInterval (Boyhood): Architecture
“Fast” branch: – Interval bounds: double, nearest rounding– IA: set-based, Kaucher, complex rectangular, complex circular, complex ring,
complex polar– Interval elementary functions, vectors, matrices – ILS: Gauss, Gauss-Seidel, subdifferential Newton, NonNeg, Shaidurov
“Rational bounds” branch: – Interval bounds: smart rational/double, arbitrary precision, rounding
policies, contexts – IA: set-based– Interval elementary functions, vectors, matrices
Generic interfaces on top of branches
Барнаул, 28 Июня 2013 МАК 2013 31 / 60
JInterval (Boyhood): Type Hierarchy
Барнаул, 28 Июня 2013 МАК 2013 32 / 60
Interval
ClassicRealInterval ComplexInterval
RealInterval
DoubleIntervalDoubleInterval
RationalIntervalRationalInterval
ComplexIntervalCircleComplexIntervalCircle
ComplexIntervalRectangleComplexIntervalRectangle
ComplexIntervalPolarComplexIntervalPolar
ComplexIntervalRingComplexIntervalRing
JInterval (Boyhood): Lessons Learned
Барнаул, 28 Июня 2013 МАК 2013 33 / 60
Problem Possible Solution
Java syntax is not expressive enough for calculations
Developing Scala API for a new JInterval implementation
JInterval is not compliant with the project of interval standard IEEE P1788
Redesign the library according to IEEE P1788
Low performance Using optional plugins for native code of high precision arithmetic and interval linear algebra algorithms through JNA
Java
r = x.add(y.multiply(z));
Scala
r = x + y*z
ARCHITECTUREJInterval Library: Principles, Development, and Perspectives
Барнаул, 28 Июня 2013 МАК 2013 34 / 60
Class Diagram (package net.java.jinterval.interval)
Барнаул, 28 Июня 2013 МАК 2013 35 / 60
Key-role Interfaces
Барнаул, 28 Июня 2013 МАК 2013 36 / 60
Types graph follows the flavor structure of P1788
Java interfaces:– Interval
Common methods for all flavors
– SetInterval Extends Interval with methods for
flavor ‘Set Interval’
– KaucherIntervalExtends Interval with methods for
flavor ‘Kaucher interval’
– ClassicInterval Extends all flavors, because can be
mapped to related flavor intervals
Interface Interval: common methods of all flavors
Барнаул, 28 Июня 2013 МАК 2013 37 / 60
Interval defines common methods of all interval flavors
Defines numerical and boolean operations only
IntervalContext: interval operations interface
Барнаул, 28 Июня 2013 МАК 2013 38 / 60
Generic interface IntervalContext defines signature for interval-valued methods
KaucherIntervalContext: interval flavor interface
Барнаул, 28 Июня 2013 МАК 2013 39 / 60
KaucherIntervalContext extends IntervalContextand binds type variable I to Kaucher interval flavor
Implementation of interval contexts
There may be several implementations for flavor contexts– SetIntervalContextInfSupBase and SetIntervalContextInfSup are two tightest implementations of set interval operations and functions (P1788 Level 2, InfSup_F).
Барнаул, 28 Июня 2013 МАК 2013 40 / 60
Factory classes for interval contexts
Барнаул, 28 Июня 2013 МАК 2013 41 / 60
Factory classes create particular instances of interval contexts– SetIntervalContexts– KaucherIntervalContexts
Exact context
Барнаул, 28 Июня 2013 МАК 2013 42 / 60
Static method getExact() creates the exact context All operations in the exact context return intervals with rational
bounds – P1788 Level 1 results or throw IrrationalException
InfSup_F contexts
Барнаул, 28 Июня 2013 МАК 2013 43 / 60
Static method getInfSup(BinaryValueSet numberFormat) creates the InfsSup_F contexts with binary floating-point interval representations (BINARY32, BINARY64, BINARY128, …, BINARY1024)
jintervalAggregator of JInterval
Core Module Dependencies Graph
Барнаул, 28 Июня 2013 МАК 2013 44 / 60
jinterval-irInterval regression solverjinterval-irInterval regression solver
jinterval-ilsInterval linear equation system solverjinterval-ilsInterval linear equation system solver
jinterval-interval-java Intervals, IAs, interval elem. functionsjinterval-interval-java Intervals, IAs, interval elem. functions
jinterval-rational-java Rational numbersjinterval-rational-java Rational numbers
fortress-roundingRounding class from Fortressfortress-roundingRounding class from Fortress
boehm-crealsBoehm’s constructive realsboehm-crealsBoehm’s constructive reals
mpfr-adapterJNA adapter for native GNU MPFRmpfr-adapterJNA adapter for native GNU MPFR
commons-math3Apache Commons Math 3.0commons-math3Apache Commons Math 3.0
lpsolveJava port of lp_solvelpsolveJava port of lp_solve
jnaJava access to native librariesjnaJava access to native libraries
large-test-javaJInterval testslarge-test-javaJInterval tests
commons-compressApache Commons Compress 1.4commons-compressApache Commons Compress 1.4
External dependenciesJInterval packages
FUNCTIONALITY AND EXAMPLESJInterval Library: Principles, Development, and Perspectives
Барнаул, 28 Июня 2013 МАК 2013 45 / 60
Functionality of JInterval (Youth)
Rational arithmetic– flexible inner representation
(rational, binary32, binary64, binary128,…)
– exact and approximate operations
Extended Rational arithmetic– Rational + {-∞ , +∞}
Interval Arithmetic– Set-based– Kaucher
Elementary Functions– According to P1788
Dense Vectors and Matrices– Rational, extended rational– Interval
Solvers– ILS Solvers
• Hansen-Bliek-Rohn-Ning-Kearfott enclosure +Gauss-Seidel
• Subdifferential Newton– Interval linear regression solver
• Data consistency check• Outlier detection• Object status detection• Interval prediction
Барнаул, 28 Июня 2013 МАК 2013 46 / 60
Example 1.1. Contexts and Simple Expressions
Барнаул, 28 Июня 2013 МАК 2013 47 / 60
x+y = [3.0,5.0]x/y = [0.333251953125,1.0]x+y = [3.0,5.0]x/y = [0.333251953125,1.0]
, , , .
Example 1.2. Contexts and Simple Expressions
Барнаул, 28 Июня 2013 МАК 2013 48 / 60
x+y = [3.0,5.0]x/y = [0.3333333134651184,1.0]x+y = [3.0,5.0]x/y = [0.3333333134651184,1.0]
, , , .
Example 1.3. Contexts and Simple Expressions
Барнаул, 28 Июня 2013 МАК 2013 49 / 60
x+y = [3.0,5.0]x/y = [+0x15555555555555555555555555555p-114,+0x1p0] ([0.3333333333333333,1.0])
x+y = [3.0,5.0]x/y = [+0x15555555555555555555555555555p-114,+0x1p0] ([0.3333333333333333,1.0])
, , , .
Example 1.4. Contexts and Simple Expressions
Барнаул, 28 Июня 2013 МАК 2013 50 / 60
x+y = [3.0,5.0]x/y = [+0x1/0x3*2^0,+0x1p0]([0.3333333333333333,1.0])x+y = [3.0,5.0]x/y = [+0x1/0x3*2^0,+0x1p0]([0.3333333333333333,1.0])
, , , .
Example 2.1. Decorations
Барнаул, 28 Июня 2013 МАК 2013 51 / 60
sqrt([0.0,1.0]) = [0.0,1.0] COM
sqrt([-1.0,1.0]) = [0.0,1.0] CON
sqrt([-2.0,-1.0]) = [EMPTY] NDF
sqrt([EMPTY]) = [EMPTY] SAF
sqrt([0.0,1.0]) = [0.0,1.0] COM
sqrt([-1.0,1.0]) = [0.0,1.0] CON
sqrt([-2.0,-1.0]) = [EMPTY] NDF
sqrt([EMPTY]) = [EMPTY] SAF
Example 2.2. Decorations
Барнаул, 28 Июня 2013 МАК 2013 52 / 60
1/[0.0,0.0] = [EMPTY] NDF
1/[0.0,1.0] = [1.0,Infinity] CON
1/[4.9E-324,1.0] = [1.0,Infinity] SAF
x = [0.0,Infinity] SAF y = 1/x = [0.0,Infinity] CON
1/[0.0,0.0] = [EMPTY] NDF
1/[0.0,1.0] = [1.0,Infinity] CON
1/[4.9E-324,1.0] = [1.0,Infinity] SAF
x = [0.0,Infinity] SAF y = 1/x = [0.0,Infinity] CON
Example 3. (Rump)
Барнаул, 28 Июня 2013 МАК 2013 53 / 60
Compute for , and
Example 3. (Rump) using ExtendedRational
Барнаул, 28 Июня 2013 МАК 2013 54 / 60
Example 3. (Rump) using ExtendedRational
Барнаул, 28 Июня 2013 МАК 2013 55 / 60
=== BINARY16 ===r=NaN=== BINARY32 ===r=1.172603964805603 +0x9617e3p-23=== BINARY64 ===r=-1.1805916207174113E21 -0x1p70=== BINARY128 ===r=1.1726039400531787 +0x12c2fc595b06beb74a518f018c093p-112=== BINARY256 ===r=-0.8273960599468214 -0x69e81d3527ca0a45ad7387f39fb6bbbee6d0899f57af4ec62443141c771p-235=== Exact ===r=-0.8273960599468214 -0xd5ef/0x1029*2^-4
=== BINARY16 ===r=NaN=== BINARY32 ===r=1.172603964805603 +0x9617e3p-23=== BINARY64 ===r=-1.1805916207174113E21 -0x1p70=== BINARY128 ===r=1.1726039400531787 +0x12c2fc595b06beb74a518f018c093p-112=== BINARY256 ===r=-0.8273960599468214 -0x69e81d3527ca0a45ad7387f39fb6bbbee6d0899f57af4ec62443141c771p-235=== Exact ===r=-0.8273960599468214 -0xd5ef/0x1029*2^-4
Example 3. (Rump) using SetInterval
Барнаул, 28 Июня 2013 МАК 2013 56 / 60
Example 3. (Rump) using SetInterval
Барнаул, 28 Июня 2013 МАК 2013 57 / 60
=== BINARY16 ===i = [-Infinity,Infinity]=== BINARY32 ===i = [-6.972078301255262E30,6.972078905718172E30]=== BINARY64 ===i = [-8.264141345021879E21,5.902958103587058E21]=== BINARY128 ===i = [-0xffb4f40e9a93e50522d6b9c3f9dp-98,+0x12c2fc595b06beb74a518f018c093p-112] ([-1022.8273960599469,1.1726039400531787])=== BINARY256 ===i = [-0x69e81d3527ca0a45ad7387f39fb6bbbee6d0899f57af4ec62443141c771p-235, -0xd3d03a6a4f94148b5ae70fe73f6d777dcda1133eaf5e9d8c48862838ee1p-236] ([-0.8273960599468214,-0.8273960599468213])=== Exact ===i = [-0xd5ef/0x1029*2^-4,-0xd5ef/0x1029*2^-4] ([-0.8273960599468214,-0.8273960599468213])
Example 4. HBRNK enclosure
Барнаул, 28 Июня 2013 МАК 2013 58 / 60
Example 4. HBRNK enclosure using MatlabOps
Барнаул, 28 Июня 2013 МАК 2013 59 / 60
Example 5. Gauss-Seidel Solver
Барнаул, 28 Июня 2013 МАК 2013
A:/| [2.0,4.0] [-2.0,0.0] || [-1.0,0.0] [2.0,4.0] |\
b:/| [1.0,2.0] || [-2.0,2.0] |\
x:/| [-1.0,4.0] || [-1.5,3.0] |\
A:/| [2.0,4.0] [-2.0,0.0] || [-1.0,0.0] [2.0,4.0] |\
b:/| [1.0,2.0] || [-2.0,2.0] |\
x:/| [-1.0,4.0] || [-1.5,3.0] |\
60 / 60
APPLICATIONSJInterval Library: Principles, Development, and Perspectives
Барнаул, 28 Июня 2013 МАК 2013 61 / 60
P1788 Test framework
Барнаул, 28 Июня 2013 МАК 2013 62 / 60
FilibFilib
CXSCCXSC
PROFILPROFIL
BoostBoost
MPFIMPFILauncherLauncher
<NONAME><NONAME>
TestSet2.datTestSet2.dat
TestSet1.datTestSet1.dat
ReporttestFilibtestFilib
testCXSCtestCXSC
testPROFILtestPROFIL
testBoosttestBoost
testMPFItestMPFI
test<NONAME>test<NONAME>
TestSet3.datTestSet3.datIntervalLibraries Adapters
P1788 Test framework
Барнаул, 28 Июня 2013 МАК 2013 63 / 60
FilibFilib
CXSCCXSC
PROFILPROFIL
BoostBoost
MPFIMPFILauncherLauncher
<NONAME><NONAME>
TestSet1.datTestSet1.dat
TestSet3.datTestSet3.dat
TestSet2.datTestSet2.dat
ReporttestFilibtestFilib
testCXSCtestCXSC
testPROFILtestPROFIL
testBoosttestBoost
testMPFItestMPFI
test<NONAME>test<NONAME>
IntervalLibraries Adapters
P1788 Test framework
Барнаул, 28 Июня 2013 МАК 2013 64 / 60
FilibFilib
CXSCCXSC
PROFILPROFIL
BoostBoost
MPFIMPFILauncherLauncher
<NONAME><NONAME>
TestSet2.datTestSet2.dat
TestSet1.datTestSet1.dat
TestSet3.datTestSet3.dat
ReporttestFilibtestFilib
testCXSCtestCXSC
testPROFILtestPROFIL
testBoosttestBoost
testMPFItestMPFI
test<NONAME>test<NONAME>
IntervalLibraries Adapters
* div[1,2] [0,1][1,2] [0,0]* sqrt[-Infinity,0][-Infinity,Infinity]* pown[0,0] 0
* div[1,2] [0,1][1,2] [0,0]* sqrt[-Infinity,0][-Infinity,Infinity]* pown[0,0] 0
P1788 Test framework. Sample RuntestDemo.dat
== Filib 3.0.2div [1.0,2.0] [0.0,1.0] = [1.0,Infinity] : [1.0,Infinity] Okdiv [1.0,2.0] [0.0,0.0] = [EMPTY] : [1.7976931348623157E308,Infinity] NOT TIGHT!sqrt [-Infinity,0.0] = [0.0,0.0] : [0.0,0.0] Oksqrt [-Infinity,Infinity] = [0.0,Infinity] : [-4.9E-324,Infinity] NOT TIGHT!pown [0.0,0.0] 0 = [1.0,1.0] : [1.0,1.0] Ok==
== Boost 1.48.0div [1.0,2.0] [0.0,1.0] = [1.0,Infinity] : [1.0,Infinity] Okdiv [1.0,2.0] [0.0,0.0] = [EMPTY] : [EMPTY] Oksqrt [-Infinity,0.0] = [0.0,0.0] : [0.0,0.0] Oksqrt [-Infinity,Infinity] = [0.0,Infinity] : [0.0,Infinity] Okpown [0.0,0.0] 0 = [1.0,1.0] : [EMPTY] CONTAINMENT FAILURE!!!==
== MPFI 1.5.1div [1.0,2.0] [0.0,1.0] = [1.0,Infinity] : [1.0,Infinity] Okdiv [1.0,2.0] [0.0,0.0] = [EMPTY] : [-Infinity,Infinity] NOT TIGHT!sqrt [-Infinity,0.0] = [0.0,0.0] : [EMPTY] CONTAINMENT FAILURE!!!sqrt [-Infinity,Infinity] = [0.0,Infinity] : [EMPTY] CONTAINMENT FAILURE!!!Library has no Operation "pown" in line 7 : * pown==
== Filib 3.0.2div [1.0,2.0] [0.0,1.0] = [1.0,Infinity] : [1.0,Infinity] Okdiv [1.0,2.0] [0.0,0.0] = [EMPTY] : [1.7976931348623157E308,Infinity] NOT TIGHT!sqrt [-Infinity,0.0] = [0.0,0.0] : [0.0,0.0] Oksqrt [-Infinity,Infinity] = [0.0,Infinity] : [-4.9E-324,Infinity] NOT TIGHT!pown [0.0,0.0] 0 = [1.0,1.0] : [1.0,1.0] Ok==
== Boost 1.48.0div [1.0,2.0] [0.0,1.0] = [1.0,Infinity] : [1.0,Infinity] Okdiv [1.0,2.0] [0.0,0.0] = [EMPTY] : [EMPTY] Oksqrt [-Infinity,0.0] = [0.0,0.0] : [0.0,0.0] Oksqrt [-Infinity,Infinity] = [0.0,Infinity] : [0.0,Infinity] Okpown [0.0,0.0] 0 = [1.0,1.0] : [EMPTY] CONTAINMENT FAILURE!!!==
== MPFI 1.5.1div [1.0,2.0] [0.0,1.0] = [1.0,Infinity] : [1.0,Infinity] Okdiv [1.0,2.0] [0.0,0.0] = [EMPTY] : [-Infinity,Infinity] NOT TIGHT!sqrt [-Infinity,0.0] = [0.0,0.0] : [EMPTY] CONTAINMENT FAILURE!!!sqrt [-Infinity,Infinity] = [0.0,Infinity] : [EMPTY] CONTAINMENT FAILURE!!!Library has no Operation "pown" in line 7 : * pown==
Report
Барнаул, 28 Июня 2013 МАК 2013 65 / 60
KNIME
KNIME— open source data mining platform
Барнаул, 28 Июня 2013 МАК 2013 66 / 60
KNIME Interval Tools
KNIME— open source data mining platform
Барнаул, 28 Июня 2013 МАК 2013 67 / 60
KNIME Nodes for Interval Regression
Барнаул, 28 Июня 2013 МАК 2013 68 / 60
Builds linear interval regression model Y = f(X, A)
Interval Regression( Learner)
IR Outlier Detector
Calculates interval prediction Y* for X* using model Y = F(X, A)
Detects outliers (observations with underestimated error bound)
Interval Regression( Predictor)
IR Consistency
Checks consistency of input data and sets flow control variable
for IF switch
KNIME Nodes for ILS Solving
In previous version of “Interval Tools”:
Барнаул, 28 Июня 2013 МАК 2013 69 / 60
Computes inner/outer estimate of united/tolerable solution set and visualizes* 2D/3D united solution set
*Kraemer W. Computing and visualizing solutions sets of interval linear systems, Serdica J. Computing 1(4) 2007, 455-468.
ILS Solver
KNIME Nodes for ILS Solving
Барнаул, 28 Июня 2013 МАК 2013 70 / 60
Methods for united solution set estimation: – Outer:
Hansen-Bliek-Rohn-Ning-Kearfott enclosure + Gauss-Seidel
– Inner: Subdifferential Newton
Computes outer and inner estimates for united solution set of ILS Ax=b
ILS Solver ILS United Solution Set View
Visualizes 2D or 3D united solution set
Method: – I. A. Sharaya’s
algorithm for visualization of AE-solution sets
Under construction
KNIME Workflow for Image Recognition
Барнаул, 28 Июня 2013 МАК 2013 71 / 60
Prolubnikov A.V., Silitskiy S.A. On solving the problem of numeric matrices recognition using estimates of solution sets of interval systems of equations // Comp. Math. Proceedings of XIV Baikal International School-Seminar “Methods of optimization and its applications” Irkutsk-Baikal, July 2-8 июля 2008. Vol. 3. – Irkutsk: ISEM SB RAS, 2008. – pp. 152-157. (in Russian)
Read reference images
Read imageto recognize
Convert to matrices
Convert to matrices
Join Build interval matrices
Get A1, b
Get A2, b
Solve A1*x=b
Solve A2*x=b
Solve non-interval ILS
Join
JoinCalc metrics
Metrics values
Metrics histogram
KNIME Workflow for Image Recognition
Барнаул, 28 Июня 2013 МАК 2013 72 / 60
Prolubnikov A.V., Silitskiy S.A. On solving the problem of numeric matrices recognition using estimates of solution sets of interval systems of equations // Comp. Math. Proceedings of XIV Baikal International School-Seminar “Methods of optimization and its applications” Irkutsk-Baikal, July 2-8 июля 2008. Vol. 3. – Irkutsk: ISEM SB RAS, 2008. – pp. 152-157. (in Russian)
Read reference images
Read imageto recognize
Convert to matrices
Convert to matrices
Join Build interval matrices
Get A1, b
Get A2, b
Solve A1*x=b
Solve A2*x=b
Solve non-interval ILS
Join
JoinCalc metrics
Metrics values
Metrics histogram
Mobile Application “Affiche”
Modeling positional uncertainties for GPS+GSM navigation using circular complex arithmetic
Барнаул, 28 Июня 2013 МАК 2013 73 / 60
PERSPECTIVESJInterval Library: Principles, Development, and Perspectives
Барнаул, 28 Июня 2013 МАК 2013 74 / 60
Future Directions
Holding P1788 compliance of JInterval Developing optional plugins for platform-dependent effective
implementations of inner layers through JNI– MPFR for fast multiple precision floating-point arithmetic– BLAS for fast linear algebra operations
Developing API for access to JInterval from other programming languages
– Scala– …
High-level functionality replenishment
Барнаул, 28 Июня 2013 МАК 2013 75 / 60
High-Level Functionality Replenishment
Enhancing MatlabOps ILS tolerable solution set estimators ILS AE-solution set visualization (I. Sharaya) Global Optimization Solver (N. Panov – S. Shary)
– Randomized Branch & Bound– Interval simulating annealing – Interval Genetic algorithm– Multi-method algorithm
ODE Solver (D. Nadezhin)
Барнаул, 28 Июня 2013 МАК 2013 76 / 60
How to Get and Contribute to JInterval?
java.net/projects/jintervalSource codes (SVN)JavaDocWikiTutorialDevelopers’ forumMail lists
Барнаул, 28 Июня 2013 МАК 2013 77 / 60
Acknowledgements
Maksim V. Danilov Kirill S. Dronov Walter Krämer Nikita V. Panov Gregor Paw Anton E. Sartakov Andrey S. Samoilov Sergey P. Shary Irina A. Sharaya Egor N. Tepikin Leo N. Tolstoy IEEE Interval Standard Working Group – P1788
Барнаул, 28 Июня 2013 МАК 2013 78 / 60