«1С» представила новый механизм для решения линейных алгебраических уравнений

Возврат к списку

«1С» представила новый механизм для решения линейных алгебраических уравнений

10.08.2018     

В прикладных решениях «1С:Предприятия» уже есть функционал расчета себестоимости товаров. Но разработчики решили не останавливаться на достигнутом и снабдить платформу максимально простым в использовании, но производительным механизмом.

Особенности нового функционала

Эксперты «1С» проанализировали работу прикладных решений и выяснили, что решение системы линейных алгебраических уравнений (СЛУ) – самый трудоемкий этап работы. Чтоб автоматизировать процесс и увеличить его производительность, в платформе реализовали новый объект: РасчетСистемЛинейныхУравнений.

Разработчики отмечают, что вместо классических подходов использовали собственный алгоритм решения СЛУ. Для расчета себестоимости товаров он действует быстрее общепринятых методов в случае разреженной матрицы. Для случаев с плотной матрицей СЛУ собственный алгоритм продемонстрирует близкие к классическим результаты.

Новый функционал поддерживает параллельное использование вычислительных ресурсов и регулирует количество используемых потоков вычисления. Функционал доступен на сервере, в толстом клиенте и в COM-соединении.

В общем виде система линейных алгебраических уравнений выглядит следующим образом:

 

 

Где image2.png – это известные коэффициенты уравнений. Решение системы линейных уравнений заключается в нахождении таких значений image3.png, при которых все равенства выполняются.

Использовать новый механизм по решению СЛУ можно и в других прикладных областях, которые автоматизируются решениями «1С:Предприятия».

Задачи планирования:

  • взаиморасчеты между некоторым множеством юридических лиц, предприятий или отраслей;

  • балансовые модели;

  • прогнозирование;

  • задачи поиска экстремумов, в том числе условных экстремумов.



Источник: https://infostart.ru/journal/news/mir-1s/1s-predstavila-novyy-mekhanizm-dlya-resheniya-lineynykh-algebraicheskikh-uravneniy_884706/
Автор:
Дарья Расина Обозреватель


Комментарии
Сортировка: Древо
1. Infactum 259 10.08.18 16:58 Сейчас в теме
Зато как активно утверждали раньше, что прикладной код приложения не является узким местом. А теперь вот математику в "движок" встраивают.
3. s22 20 10.08.18 17:06 Сейчас в теме
(1) а они и делали это через запросы, так что тут ничго не поменялось
2. s22 20 10.08.18 17:05 Сейчас в теме
Следующий шаг добавят нейросети
iliabvf; adhocprog; TreeDogNight; AlexGroovy; zakiap; Kochergov; +6 Ответить
4. protexprotex 170 10.08.18 17:07 Сейчас в теме
А где описание самого механизма? - или это тот же Гаусс, но только градусов на пять с другой стороны? :-)
dabu-dabu; dassin; Anchoret; CyberCerber; informa1555; +5 Ответить
16. HAMMER_59 68 13.08.18 07:40 Сейчас в теме
(4) Мне вот очень интересно как метод Гаусса в коде выглядит, по-моему куда проще метод обратной матрицы реализовать.
Не думаю, что какие-то особенные методы используют, в институте эти методы дают "Таха Х.А. Введение в исследование операций", не думаю что что-то новое изобрели.
24. protexprotex 170 13.08.18 12:11 Сейчас в теме
(16) Посчитать обратную матрицу - это при большой размерности матрицы очень долго.
45. Dementor 309 15.08.18 17:33 Сейчас в теме
(24) согласен. Когда-то решал задачи складского планирования и считал в 1С систему уравнений матричным способом. Не очень быстро работало....
5. wowik 446 10.08.18 17:32 Сейчас в теме
6. CyberCerber 206 10.08.18 18:17 Сейчас в теме
Вот так удивили!
Ну, будем держать кулачки за интегралы
Kochergov; +1 Ответить
7. s22 20 10.08.18 20:15 Сейчас в теме
(6) интегралы то зачем? интеграл просто сумма
19. HAMMER_59 68 13.08.18 11:29 Сейчас в теме
(7) Конечно, для обычных людей сумма, а для умных интеграл.
Сумма f(x) * дельта x при дельта х стремящимся к 0.
29. s22 20 13.08.18 17:07 Сейчас в теме
(19)
) Конечно, для обычных людей сумма, а для умных интеграл.
Сумма f(x) * дельта x при дельта х стремящимся к 0.

Вы о интеграле Римана или Лебега?
В реальности это просто сумма умножить на число.
30. HAMMER_59 68 13.08.18 17:53 Сейчас в теме
(29) Давайте уже более предметно, возьмём простую функцию, для которой известна функция интегрирования
f(x) = x^2, интеграл данной функции равен
(x ^ 3) / 3 + c
для x = 5 получим 125 / 3 + с

В котором месте это "просто сумма умножить на число"?
Можно приближенно вычислить, ключевое слово приближенно (1 + 4 + 9 + 25) * 1 = 39, но это будет не точное значение, что не сложно проверить, точно значение 41,67
32. s22 20 13.08.18 19:00 Сейчас в теме
(30)
) Давайте уже более предметно, возьмём простую функцию, для которой известна функция интегрирования
f(x) = x^2, интеграл данной функции равен
(x ^ 3) / 3 + c
для x = 5 получим 125 / 3 + с

В котором месте это "просто сумма умножить на число"?
Можно приближенно вычислить, ключевое слово приближенно (1 + 4 + 9 + 25) * 1 = 39, но это будет не точное значение, что не сложно проверить, точно значение 41,67


В учете и прогнозировании я пока ни разу не встречал явное представление функции
8. МихаилМ 10.08.18 23:01 Сейчас в теме
на данном этапе - механизм бесполезен.

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

а тем , кому недостаточно, давно подключили внешние компоненты.


такое же мертворожденное дитя как анализ данных.

думаю , на этом форуме и 1% программистов 1с не наберется, кто интересовался проблемой решения слау.
А вот ошибки в платформе касаются не только программистов, а и пользователей.

нуралиев и падаваны провели бы опрос на этом форуме.
что нужнеее быстрые слау или исправление багов в механизме расширений.


опять же если писать библиотеку мат методов , то более полную.
iliabvf; Vlad_2008; orfos; Silenser; TMV; sergathome; Anchoret; Ziggurat; VladC#; Касаткин; frkbvfnjh; NoRazum; SerMaxim; Yashazz; boln; +15 6 Ответить
9. Designer1C 264 11.08.18 13:20 Сейчас в теме
Отличная новость ! Для оптимизации раскроя рулонных материалов (самоклейка) это очень пригодится , чтобу выполнять заказы покупателей в минимумом отходов и к оптимальные сроки
С учётом имеющихся на складе материалов.

А нейронные сети тоже полезны - чтобы прогнозировать последующий спрос на остатки от резки рулонов.
TreeDogNight; jONES1979; +2 Ответить
25. protexprotex 170 13.08.18 12:13 Сейчас в теме
(9) Ну для оптимизации раскроя - тут метод ветвей и границ хорошо работает. Для одного заказчика писал (правда, на C++) - работает быстро.
10. Designer1C 264 11.08.18 13:22 Сейчас в теме
Лично мне и моей организации это может экономить несколько месяцев труда программиста (меня) и быстро внедрить оптимизацию на предприятии.
Кроме того, у раскройщиков и у отдела продаж быстрее будет возникать оптимальная схема раскроя : по времени и по остаткам

Жду 14-ю платформу !
TreeDogNight; jONES1979; AlexGroovy; CyberCerber; +4 Ответить
11. mysm 11.08.18 13:29 Сейчас в теме
А поиск строк по регулярным выражениям слабо добавить?
iliabvf; Dragonim; SoLRoN; kadild; adhocprog; wowik; A_Max; VladC#; rintik; Касаткин; kolya_tlt; Krio2; awk; TreeDogNight; evn-zorin; Yashazz; Solovyeff; Scorpion4eg; CyberCerber; +19 Ответить
12. yelloo 11.08.18 22:19 Сейчас в теме
(11) а чем regexp плох? скорость работы отличная. "Нативность" не нужна.
13. mysm 12.08.18 01:45 Сейчас в теме
(12)Не все только по Windows работают.
iliabvf; Dragonim; SoLRoN; kadild; +4 Ответить
17. kolya_tlt 11 13.08.18 09:45 Сейчас в теме
22. A_Max 16 13.08.18 12:01 Сейчас в теме
(18) Регэксп это не только проверка, что что-то подходит под шаблон, но и ещё разбор строки и замена. Вот именно этого и не хватает, ну и без привязки к объектам системы и внешних компонент чтобы везде было однообразно.
iliabvf; citicat; mysm; +3 Ответить
23. Ziggurat 53 13.08.18 12:05 Сейчас в теме
(22)
но и ещё разбор строки и замена.

Сразу не понял чаяния, этого нет, да.
33. A_Max 16 14.08.18 09:52 Сейчас в теме
(23) Ведь реально удобно было бы

Документы = СтрРазбить("СФ20394/18,РН002345/17,СФ45345/17", ",");

РегЭксп = Новый РегулярныеВыражения("(^.{2})(\d+)\/(\d+)");

Для каждого НомерДокумента Из Документы Цикл
РезультатРазбора = РегЭксп.Соответсвие(НомерДокумента);
Сообщение = СтрШаблон("Вид документа:$1 Номер:$2 Год:$3", РезультатРазбора);
Сообщить(Сообщение);
КонецЦикла

А если бы ещё и в запросах можно было, ну или хотя бы в СКД. Мячты, мячты...

Зато выидимо выполнен план по количеству добавленных функций за счет функций ЧислоИзДвоичнойСтроки и ЧислоИзШестнадцатеричнойСтроки вместо того чтобы сделать одну с параметром размерности и/или анализа префикса числа. При том что для в этих функциях префиксы описывающие тип ("0b" "0x" ) ОБЯЗАТЕЛЬНЫ! Вангую появление функции ЧислоИзВосьмеричнойСтроки и ещё модификаций ххххБезОшибок(ЧислоСтрокой, ЗначениеПоУмолчанию=Неопределено) которые избавят от оборачивания в Попытка-Исключение.

Пффффф.... Извините за оффтоп.
ПС: Я знаю что СтрШаблон в качестве значений сейчас не умеет принимать массив.
14. Yashazz 2265 12.08.18 13:48 Сейчас в теме
вместо классических подходов использовали собственный алгоритм

Как всегда. Все движутся одним путём, и только 1С своим особенным)

В отличие от регулярных выражений и большей управляемости полнотекстового поиска, малонужная вещь. Зато понты кинуты зачётно)
Vlad_2008; shard; kadild; sergathome; VladC#; +5 Ответить
15. vipetrov2 13.08.18 05:51 Сейчас в теме
Бесполезную чушь делают, тоже самое можно через DLL реализовать. Лучше бы многопоточность сделали в клиенте. Все равно на асинхронные функции все переводят. Понятно, что тогда надо критические секции делать, с контекстом формы заморочки, но могли бы начать с функций без контекста.
20. ildarovich 6084 13.08.18 11:53 Сейчас в теме
Нужная вещь, удивлялся: почему раньше не сделали?
21. herfis 258 13.08.18 11:55 Сейчас в теме
Новость хорошая, несмотря на фырканье в комментариях.
PowerBoy; +1 Ответить
26. [email protected] 13.08.18 13:27 Сейчас в теме
Ждем от разработчиков компании 1С алгоритм быстрого преобразования фурье
protexprotex; +1 Ответить
27. [email protected] 13.08.18 13:28 Сейчас в теме
в виде платформенной функции
protexprotex; +1 Ответить
28. PerlAmutor 28 13.08.18 14:04 Сейчас в теме
Согласен, вещь крайне нужная и полезная, особенно для крупных предприятий где внедряется ERP. Только думаю механизм все-таки потребует дальнейшего развития, позволяющего как-то кэшировать данные БД перед запуском закрытия месяца, чтобы минимизировать операции отбора в БД и ввода/вывода. Загрузил несколько ГБ в ОЗУ, рассчитал и результаты, например BULKом загрузил обратно в БД.
31. VmvLer 13.08.18 18:33 Сейчас в теме
главное, что скрыто за формулировкой

Новый функционал поддерживает параллельное использование вычислительных ресурсов и регулирует количество используемых потоков вычисления


Если в этом механизме параллелизм и многопоточность действительно работают, то дело стоящее, ибо как бы тут ни вопили, мол,
главное хорошее железо - да ни хрена. Если алгоритм расчета последовательный и не может "рассосаться" по потокам, то расчет себестоимости сутки-трое, почти что вахтовый метод сейчас на очень больших УТ.
rovenko.n; +1 Ответить
41. BearEX 15.08.18 15:06 Сейчас в теме
(31) Это круто раскидать Нэ уравнений по Нэ потокам за О(Нэ) шагов ... одно то уравнение решить проще , ну т.е за О(1) шаг и соберем данные из потоков за О(Нэ) .
Значить решить Нэ уравнений с Нэ неизвестными за О(Нэ) шагов.

Заодно научились строить обратные матрицы за О(Нэ) шагов .
42. VmvLer 15.08.18 15:24 Сейчас в теме
(41) пустая инсинуация

практика покажет, что там сваяли и насколько оно имеет смысл.
34. acanta 44 14.08.18 16:59 Сейчас в теме
Решили закрыть для падаванов доступ в святая святых и спрятать код в платформу. Чтобы никто не решил оптимизировать расчет себестоимости переписыванием этого участка открытого кода.
35. RustamZz 14.08.18 16:59 Сейчас в теме
На Хабре подробности и сравнение с др. библиотеками
МихаилМ; +1 Ответить
36. talych 16 15.08.18 11:34 Сейчас в теме
Вот бы БСП сделали как набор dll чтобы кучу кода в конфигураторе не держать.
37. SoLRoN 15.08.18 11:52 Сейчас в теме
А когда уже биткоины платформой можно будет майнить во время простоев?
38. vdi1950 1263 15.08.18 13:20 Сейчас в теме
1) Давным давно существует множество алгоритмов решения СЛУ с разреженными матрицами.
2) Параллельные вычисления тоже далеко не новость.

Вопрос к автору. 1С действительно разработала свой собственный новый алгоритм решения СЛУ с разреженными матрицами, или воспользовалась одним из существующих алгоритмов. Если справедливо первое, то опубликован ли он?
43. user1031946 15.08.18 15:33 Сейчас в теме
(38) тоде хотелось бы знать...
Вообще, 1Су надо реализовывать библиотеку вычислений использующих аппаратные возможности CUDA (или это уже сделали ?), но применимость таких вычислений - вопрос...
39. Dragonim 88 15.08.18 13:38 Сейчас в теме
"Где – это известные коэффициенты уравнений."

У "b" индекс по "j" лишний.
40. BearEX 15.08.18 14:49 Сейчас в теме
Давно пора библиотеку для численных вычислений включить. и чтобы суммы суммировались быстрее, чем при классическом суммировании, произведения получались тоже быстрее, чем если классически перемножить числа, деление было бы такое же быстрое как сложения, а главное чтобы было отнимание
Vlad_2008; +1 Ответить
Оставьте свое сообщение