В этом примере показано, как к:
Используйте продукт MATLAB® Compiler SDK™, чтобы создать блок (OptimizeComp
). Этот блок применяет стандартные программы оптимизации MATLAB к целевым функциям, реализованным, когда.NET возражает.
Доступ к компоненту в приложении.NET (OptimizeApp.cs
). Затем используйте MWObjectArray
класс, чтобы создать ссылку на объект.NET (BananaFunction.cs
), и передача, которые возражают против компонента.
Для получения информации об этих классах преобразования данных см. Справочник по библиотеке классов MWArray MATLAB, доступный в
папка, где matlabroot
\help\dotnetbuilder\MWArrayAPImatlabroot
представляет вашу папку установки MATLAB
Создайте и запустите приложение.
Компонент (OptimizeComp
) находит локальный минимум целевой функции и возвращает минимальное местоположение и значение. Компонент использует оптимизационную функцию MATLAB fminsearch
. Этот пример оптимизирует банановую функцию Розенброка, используемую в fminsearch
документация.
Класс OptimizeComp.OptimizeClass
выполняет неограниченную нелинейную оптимизацию на целевой функции, реализованной как объект.NET. Метод этого класса, doOptim
, принимает начальное значение (СЕТЕВОЙ объект), который реализует целевую функцию и возвращает местоположение и значение локального минимума.
Второй метод, displayObj
, средство отладки, которое перечисляет характеристики объекта.NET. Эти два метода, doOptim
и displayObj
, инкапсулируйте функции MATLAB. Код MATLAB для этих двух методов находится в doOptim.m
и displayObj.m
. Можно найти этот код в
.matlabroot
\toolbox\dotnetbuilder\VSVersion
\NET\Examples\OptimizeExample\OptimizeComp
Если вы уже не сделали так, скопируйте файлы для этого примера можно следующим образом:
Скопируйте следующую папку, которая поставляется с MATLAB к вашей папке работы:
matlabroot
\toolbox\dotnetbuilder\VSVersion
\NET\Examples\OptimizeExample
В командной строке MATLAB, cd
к новому OptimizeExample
подпапка в вашей папке работы.
Если вы уже не сделали так, установил переменные окружения, которые требуются на машине разработки.
Запишите код MATLAB, к которому вы хотите получить доступ. Этот пример использует doOptim.m
и displayObj.m
, которые уже находятся в вашей папке работы. Путем является
. matlabroot
\toolbox\dotnetbuilder\VSVersion
\NET\Examples\OptimizeExample\OptimizeComp
Для ссылки, кода doOptim.m
отображен здесь:
function [x,fval] = doOptim(h, x0) mWrapper = @(x) h.evaluateFunction(x); directEval = h.evaluateFunction(x0) wrapperEval = mWrapper(x0) [x,fval] = fminsearch(mWrapper,x0)
displayObj.m
отображен здесь:function className = displayObj(h) h className = class(h) whos('h') methods(h)
Из галереи Apps MATLAB откройте приложение Library Compiler.
Когда вы компилируете приложение.NET с помощью Library Compiler, используйте следующую информацию:
Название проекта | OptimizeComp |
ClassName | OptimizeComp.OptimizeClass |
Файл, чтобы скомпилировать | doOptim.m displayObj.m |
Запишите исходный код для класса (BananaFunction
) это реализует объектную функцию, чтобы оптимизировать. Пример приложения для этого примера находится в
. Распечатка программ для matlabroot
\toolbox\dotnetbuilder\VSVersion
\NET\Examples\OptimizeExample\OptimizeCSAppBananaFunction.cs
отображения следующий код:
using System; namespace MathWorks.Examples.Optimize { public class BananaFunction { public BananaFunction() {} public double evaluateFunction(double[] x) { double term1= 100*Math.Pow((x[1]-Math.Pow(x[0],2.0)),2.0); double term2= Math.Pow((1-x[0]),2.0); return term1+term2; } } }
fminsearch
документация.Настройте приложение с помощью Визуального Studio®.NET с помощью OptimizeCSApp
папка, которая содержит файл проекта Visual Studio.NET для этого примера.
. Откройте проект в Visual Studio.NET путем двойного клика по OptimizeCSApp.csproj
в Проводнике Windows®. Можно также открыть его с рабочего стола путем щелчка правой кнопкой по OptimizeCSApp.csproj> Open Outside MATLAB.
Добавьте ссылку на MWArray
компонент, который является matlabroot
\toolbox\dotnetbuilder\bin\architecture
\framework_version
\mwarray.dll.
При необходимости добавьте (или зафиксируйте местоположение), ссылка на OptimizeComp
компонент, который вы создали на предыдущем шаге. (Компонент, OptimizeComp.dll
, находится в \OptimizeExample\OptimizeComp\x86\V2.0\Debug\distrib
подпапка вашей рабочей области.)
Когда запущено успешно, программа отображает следующий вывод:
Using initial points= -1.2000 1 ***************************************************** ** Properties of .NET Object ** ***************************************************** h = MathWorks.Examples.Optimize.BananaFunction handle with no properties. Package: MathWorks.Examples.Optimize className = MathWorks.Examples.Optimize.BananaFunction Name Size Bytes Class Attributes h 1x1 60 MathWorks.Examples.Optimize.BananaFunction Methods for class MathWorks.Examples.Optimize.BananaFunction: BananaFunction addlistener findprop lt Equals delete ge ne GetHashCode eq gt notify GetType evaluateFunction isvalid ToString findobj le **************** Finished displayObj **************** ***************************************************** ** Performing unconstrained nonlinear optimization ** ***************************************************** directEval = 24.2000 wrapperEval = 24.2000 x = 1.0000 1.0000 fval = 8.1777e-010 ***************** Finished doOptim ****************** Location of minimum: 1.0000 1.0000 Function value at minimum: 8.1777e-010