2015-05-04 4 views
0

Надеюсь, мои ключевые слова описывают мою ситуацию. В основном, я работаю с SMC (Управление режимом скольжения) в Simulink, используя блоки симуляции и функциональные блоки S. Теперь я хочу использовать алгоритм DE (Differential Evolution), чтобы определить параметры SMC, которые дают наилучшие результаты. DE, реализованный двумя файлами m, один из которых содержит функцию для целевой функции (эта потребность DE), а другая содержит остальные алгоритмы DE, используемые для работы. То, что я сделал, это то, что я преобразовал один файл m в функцию s, потому что ему нужны некоторые переменные из Simulink Model, мой вопрос в том, что теперь я хочу использовать значение целевой функции в другом файле m (алгоритм DE), чтобы запустить DE, чтобы сделать несколько итераций. Надеюсь, я поняла. Я нашел несколько вещей here, но, похоже, я смотрю именно на противоположный сценарий.Как использовать переменные модели simulink в файле matlab m?

+0

Итак, моя первая мысль заключается в том, что есть особая причина, по которой вы не можете преобразовать второй файл в s-функцию Simulink? В этом случае, боюсь, ваш единственный вариант - это вручную сохранить каждую необходимую переменную в рабочей области на каждом временном шаге. Вы должны сделать это, используя ['assignin'] (http://www.mathworks.com/help/matlab/ref/assignin.html). –

ответ

0

Давайте определим ваши два DE файлы первыми:

  • DE1: содержит функции для целевой функции;

  • DE2: содержит остальную часть алгоритма DE.

Насколько я понял, вы преобразовали DE2 в S-функцию и хотели использовать переменные в DE1 для итераций.

  1. Если переменные в DE1 постоянны, то используя constant блок в SimLink может решить вашу проблему. Просто поместите эти переменные в постоянный блок и подключитесь к DE2 в качестве входных данных.
  2. Если переменные в DE1 меняются во время итерации, то преобразование DE1 в S-функцию должно быть правильным способом.
Смежные вопросы