Помощник

Программа с голосовым интерфейсом (TTS). Чтение сайтов анекдотов (anekdot.ru и anekdotov.net) и новостных сайтов (mail.ru, lenta.ru и др.), прослушивание интернет-радио, чтение книг из локальных библиотек Либрусек и Флибуста, прослушивание музыкальных и видеофайлов на компьютере, чтение текстовых файлов (плоский текст txt и fb2).

Для чтения (текст → звук) используется голосовой движок Windows. Для проигрывания аудио и видеофайлов, а также прослушивания интернет-радио применяется медиаплеер Vlc.

Программа предназначена для людей со слабым зрением и слепых.
Перемещение по программе и все действия осуществляются с помощью клавиатуры. Мышь не используется.
При наличии сенсорного экрана можно применять жесты.

Исходный код (C# 7, .Net 4.7, HtmlAgilityPack 1.5.1, WindowsAPICodePack–ExtendedLinguisticServices 1.1.1, AXVLC), скомпилированные оконное приложение Помощник и программа для автоматического обновления через Интернет.

GNU GENERAL PUBLIC LICENSE 3

Задачи о расписаниях

Задача о балансировке нагрузки

Требуется распределить m заявок по n процессорам таким образом, чтобы общее время обработки (с учётом невыполненной предыдущей работы) было минимальным.

Одинаковые процессоры

Время обработки заявки зависит только от самой заявки.

Текст программы и исполняемый файл (C#, Visual Studio 2015, .Net 4.6.1)

Неодинаковые процессоры

Время обработки заявки зависит как от самой заявки, так и от процессора.

Текст программы и исполняемый файл (C#, Visual Studio 2015, .Net 4.6.1)

Простейшие интервальные вычисления

Определения

Под интервальной аппроксимацией вещественного числа x будем понимать замкнутый интервал [x1,x2], заведомо содержащий x: -∞<x1 <x<x2<+∞.

Результат бинарной операции над интервалами [x1,x2] и [y1,y2] определяется выражением:

[x1,x2] [y1,y2]= {[min(xy), max(xy)]| x[x1,x2] , y[y1,y2] } .

Заметим, что, вообще говоря, (x×x)x2.

Простой пример

Значение реальной процентной ставки (real interest rate, RIR) описывается выражением

RIR=C0C1 (1+NIR)-1,

где NIR — номинальная процентная ставка (nominal interest rate) за рассматриваемый период времени, C0 и C1 — индексы потребительских цен в начале и в конце рассматриваемого периода соответственно.

Предположим, что требуется оценить значение реальной процентной ставки при номинальной процентной ставке 7% и индексах потребительских цен C0[1.19,1.21] и C1[1.22,1.26].

Программная реализация

Microsoft Excel и OpenOffice.org (LibreOffice) Calc

Функции, реализующие арифметические операции над интервалами.

Интервальная арифметика в Excel

Исходные коды для Excel и Calc

GNU Octave

Класс «интервал» и перегруженные арифметические операторы для работы с ним.

C0 = interval(1.19,1.21);
C1 = interval(1.22,1.26);
NIR = 0.07;
RIR = C0/C1*(1+NIR)-1

Исходные файлы (кодировка UTF-8)

CLIPS

Класс «интервал» и перегруженные арифметические операторы для работы с ним.
(bind ?C0 (create-interval  1.19 1.21))
(bind ?C1 (create-interval  1.22 1.26))
(bind ?NIR (create-interval 0.07))
(bind ?one (create-interval 1))
; оценка RIR
(bind ?RIR (- (* (/ ?C0 ?C1) (+ ?one ?NIR)) ?one))
; удаление временных объектов
(send ?RIR put-temporary F)
(clear-temporary-garbage)
; вывод результата на экран
(printout t "RIR = " (send ?RIR show) crlf)

Определение класса интервалов interval.clp и базового класса временных объектов temporary.clp.

C++

Шаблонный класс «интервал» (по умолчанию для представления границ используются тип double) и перегруженные арифметические операторы для работы с ним. При арифметических вычислениях используется направленное округление результата.
MATH::interval_t<> C0(119, 100, 121, 100); // C0[1.19,1.21]
MATH::interval_t<> C1(122, 100, 126, 100); // C1[1.22,1.26]
MATH::interval_t<> NIR(7, 100);            // R=7%

MATH::interval_t<> RIR = C0/C1 * (NIR + 1) - 1;

cout.precision(3);
cout << "RIR: [" << RIR.lo() * 100 << "% ; " << RIR.hi()*100 << "%]" << endl;

Заголовочный файл interval.h (тестировалось: Visual C++ 2013 на Windows 8.1 и GCC 4.8.2 на Linux Fedora 19)

Литература

  1. Алефельд Г., Херцбергер Ю. Введение в интервальные вычисления: Пер. с англ. — М.: Мир, 1987.
  2. Шишкин В.А. Простейшая реализация интервальной арифметики (pdf)