Найти - Пользователи
Полная версия: Ludmila - решение нерешенных математических задач методом подбора
Начало » Python для экспертов » Ludmila - решение нерешенных математических задач методом подбора
1
Artinol
Ludmila - решение нерешенных математических задач методом подбора

Описание
Скрипт Ludmila предназначен для решения нерешенных математических задач методом подбора.
Есть список элементов уравнений:

- числа (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
- операции (+, *, /, -)
- скобки (левая, правая)
- степень (квадратная, кубическая, корень квадратный, корень кубический)
- x (может быть несколько в наборе - x0, x1, x2, …)

Есть входящие наборы данных:
- data1.txt (линейное уравнение)
- data2.txt (теорема пифагора)
- data3.txt (ряд простых чисел)

Например набор data1.txt (линейное уравнение) выглядит вот так:

3235 51 62 73

3350 52 63 74

3467 53 64 75

… и т.д. (всего 100 элеметов в наборе)

Первая цифра значение y, последующие цифры значения x (в данном случае x0, x1, x2)

Для нахождения верного уравнения перебираются комбинации уравнений. Выглядит это примерно так:

y = 1

y = 2



перебираются все уравнения длинной 1, затем длинной 2. Уравнения длинной 3 могут выглядеть например так:

y = 1 + x0

y = 1 + x1

… и так далее, пока не дойдет до:

y = x0 * x1 + x2

В итоге набор данных (3235 51 62 73) выдаст совпадение, далее эта форумла перебирает все наборы данных data1.txt их всего 100 штук. И если все 100 наборы данных прошли проверку, то уравнение считается решенным.

Оптимизация

Так как нет смысла уравнения в котором рядом стоят например два оператора +, поэтому есть правила конкатенации - что может стоять рядом друг с другом, а что нет. В результате чего скорость работы скрипта была увеличина в 15 раз. Правила конкатенации находятся в config.py, переменная types.

Производительность

Производительность на CPU:

- Линейное уравнение решается за 7 секунд (5 символов) v|x0;o|*;v|x1;o|+;v|x2
- Теорема пифагора решается за 8100 секунд (8 символов) bl|(;v|x0;e|**2;o|+;v|x1;e|**2;br|);e|**0.5

Задачи

Главной задачей данного скрипта является решение нерешенных математических задач
- Открытые математические проблемы (https://ru.wikipedia.org/wiki/%D0%9E%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D0%B5_%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B)
- Задачи тысячелетия (https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D1%82%D1%8B%D1%81%D1%8F%D1%87%D0%B5%D0%BB%D0%B5%D1%82%D0%B8%D1%8F)

Но не все они могут быть представлены в виде наборов данных.

To Do
- Переделать, чтобы вычисления производились не на CPU, а на GPU (CUDA).
- Добавить больше математических операций - sin, cos, tg, ctg, π, e, log (упадет производительность, но увеличится вероятность нахождения формулы).
- Добавить наборы данных для других нерешенных математических задач.

Запуск

- в файле config.py в переменной data_id указать id набора данных (1 - линейное, 2 - теорема пифагора, 3 - ряд простых чисел)
- запустить файл ludmila.py командой:
c:\Python37\python e:\python\maths\ludmila.py
- результат будет в консоле, а так же в лог файле log.txt

Вопросы
У меня есть два вопроса к сообществу:

- Есть ли подобные скрипты? Возможно кто-то уже делал такое и мой скрипт бессмысленный потому что эта работа уже проделана кем-то другим.

- Вопрос к тем кто работал с CUDA. Сейчас вычисления производятся на CPU. Возможно ли переделать на GPU тем самым повысив производительность в десятки раз?

Ссылка на исходники

https://github.com/nevstas/ludmila
doza_and
ММ… А вы с 2014 это писали и вот наконец получили результат?

Artinol
Есть ли подобные скрипты? Возможно кто-то уже делал такое и мой скрипт бессмысленный потому что эта работа уже проделана кем-то другим.
Таких скриптов нет.
Ваш скрипт бессмысленен не потому что кто-то уже делал такое, а потому что так сложные задачи не решить.
Artinol
Вопрос к тем кто работал с CUDA
Переделать можно но глупо. Если нужна скорость пишите на C. Вы уже в сотню раз ускорение получите по сравнению с питоном. А так да, задачи перебора довольно хорошо паралелятся.

Вы файлы неправильно на гит выложили. Не читаются русские символы
py.user.next
Artinol
Есть ли подобные скрипты?
У тебя слабые скрипты с точки зрения программирования. Так что ничего ты пока не в состоянии написать, надо учиться. Диалоги на форумах, которые перечислены в твоём репозитории, я почитал. Там тебе уже по существу ответили в плане математики. По программированию ты зашёл в правильное место. По крайней мере, я там в диалогах ничего не нашёл, кроме выливания ведра говна на твой проект в целом, а это неконструктивно. Вердикт вот такой. Если ты думаешь, что ты можешь закосить под нормального программиста, рассказывая всем, что ты инженер и даже диплом имеешь, вот он, смотрите, то ты глубоко заблуждаешься. В программировании за программиста говорит его код, его проекты и тому подобное, а не бумажки с записями, даже если они хорошие. Тем программирование и отличается от всего остального. Либо ты делаешь программы, либо нет, третьего не дано. И можешь сколько угодно рассказывать, где ты учился и где ты работал, это не поможет. Примитивнейшие новичковые ошибки в написании кода у тебя повсюду. Ты даже не знаешь, как функции правильно называть или как правильно комментарии писать к коду. А о том, как это всё вообще спроектировать правильно, ты даже ближайшего представления не имеешь. Твои представления примерно такие же, как представления школьника о строительстве пятиэтажки. Одного ведра и одной лопаты для этого будет маловато. Почему так происходит? Потому что ты не прочитал ни одной книги, где учат правильно составлять код, правильно составлять алгоритмы и тому подобное - основы. Если бы читал, глупых ошибок бы не делал.

Поэтому ответ на твой вопрос
Artinol
Есть ли подобные скрипты?
на этом форуме среди множества других будет такой: есть подобные скрипты и их много, так как периодически появляется какой-то новичок, пытающийся взломать Пентагон или подчинить Вселенную; обычно это выражается в куче быдлокода, который ничего не делает особого. К счастью, у тебя не так много такого кода, потому что это всё величайшее творение можно написать заново за двадцать минут и это новое произведение искусства будет даже лучше первоначального. А бывает так, что и кода много, за неделю не перепишешь, и его весь можно выбрасывать спокойно, а выбрасывать жалко. Так что не расстраивайся особо, ты ещё не успел увязнуть в болоте.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB