Mathematical Programming, работа с библиотеками решения обратных задач

5 000 000 руб. за проект
20 ноября 2022, 11:11 • 16 откликов • 228 просмотров
1. Задан набор точек a1, a2, ... ak, double, количество (k) не ограничено. Для этого набора точек, задан набор значений R комплексных. Т.е., фактически, задан массив пар {a1, R1}{a2, R2} ... {ak, Rk} с некоторым количеством элементов.

2. Существует внешняя функция F(d1, d2, ... dn), заданная на сетке а1, а2,... аk. Количество параметров d1-dn может быть, в теории, любым. На практике, может встречаться до 100 параметров. Функция представляет собой перемножение мартиц 2х2, содержащих комплексные числа, и простейшие тригонометрические функции - sin, cos). К этой функции есть выписанная в явном виде производная.

3. Для каждого параметра d1 - dn существует свой набор пар минимум-максимум, а так же значение по-умолчанию.

4. Необходимо найти такие значения d1, d2, ... dn, при которых для точек a1-ak из A
Сумма( ABS ( R(a) - F(a, d1, ... dn) ) ) минимально. Нужно минимизировать внешне квадратичный функционал.

5. Необходимо реализовать следующие методы поиска
- квази-ньютоновский метод, использующий первую производную, BFGS (инициалы создателей);
- Levenberg-Marquart (DLS);
- SQP;
- trust-region-reflective.
. При работе, должна быть возможность выбора одного из методов.

6. Дополнительно для некоторых точек (в данном примере - aj) должна быть возможность предусмотреть одно из следующих ограничений:
а. R(aj) >= F(aj) (т.е., значение функции в точке должно быть обязательно меньше или равно значения R в этой точке).
б. R(aj) <= F(aj) (т.е., значение функции в точке должно быть обязательно больше или равно значения R в этой точке).
в. F(aj) должно находится в некотором интервале между R, т.е. R(aj)-p <= F(aj) <= R(aj)+q

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

8. Желательно предусмотреть возможность параллелизации вычислений.

9. Сетку, на которой заданы значения, необходимо уметь интерполировать линейно, сплайнами 1, 2, 3ей степени.