MATLAB:建立一个优化函数
我需要指导使用优化工具箱设置我的第一个优化问题 我有一个三维表面模型,代表一个长衬衫袖子。我定义了一个穿过曲面的切割平面。通过PCA获得平面的初始方向:曲面模型顶点的第一主分量定义平面法向量。我的优化是围绕平面向量u、v(最初为第二和第三主坐标)确定平面方向,以最小化平面和曲面模型交点的横截面积。我希望将方向限制在围绕两个轴的每个轴旋转X度以内,以缩小解决方案空间 我的问题是: 对于这种情况,您能推荐一个特定的解算器吗?我能同时求解两个旋转角度(关于u和v)吗 我应该求解法向量的3个分量吗?(应用所需约束时) 是否必须使用嵌套函数设置目标函数以传递曲面模型数据、初始平面方向等 我正努力在网上找到一个与我的案例类似的例子MATLAB:建立一个优化函数,matlab,mathematical-optimization,Matlab,Mathematical Optimization,我需要指导使用优化工具箱设置我的第一个优化问题 我有一个三维表面模型,代表一个长衬衫袖子。我定义了一个穿过曲面的切割平面。通过PCA获得平面的初始方向:曲面模型顶点的第一主分量定义平面法向量。我的优化是围绕平面向量u、v(最初为第二和第三主坐标)确定平面方向,以最小化平面和曲面模型交点的横截面积。我希望将方向限制在围绕两个轴的每个轴旋转X度以内,以缩小解决方案空间 我的问题是: 对于这种情况,您能推荐一个特定的解算器吗?我能同时求解两个旋转角度(关于u和v)吗 我应该求解法向量的3个分量吗?(应
我感谢您的建议,并为我的幼稚提前表示歉意。我不熟悉您的特定示例,但大多数最小化程序都相当相似,您只需遵循一点框架即可让优化器工作 这是一些函数最小化代码,我在这里做了一些调整,但在过去使用过。fmincon是一个伟大的通用函数最小化工具,您可以在参数上设置许多不同的约束(边界、等式约束和不等式约束)。它并非在所有情况下都是最有效的,但它可能会给您一个良好的开端 基本上,您希望创建一个初始猜测,设置边界,然后使用fitfun函数的引用调用fmincon
function [t2, pd, offset] = t2fit(te, mm)
% Intial guess
x0 = [(-1/p(1))/fact, max(mm) 0]; % t2 pd
% Other constratints
A = []; B = []; Aeq = []; Beq = [];
% Bounds
LB=[ 1/fact 0 -1 ]; UB = [ 1000/fact 1 1 ];
% Matlab options to the optimizer
opts = optimset('fmincon');
opts = optimset(opts, 'display', 'none');
% Call the minimization routine
x = fmincon(@fitfun, x0, A, B, Aeq, Beq, LB, UB, [], opts, te, mm);
% Get the output variables
t2 = x(1);
pd = x(2);
offset=x(3);
%%===================================================================
function dd = fitfun(x, te, mm)
% The current value of the three input parameters
t2 = x(1);
pd = x(2);
offset = x(3);
% Calculate the model curve
yy = pd .* exp( -te ./ t2 ) + offset;
% Compute the error between the model curve the
% the measured curve -- dd is returned
dd = sqrt(sum( (yy-mm).^2 ));
鉴于您的问题,您可能需要使用lsqcurvefit或类似的工具。谢谢您,布莱希莫斯!你的例子对我制定函数有很大帮助。我真的很感谢你的意见。