Многокритериальная целевая функция оптимизации, которая выводит единственное решение для каждой переменной? - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь создать программу matlab, которая оптимизирует конструкцию шарниров сгибания.Когда я исследовал функции MATLAB для многокритериальных целей, я обнаружил несколько функций, таких как gamultiobj, fgoalattain и paretosearch, однако большинство из них выдавали массивы результатов вместо вывода 1 результата.Однако я ищу функцию, которая просто выводит 1 единственный результат для каждой переменной.Так что я пытаюсь использовать функцию fmincon, но так как они только за исключением одной функции для оптимизации.Поэтому я попытался найти способы объединить несколько объективных критериев функции.Я нашел метод взвешенной суммы, чтобы объединить его (например, f (x) = w1 * f1 (x) + w2 * f2 (x);), я пробовал fmimax, однако он всегда взвешивался в направлении f1 (первая целевая функция вмассив функций), хотя f2 все еще можно уменьшить.Я надеюсь весить между этими двумя объективными функциями 50/50.

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

1 Ответ

0 голосов
/ 06 декабря 2018

Есть несколько способов решения этой проблемы, но я подозреваю, что ни один из них не сделает именно то, что вы ищете.

Когда у вас есть более одной цели, и если вы конкурируете, то существует компромисс.Вам нужно выбрать баланс, который вы предпочитаете, между f1 и f2.

Многоцелевая оптимизация, о которой вы упомянули, предоставляет вам оптимальный по Парето набор решений.Эти решения будут так называемыми недоминированными, ни одно решение в наборе не будет лучше, чем другое, с точки зрения f1 и f2.Каждое решение будет представлять различный компромисс между этими значениями.Вы должны посмотреть на полученный набор и решить, какой конкретный компромисс лучше всего подходит для вашего конкретного приложения.

Как вы уже обнаружили, вы также можете выполнить взвешенную сумму целей, преобразовав ее вединственная объективная проблема.Тем не менее, это требует, чтобы вы знали желаемый компромисс между целями и взвешивали их соответственно.Если у вас есть какое-то базовое решение, которое вы пытаетесь улучшить, вы можете использовать его для нормализации своей функции.Например, f = f1/f10 + f2/f20 даст равномерный баланс для улучшения f1 и f2 относительно вашего первоначального дизайна.

Третий вариант - преобразовать одну цель в ограничение.Например, если вы будете довольны любым решением, например, с f1 < c, вы можете установить это как ограничение и затем использовать только f2 в качестве цели.

Каждый из этих методов требует, чтобы Вы определяете компромисс или некоторую удовлетворительную стоимость для f1 и f2.Никакие алгоритмы оптимизации не могут придумать такой баланс для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...