![]() |
|
|
![]()
|
|
| Lois |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 19.5.2013 Репутация: нет Всего: нет |
Моделирование рендомных химических реакций
Идёт рендомное смешение всех элементов таблицы Менделеева. Получившиеся результаты реакций сравниваются с базой данных химических реакций, где есть все реакции и их результаты. Надо определить сколько информации может обрабатывать обычный комп, потому что её будет очень много. Для этого надо рендомно отсекать большую часть реакций, которые выходят за рамки мощности компа. Очевидно необходимо будет сделать так, чтобы была обратная связь с загрузкой мощности компа. То есть реакций должно быть столько, сколько комп в состоянии выдержать. Результаты реакций смешиваются друг с другом и так до тех пор, пока не останется в конце одно единственное вещество. Это цель проги и есть – получить химическую формулу такого вещества. Очевидно, что при разных запусках программы ( надо сделать так, чтобы рендом работал каждый раз оригинально, то есть не повторял бы один и тот же цикл- это сделать очень легко- скажем связать его с часами компа), это вещество будет разным. Я предлагаю ограничить с помощью рендома время работы этой проги одним часом, то есть опытным путём определить сколько реакций надо рендомно отсекать, чтобы уложиться в это время . Вопрос- какое вещество наиболее вероятно получится? Интересуют любые ваши идеи по алгоритму. Я думаю речь идёт только о неорганике. База реакций есть. |
|||
|
||||
| Pavia |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Ничего непонял. Вещества в реакторе накапливаются или нет?
Что за база данных реакция? Может всё же это база данных плюс база знаний? Просто в таблице порядка 112 веществ и все парные реакции это 100х100. Тут любой комп справиться. Троичные редкие. Цепные они в органике, а вы пишете о неорганике. В чём цель моделирования? |
|||
|
||||
| Lois |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 19.5.2013 Репутация: нет Всего: нет |
Речь идёт только о форумлах и символах. ЕСть формула в базе, она выводится, нет, значит нет.
Обычная база данных. Без всякой базы знаний. Просто химические формулы. Цель- узнать, что это за вещество. А может при разных запусках программы вещество будет разным!!! Просто любопытство. Это сообщение отредактировал(а) Lois - 7.7.2013, 16:16 |
|||
|
||||
| _Y_ |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Извиняюсь, но с химией у Вас в задаче некоторая напряженка:
В природе не существует химических элементов, которые можно физически смешивать. Элементы существуют только в виде молекул. И только у благородных газов эти молекулы одноатомные (один атом на молекулу, наподобие элементов). Еще существуют металлы, которые, в принципе, можно рассматривать как некое скопление одноатомных молекул (но с очень большой натяжкой). Дальше продолжать?
Не думаю, что возможно создать базу данных, даже не всех возможных, а хотя бы наиболее вероятных химических реакций. Даже смешивание, скажем медного купороса и обычной соды в стакане с водой сопровождается десятками основных реакций и еще большим числом побочных-малозначительных. Какая реакция будет преобладать зависит от условий, количеств и т.д.
Даже если взять и реально на практике смешивать случайным образом разные вещества (забыв про компьютер), одно единственное вещество получится с вероятностью меньше, чем встретить мамонта в книжном магазине. Получится смесь из уймы веществ, да наверняка и смесь из уймы разных фаз. Попытайтесь переформулировать задачу. Может удасться Вам помочь. Я, вроде, химию еще помню в довольно неплохой степени. Да и еще кто-нибудь здесь найдется, кто химию проходил не в школьном объеме. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||
|
|||||
| Lois |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 19.5.2013 Репутация: нет Всего: нет |
К сожалению, Вы вместо того, чтобы прочесть правильно мой текст говорите о каких-то своих собственных идеях. Я удивляюсь как так можно неправильно понимать вроде такую простую и ясную вещь. Причём Вы в этом не одиноки, я уже это встречал не раз относительно этой задачи.
Приходится уже который раз повторять одно и то же. Что не очень интересно. Речь идёт только о символах и о базе данных хим. реакций, которую я скачал из сети. Есть реакция в базе, она выводится, нет не выводится. Никаких условий реакций вообще. Если несколько реакций с одними и теми же веществами, они все выводятся, так как берутся только символы, без учёта коэффициентов. |
|||
|
||||
| Pavia |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
То что вы химию не знаете это ваши проблемы. По поводу базы данных она содержит циклы или нет? Сколько веществ имеет вход, но не выход в процентном отнашении к общему числу веществ?
Результат легко предсказуем либо будет зацикливание либо не будет. А так как смесь идёт по кругу то выход из цикла возможен любым случайным образом. |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
К сожалению, понять Вашу задачу сложновато. Можно только догадываться. Попробую:
Алгоритм программы будет, естественно, зависеть от поставленной задачи. Если это игрушка (первый случай), можно просто расставить в базе данных приоритеты реакций. Типа: Если для первой реакции есть исходные реагенты, она и идет. Если для первой нет реагентов, переходим ко второй. И так далее. Надо будет просто добавить такие приоритеты в БД. Если хотите посложнее - проходить по базе итерационно до тех пор, пока заданные в ней химические превращения не прекратятся. Поскольку стехиометрию считать все-таки придется, получится, естественно, смесь веществ, но практически всегда одного вещества будет больше всего, второго несколько меньше, и так далее. Во втором случае сложнее. Все-таки учить школьников абсолютной ахинее не надо. Да и не знают они еще о свойствах всех элементов. я бы ограничил число элементов и реакций изучаемыми где-то в первой четверти. Получится пара десятков элементов, наверное, и не так уж и много уравнений химических реакций. В этом случае даже без иттераций можно будет обойтись. Главное не создавать у школьников впечатление, что такой тренировочной программой вся химия и ограничивается. Так что раскройте задачу поподробнее - а то сплошные догадки получаются. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| Lois |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 19.5.2013 Репутация: нет Всего: нет |
Что-то третье- что это именно я узнаю, когда будет готова программа. Речь идёт с образной точки зрения о том, что комп станет чем-то вроде реактора. И с моей точки зрения могут быть какие либо сверхъестественные явления при вычислении.
Насчёт циклов не понял. Я не думаю что надо на это обращать внимание. Тем более, что там будет фигачить рендом. Добавлено @ 15:10
Напишите конкретно формулу, какие циклы вы имеете ввиду. Это сообщение отредактировал(а) Lois - 8.7.2013, 15:10 |
|||
|
||||
| Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 4 Всего: 17 |
Интересно, что следующее будет Случайным? (Человек люто ненавидит русский язык и плохо знает английский оттуда и "рэндомный").
Если Вас интересует моделирование такого сорта, обратитесь к хорошо разработанному формализму - кинетической машине Кирдина. Делает именно то, что вы хотите. То, что Ваша задача не имеет отношения к химии - это факт. Поскольку в соответствии с принципом детального равновесия ВСЕ реакции обратимы, что следует из второго начала термодинамики). На этом кончаю с химией. Вообще говоря вам нужна примитивная реализация цепей (алгоритмов) Маркова. Думаю, что таких программ тьма, выберите наиболее приятную и используйте. Заранее могу сказать что на выходе НИКОГДА не будет одного вещества - только смеси. Успехов в рандомизации науки! PS предлагаю следующим рассмотреть вопрос "Сколько проживет бухгалтер, который выдает сотрудникам зарплату в соответствии с ответами генератора случайных чисел?" Это сообщение отредактировал(а) Mirkes - 9.7.2013, 14:50 -------------------- Mirkes |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Кстати, вспомнил. В сети еще можно, наверное, найти очень хорошую учебную программу, которая называлась Medusa. Разработана она была в Швеции, в Королевском технологическом институте, на кафедре Неорганической химии. Распространялась бесплатно.
Чтобы проще было искать, в английском варианте это Inorganic Chemistry, Royal Institute of Technology, а в шведском Ookemi, Kungl Tekniska Högskolan. Программа позволяла рассчтитать что получится в водном растворе при введении в него заданных компонентов и достижении химического равновесия. Учитывалось и выделение газов, и выпадение осадков. У программы была и БД, описывающая химические равновесия. Если не ошибаюсь, БД была составлена на базе очень надежного справочника Critical Stability Constants и дополнена данными из менее надежного, но более полного многотомника Stability Constants. Понятное дело, всех мыслимых реакций никакая база не включит, но там реакций было довольно много. Задавались исходные вещества и их количества. Если не ошибаюсь, в доступной инете версии можно было ввдодить до 20 веществ. На выходе можно было получить как таблицу результатов, так и различные графики состояний. Интерфейс действительно выглядел как таблица Менделеева, но при нажатии на элемент выскакивал список веществ или ионов (не помню уже), данный элемент содержащий. Думаю, если эту программу запустить на современном компьютере, да прилепить к ней простенький случайный выбор компонентов, что-то требуемое и получится в рамках реакций, происходящих в водных растворах. Проблема в том, что программа была написана на давно покойном VB, а термодинамика считалась вызовом DLL написанной еще на старинном Fortran. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |