Реализация fmincon, которая вызывает другую функцию

Прямо сейчас у меня есть код, который моделирует трансформаторную установку (назовем это TP1), который выдает два выхода 'x' и 'y', учитывая два физических измерения 'a' и 'b' в диапазоне коэффициентов трансформации.

Существует несколько различных способов настройки этого завода, поэтому в модели завода есть простые критерии выбора, которые выбирают один параметр среди других, так что ввод и вывод максимизируются. (Таким образом, у меня нет априорных знаний о том, через какие уравнения "a" и "b" пройдут, чтобы получить "x" или "y")

Существует еще один трансформатор (TP2), который выдает выходные данные "x2" и "y2" только для одного физического измерения "c"

Ниже приводится оптимизация, которую я пытаюсь сделать:

Цель: Учитывая установленный TP2, спроектируйте TP1 таким образом, чтобы он минимизировал a+b, а x >= x2 и y>=y2 для заданного диапазона коэффициента трансформации.

Я заблудился о том, как реализовать fmincon (или любой другой метод оптимизации), чтобы выполнить эту задачу, тем более что моя модель TP1 основана на очень численных данных. (Я не знаю, лучше ли config1 или 2 для определенного коэффициента трансформации, прежде чем его коммерчески решить) Я ценю ваш совет заранее.

1 ответ

Решение

fmincon правильный инструмент:

  • Ваш неизвестный является 2-элементным вектором [a; b]
  • Вам необходимо указать начальную точку X0 за [a; b]
  • Ваша функция стоимости FUN это просто функция, которая возвращает a+b
  • У вас есть два нелинейных ограничения и вам нужно написать функцию для NONLCON

Ваш NONLCON функция должна:

  • Принять 2-элементный вектор [a; б] в качестве входа
  • Оцените свою модель, TP1
  • Вернуться за C (первое возвращаемое значение) 2-элементный вектор [x-x2; у-у2]
  • Возврат пуст для второго возвращаемого значения Ceq

Вы также можете указать верхнюю и нижнюю границы для вашего [a; b] вектор.

Другие вопросы по тегам