Цитата: Трассировка лучей, например!
Т.е. алгоритм примерно такой:
1) Задаём исходную схему - пусть будет простейший триплет с фокусным расстоянием 100 мм, угловым полем 2w = 40 и отверстием 1:2. Зададим, даже, кривизны всех поверхностей, кроме первой, нулевыми (т.е. 2 и 3 линзы - плоскопараллельные пластины).
2) Конструируем оценочную функцию, куда включаем все конструктивные ограничения (на воздушные промежутки, толщины и диаметры линз и т.п.) и, собственно, чего мы хотим от системы - фокус, пятно, ЧКХ и т.п.
3) У нас есть 4 вещи - а) первоначальная - очень и очень грубая система; б) оценочная функция с желаемыми характеристиками системы; в) разрешённые переменные; г) собственно n (в данном случае n = 6) процессоров, стоящих "под парами" и готовых к вычислениям.
А теперь вопрос: как организовать взаимодействие этого всего, чтобы на каждом из процессоров проводились уникальные расчёты, т.е. не получилась ситуация, что на разных процессорах обрабатываются одинаковые данные. Иными словами, как я это понимаю, нужен некий диспетчер, который будет раскидывать поступающие на него данные на разные процессоры, в зависимости от их загрузки, принимать обратно (с процессоров) вычисленные значения оценочной функции, сравнивать их и, принимая за оптимум функцию с минимальным (или максимальным, неважно, в зависимости от того, как задана сама функция) значением, изменять разрешённые переменные и повторять цикл заново. Как этот диспетчер сконструировать? Писать свой код? Или может у меня слишком сложное понимание и всё намного проще?