第二章—Matlab解决悬置多目标解耦的非线性优化问题
- 格式:doc
- 大小:22.00 KB
- 文档页数:7
如何使用Matlab进行最优化和多目标优化问题求解Matlab是一种强大的数学计算工具,广泛应用于各个领域的科学研究和工程实践中。
其中,最优化和多目标优化问题的求解是Matlab的一项重要功能。
本文将介绍如何使用Matlab进行最优化和多目标优化问题的求解,并提供一些实际应用案例。
一、最优化问题求解最优化问题求解是指在给定的约束条件下,寻找一个使得目标函数取得最大(或最小)值的变量组合。
Matlab提供了多种最优化算法,如线性规划、二次规划、非线性规划等。
下面以非线性规划为例,介绍如何使用Matlab进行最优化问题的求解。
1. 准备工作在使用Matlab进行最优化问题求解之前,需要先定义目标函数和约束条件。
目标函数是最优化问题的核心,可以是线性的或非线性的。
约束条件可以是等式约束或不等式约束。
同时,还需要确定变量的取值范围和初值。
2. 选择合适的算法Matlab提供了多个最优化算法,根据问题的特点选择合适的算法是非常重要的。
常用的算法有fmincon、fminunc、fminsearch等。
例如,fmincon函数适用于求解具有约束条件的非线性规划问题,而fminunc函数适用于求解无约束或有约束的非线性规划问题。
3. 调用相应的函数根据选择的算法,调用相应的函数进行求解。
以fmincon函数为例,其调用方式为:```[x, fval] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)```其中,fun为目标函数,x0为变量的初值,A、b为不等式约束矩阵和向量,Aeq、beq为等式约束矩阵和向量,lb、ub为变量的下界和上界,nonlcon为非线性约束函数,options为求解选项。
4. 解析结果求解完成后,可以通过解析结果来评估求解器的性能。
Matlab提供了fval和exitflag两个输出参数,其中fval表示最优解的目标函数值,exitflag表示求解器的退出标志。
MATLAB优化应用非线性规划非线性规划是一类数学优化问题,其中目标函数和约束条件都是非线性的。
MATLAB作为一种强大的数值计算软件,提供了丰富的工具和函数,可以用于解决非线性规划问题。
本文将介绍如何使用MATLAB进行非线性规划的优化应用,并提供一个具体的案例来演示。
一、MATLAB中的非线性规划函数MATLAB提供了几个用于解决非线性规划问题的函数,其中最常用的是fmincon函数。
fmincon函数可以用于求解具有等式约束和不等式约束的非线性规划问题。
其基本语法如下:x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)其中,fun是目标函数,x0是变量的初始值,A和b是不等式约束的系数矩阵和右端向量,Aeq和beq是等式约束的系数矩阵和右端向量,lb和ub是变量的上下界,nonlcon是非线性约束函数,options是优化选项。
二、非线性规划的优化应用案例假设我们有一个工厂,需要生产两种产品A和B,目标是最大化利润。
产品A 和B的生产成本分别为c1和c2,售价分别为p1和p2。
同时,我们需要考虑两种资源的限制,分别是资源1和资源2。
资源1在生产产品A和B时的消耗分别为a11和a12,资源2的消耗分别为a21和a22。
此外,产品A和B的生产量有上下限限制。
我们可以建立以下数学模型来描述这个问题:目标函数:maximize profit = p1 * x1 + p2 * x2约束条件:c1 * x1 + c2 * x2 <= budgeta11 * x1 + a12 * x2 <= resource1a21 * x1 + a22 * x2 <= resource2x1 >= min_production_Ax2 >= min_production_Bx1 <= max_production_Ax2 <= max_production_B其中,x1和x2分别表示产品A和B的生产量,budget是预算,min_production_A和min_production_B是产品A和B的最小生产量,max_production_A和max_production_B是产品A和B的最大生产量。
Matlab中的非线性优化算法技巧在数学和工程领域中,非线性优化是一个非常重要的问题。
它涉及到求解一个具有非线性约束条件的最优化问题。
Matlab作为一种强大的数值计算工具,为我们提供了多种非线性优化算法。
本文将探讨一些在Matlab中使用非线性优化算法时的一些技巧和经验。
首先,我们来了解一下什么是非线性优化。
简单来说,非线性优化是指在给定一组约束条件下,寻找使得目标函数达到最小或最大值的变量取值。
与线性优化问题不同,非线性优化问题中的目标函数和约束条件可以是非线性的。
这使得问题的求解变得更加复杂和困难。
在Matlab中,有多种非线性优化算法可供选择。
其中最常用的算法是Levenberg-Marquardt算法和拟牛顿算法。
Levenberg-Marquardt算法是一种迭代算法,通过不断近似目标函数的线性化形式来求解。
它在处理高度非线性的问题时表现出色。
拟牛顿算法则是一种基于梯度的优化算法,通过估计Hessian矩阵的逆来进行迭代优化。
它在处理大规模问题时效果比较好。
在使用这些算法时,我们需要注意一些技巧和经验。
首先,选择合适的初始点非常重要。
初始点的选取直接影响了算法的收敛性和求解效率。
通常情况下,我们可以通过采用随机化初始点的方法来增加算法的稳定性和鲁棒性。
其次,我们需要注意选择合适的迭代终止条件。
防止算法陷入无限循环是非常重要的。
通常我们可以根据目标函数值的变化幅度或者梯度的大小来判断算法是否收敛。
此外,合理设置迭代步长和学习率也是非常重要的。
过大的学习率可能导致算法发散,而过小的学习率可能导致收敛速度过慢。
此外,Matlab中还提供了一些辅助函数来帮助我们使用非线性优化算法。
其中最常用的是fmincon函数,它可以求解带约束条件的非线性优化问题。
我们可以通过设置输入参数来指定目标函数、约束条件、算法类型等。
此外,Matlab还提供了一些可视化函数,如plot函数和contour函数,可以方便我们观察目标函数的形状和初始点的选择。
MATLAB中的非线性优化算法详解在计算机科学和工程领域,非线性优化是一个非常重要的问题。
它涉及到在给定一些约束条件下,寻找使得目标函数取得最优值的变量取值。
MATLAB作为一种强大的数值计算工具,提供了多种非线性优化算法来解决这个问题。
本文将详细介绍一些常用的非线性优化算法,并探讨它们的特点和适用场景。
1. 数学背景在介绍非线性优化算法之前,我们先来了解一下非线性优化的基本数学背景。
一个非线性优化问题可以表示为以下形式:minimize f(x)subject to g(x) ≤ 0h(x) = 0其中,f(x)是目标函数,g(x)是不等式约束条件,h(x)是等式约束条件。
x是优化变量。
目标是找到x使得f(x)取得最小值,并且满足约束条件。
2. 黄金分割法黄金分割法是一种经典的非线性优化算法。
它基于一个简单的原则:将搜索区间按照黄金分割比例分为两段,并选择一个更优的区间进行下一次迭代。
该算法的思想简单明了,但是它的收敛速度比较慢,特别是对于高维问题。
因此,该算法在实际应用中较少使用。
3. 拟牛顿法拟牛顿法是一类比较常用的非线性优化算法。
它通过近似目标函数的梯度信息来进行迭代优化。
拟牛顿法的核心思想是构造一个Hessian矩阵的近似矩阵,来更新搜索方向和步长。
其中,DFP算法和BFGS算法是拟牛顿法的两种典型实现。
DFP算法是由Davidon、Fletcher和Powell于1959年提出的,它通过不断迭代来逼近最优解。
该算法的优点是收敛性比较好,但是它需要存储中间结果,占用了较多的内存。
BFGS算法是由Broyden、Fletcher、Goldfarb和Shanno于1970年提出的。
它是一种变种的拟牛顿法,通过逼近Hessian矩阵的逆矩阵来求解最优解。
BFGS算法在存储方面比DFP算法更加高效,但是它的计算复杂度相对较高。
4. 信赖域法信赖域法是一种迭代优化算法,用于解决非线性优化问题。
它将非线性优化问题转化为一个二次规划问题,并通过求解这个二次规划问题来逼近最优解。
Matlab中的非线性优化和非线性方程求解技巧在科学和工程领域中,我们经常会遇到一些复杂的非线性问题,例如最优化问题和方程求解问题。
解决这些问题的方法主要分为线性和非线性等,其中非线性问题是相对复杂的。
作为一种强大的数值计算工具,Matlab提供了许多专门用于解决非线性优化和非线性方程求解的函数和方法。
本文将介绍一些常用的Matlab中的非线性优化和非线性方程求解技巧。
非线性优化是指在给定一些约束条件下,寻找目标函数的最优解的问题。
在实际应用中,往往需要根据实际情况给出一些约束条件,如等式约束和不等式约束。
Matlab中的fmincon函数可以用于求解具有约束条件的非线性优化问题。
其基本语法如下:[x,fval] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)其中,fun是目标函数,x0是初始值,A、b是不等式约束矩阵和向量,Aeq、beq是等式约束矩阵和向量,lb、ub是变量的上下边界。
x表示最优解,而fval表示最优解对应的目标函数值。
另外,非线性方程求解是指寻找使得方程等式成立的变量值的问题。
Matlab中提供的fsolve函数可以用于求解非线性方程。
其基本语法如下:x = fsolve(fun,x0)其中,fun是方程函数,x0是初始值,x表示方程的解。
除了fmincon和fsolve函数之外,Matlab还提供了一些其他的非线性优化和非线性方程求解函数,例如lsqnonlin、fminunc等,这些函数分别适用于无约束非线性优化问题和带约束非线性方程求解问题。
除了直接调用这些函数外,Matlab还提供了一些可视化工具和辅助函数来帮助我们更好地理解和解决非线性问题。
例如,使用Matlab的优化工具箱可以实现对非线性优化问题的求解过程可视化,从而更直观地观察到优化算法的收敛过程。
此外,Matlab还提供了一些用于计算梯度、雅可比矩阵和海塞矩阵的函数,这些函数在求解非线性问题时非常有用。
Matlab中的非线性优化与全局优化引言在科学与工程领域中,我们经常需要寻找某个问题的最优解。
其中,非线性优化和全局优化是两个常见的优化问题。
Matlab作为一种强大的数值计算工具,提供了丰富的优化函数,能够帮助我们有效地解决这些问题。
本文将介绍Matlab中的非线性优化和全局优化的基本概念、常用方法以及应用实例。
一、非线性优化非线性优化是指优化问题中目标函数和约束条件存在非线性关系的情况。
在Matlab中,可以使用fmincon函数来求解非线性优化问题。
此函数采用基于梯度的优化算法,如信赖域方法、内点方法等。
1.1 目标函数和约束条件在非线性优化中,我们需要定义一个目标函数和一组约束条件。
目标函数是我们要最小化(或最大化)的函数,通常是一个关于自变量的非线性函数。
约束条件是一组等式或不等式,限制了自变量的取值范围。
1.2 优化方法在使用fmincon函数时,我们需要提供目标函数、初始点、约束条件等参数。
其中,目标函数可以是Matlab中已有的函数,也可以是用户自定义的函数。
初始点表示优化算法的起始点,通常可以通过试探法来选择。
约束条件可以是等式约束或不等式约束。
根据约束条件的类型,我们可以选择使用不同的优化算法。
1.3 实例分析为了更好地理解非线性优化的应用,我们以经典的罗森布洛克函数为例。
罗森布洛克函数是一个多峰函数,在全局优化中经常被用来检验算法的性能。
我们可以使用Matlab中的fmincon函数对该函数进行最小化。
首先,我们定义罗森布洛克函数的目标函数和约束条件:```matlabfunction [f, c] = rosenbrock(x)f = 100 * (x(2) - x(1)^2)^2 + (1 - x(1))^2;c = x(1) + x(2) - 3;end```然后,我们使用fmincon函数来计算罗森布洛克函数的最小值:```matlabx0 = [0; 0]; % 初始点A = []; b = []; % 不等式约束Aeq = []; beq = []; % 等式约束lb = []; ub = []; % 变量上下界nonlcon = @rosenbrock; % 目标函数和约束条件options = optimoptions('fmincon', 'Algorithm', 'sqp');[x, fval] = fmincon(@(x) x(1)*x(2), x0, A, b, Aeq, beq, lb, ub, nonlcon, options);disp(['最小值:', num2str(fval)]);disp(['解:', num2str(x)]);```以上代码中,我们定义了初始点x0和约束条件,然后使用fmincon函数计算最小值。
实验四 用MATLAB 求解非线性优化问题一、实验目的:了解Matlab 的优化工具箱,利用Matlab 求解非线性优化问题。
二、相关知识非线性优化包括相当丰富的内容,我们这里就Matlab 提供的一些函数来介绍相关函数的用法及其所能解决的问题。
(一)非线性一元函数的最小值Matlab 命令为fminbnd(),其使用格式为: X=fminbnd(fun,x1,x2)[X,fval,exitflag,output]= fminbnd(fun,x1,x2)其中:fun 为目标函数,x1,x2为变量得边界约束,即x1≤x ≤x2,X 为返回得满足fun 取得最小值的x 的值,而fval 则为此时的目标函数值。
exitflag>0表示计算收敛,exitflag=0表示超过了最大的迭代次数,exitflag<0表示计算不收敛,返回值output 有3个分量,其中iterations 是优化过程中迭代次数,funcCount 是代入函数值的次数,algorithm 是优化所采用的算法。
例1:求函数25321()sin()x x x x f x e x ++-=+-在区间[2,2]-的最小值和相应的x 值。
解决此问题的Matlab 程序为: clearfun='(x^5+x^3+x^2-1)/(exp(x^2)+sin(-x))' ezplot(fun,[-2,2])[X,fval,exitflag,output]= fminbnd(fun,-2,2) 结果为:X = 0.2176 fval =-1.1312 exitflag = 1output = iterations: 13 funcCount: 13algorithm: 'golden section search, parabolic interpolation' (二)无约束非线性多元变量的优化这里我们介绍两个命令:fminsearch()和fminunc(),前者适合处理阶次低但是间断点多的函数,后者则对于高阶连续的函数比较有效。
如何使用MATLAB进行非线性优化简介:非线性优化是在给定约束条件下求解最优解的一种数学方法。
MATLAB是一款功能强大的科学计算软件,它提供了多种非线性优化算法,方便用户进行优化问题的求解。
本文将介绍如何使用MATLAB进行非线性优化。
一、准备工作在使用MATLAB进行非线性优化之前,我们需要安装MATLAB软件并了解一些基本的概念与术语。
1. 安装MATLAB访问MathWorks官方网站,下载并安装合适版本的MATLAB软件。
2. 了解基本概念在进行非线性优化前,我们需要了解一些基本概念,如优化问题、目标函数、约束条件等。
二、MATLAB中的非线性优化工具箱MATLAB中提供了多种非线性优化工具箱,包括优化工具箱、全局优化工具箱和混合整数优化工具箱。
根据具体问题的特点选择适合的工具箱进行优化。
1. 优化工具箱优化工具箱包含了用于求解非线性优化问题的函数和算法,如fminunc、lsqnonlin等。
其中,fminunc函数用于无约束非线性优化问题的求解,lsqnonlin函数用于带约束的非线性最小二乘问题的求解。
2. 全局优化工具箱全局优化工具箱适用于求解全局最优解的问题,其中常用的函数有ga、patternsearch等。
这些算法能在大范围搜索解空间,以克服局部最优解的问题。
3. 混合整数优化工具箱混合整数优化工具箱主要用于带有整数变量的优化问题,适用于求解组合优化问题、调度问题等。
三、使用MATLAB进行非线性优化的步骤下面将以一个实例来讲解使用MATLAB进行非线性优化的步骤。
实例:假设我们要通过非线性优化来求解一个函数的最小值,目标函数为f(x)=x^2+2x-3,其中x为实数。
1. 定义目标函数在MATLAB中,我们可以通过定义一个.m文件来表示目标函数。
例如,我们可以创建一个名为objFunc.m的文件,其中写入以下代码:function y = objFunc(x)y = x^2 + 2*x - 3;2. 设置初始点在进行非线性优化之前,我们需要设置一个初始点,作为优化算法的起始点。
在Matlab中如何进行非线性优化非线性优化是数学中一个重要的领域,涉及到寻找使得目标函数取得最大或最小值的变量值的问题。
而Matlab作为一种强大的数学计算工具,提供了多种方法和工具来进行非线性优化任务的求解。
本文将介绍在Matlab中进行非线性优化的基本概念和常用方法,并通过实例演示其使用方法。
1. 优化问题的建模在进行非线性优化之前,首先需要将具体的优化问题转化为一个数学模型。
优化问题通常可以用以下公式表示:min f(x)s.t. g(x) <= 0h(x) = 0其中,f(x)是目标函数,表示要求解的问题的性能指标;g(x)和h(x)分别是不等式约束和等式约束函数。
x是一组待优化变量,通常是一个向量。
2. Matlab中的优化工具箱Matlab提供了专门的优化工具箱,其中包含了许多用于求解优化问题的函数和算法。
在使用这些工具之前,需要首先加载优化工具箱。
可以通过以下命令来实现:>> addpath('optim')接下来,我们将介绍一些常用的优化求解函数。
3. 无约束优化无约束优化是最简单的一种优化问题,即目标函数没有任何约束条件。
在Matlab中,可以使用fminunc函数求解无约束优化问题。
下面给出一个例子:>> fun = @(x) x(1)^2 + x(2)^2; % 目标函数是x1^2 + x2^2>> x0 = [0, 0]; % 初始点(x1=0, x2=0)>> [x, fval] = fminunc(fun, x0) % 求解优化问题在上述例子中,fun是目标函数的句柄,x0是初始点。
fminunc函数返回的x是优化问题的最优解,fval是目标函数在最优解处的取值。
4. 约束优化当优化问题存在约束条件时,可以使用fmincon函数进行求解。
fmincon函数需要提供目标函数、约束函数以及变量取值的上下界。
悬置系统的多方向解耦率优化可以简化为一个多目标非线性优化问题。
解决多目标的非线性优化问题,此问题可以归结为如下模型:min γ (x)使得:F(x) ? weight *γ ≤ goalA*x ≤ b ,Aeq *x = beqc(x) ≤ 0, ceq(x) = 0lb ≤ x ≤ ub其中x、weight、goal、b、beq、lb和ub是向量,A和Aeq是矩阵;c(x)、ceq(x)和F(x)是返回向量的函数,他们可以是非线性函数。
F(x)是目标函数,goal 是欲达到的目标。
调用形式x = fgoalattain(fun,x0,goal,weight)x = fgoalattain(fun,x0,goal,weight,A,b)x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq)x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)x =fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,...lb,ub,nonlcon,options)[x,fval] = fgoalattain(...)[x,fval,attainfactor] = fgoalattain(...)[x,fval,attainfactor,exitflag] = fgoalattain(...)[x,fval,attainfactor,exitflag,output] = fgoalattain(...)[x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(...)调用说明fgoalattain函数用于获得目标函数fun中设置的参数x(x可为向量)的值,使得fun的值接近于目标值goal,达到优化fun函数的目的。
x = fgoalattain(fun,x0,goal,weight); x0是为fun中未知参数x设置的初始值, x的取值将从x0开始搜索,goal为欲达到的目标值,weight为模型中所加的权重。
x = fgoalattain(fun,x0,goal,weight,A,b);增加了线性约束条件A*x <= b,缩小了参数x的取值范围。
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq);使得x的取值必须满足线性方程组Aeq*x = beq,当无约束条件A*x <= b。
时应将A和b置为:A=[],b=[]。
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub);为x设定了上限ub和下限lb,使得lb <= x <= ub。
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon); nonlcon为关于x的非线性函数ceq(x) = 0,增加了参数x的非线性约束条件;当x 不需设定上下限时,设置:lb=[],ub=[]。
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,... options) ;options为fgoalattain可选的优化选项,可通过函数optimset来设置。
[x,fval] = fgoalattain(...); fval为目标函数fun中设定的参数值取x 时获得的结果。
[x,fval,attainfactor] = fgoalattain(...); attainfactor返回代表fval 与goal逼近程度的数字。
[x,fval,attainfactor,exitflag] = fgoalattain(...) ; exitflag的值用于描述fgoalattain获得结果的状态。
[x,fval,attainfactor,exitflag,output]= fgoalattain(...); output返回一个结构体,描述fgoalattain在计算过程中用到的优化算法及其计算情况。
[x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(...) ; lambda返回一个结构体,它的域中包含了参数x的拉格朗日乘子。
参数说明nonlcon参数:该函数计算非线性不等式约束c(x) <=0和非线性等式约束ceq(x)=0。
nonlcon函数是一个包含函数名的字符串,该函数可以是M文件、内部函数或MEX文件。
nonlcon函数需要输入向量x,返回两个变量—x处的非线性不等式向量c和x处的非线性等式向量ceq。
例如,若nonlcon='mycon',则M 文件的形式如下:function [c,ceq] = mycon(x)c = ...计算x处的非线性不等式。
ceq = ...计算x处的非线性等式。
若约束函数的梯度可以计算,且options.GradConstr设为'on',即options = optimset('GradConstr','on') ,则函数nonlcon也必须在第三个和第四个输出变量中输出c(x)的梯度GC和ceq(x)的梯度GCeq。
注意,可以通过核对nargout参数来避免计算GC和GCeq。
function [c,ceq,GC,GCeq] = mycon(x)c = ...x处的非线性不等式。
ceq = ...x处的非线性等式。
if nargout > 2被调用的nonlcon函数,有4个输出。
GC = ...不等式的梯度。
GCeq = ...等式的梯度。
end若nonlcon函数返回m元素的向量c和长度为n的x,则c(x)的梯度GC是一个n*m的矩阵,其中GC(i,j)是c(j)对x(i)的偏导数。
同样,若ceq是一个p元素的向量,则ceq(x)的梯度Gceq是一个n*p的矩阵,其中Gceq(i,j)是ceq(j)对x(i)的偏导数。
options变量:优化参数选项。
你可以用optimset函数设置或改变这些参数的值。
DerivativeCheck–比较用户提供的导数(目标函数或约束函数的梯度)和有限差分导数。
Diagnostics –打印将要最小化或求解的函数的诊断信息。
Matlab中文论坛DiffMaxChange–变量中有限差分梯度的最大变化。
DiffMinChange - 变量中有限差分梯度的最小变化。
Display–显示水平。
设置为'off'时不显示输出;设置为'iter'时显示每一次迭代的输出;设置为'final'时只显示最终结果。
GoalExactAchieve –使得目标个数刚好达到,不多也不少。
GradConstr –用户定义的约束函数的梯度。
GradObj –用户定义的目标函数的梯度。
使用大型方法时必须使用梯度,对于中型方法则是可选项。
MaxFunEvals –函数评价的允许最大次数。
MaxIter –函数迭代的允许最大次数。
MeritFunction –如果设为'multiobj',则使用目标达到或最大最小化目标函数的方法。
若设置为'singleobj',则使用fmincon 函数计算目标函数。
TolCon–约束矛盾的终止容限。
TolFun–函数值处的终止容限。
TolX–x处的终止容限。
weight变量:为权重向量,可以控制低于或超过fgoalattain函数指定目标的相对程度。
当goal的值都是非零值时,为了保证活动对象超过或低于的比例相当,将权重函数设置为abs(goal) (活动对象为阻止解处目标改善的对象集合)。
实例分析:某轿车上采用三点悬置,悬置的初始参数已给定,需要对悬置参数进行优化从而提高悬置系统的解耦率,初始参数为x0。
首先编写通过初始参数计算出悬置系统解耦率函数:Energy.m然后找出解耦率矩阵中需要优化的目标,垂向和侧倾解耦率,设为目标函数: Objfun.m编写优化函数MutliObjOpti.m优化函数中主要设置参数:Options = optimset (Display,final, MaxFunEvals,100000,MaxIter,5000,)Options中可设置更多参数。
[x,fval,attainfactor,exitflag] = fgoalattain (@Objfun, x0, goal, weight, A, b, Aeq, beq,...lb,ub,nonlcon,options)Goal为[100,100]A, b, Aeq, beq均为[ ],表示不起约束作用lb,ub主要设置为悬置参数中位置、刚度、角度所允许变化的范围。
Nonlcon为非线性约束,其中Ceq = [ ],主要利用不等式约束C来对刚度间的关系进行约束,对频率进行约束。
例:一号悬置刚度k1/k2<3,第一阶频率10Hz<f(1)<15Hz,设置为C(1)=x(4,1) - 3*x(5,1) %表示一号悬置刚度关系C(2)=10- f(1) %一阶频率大于10HzC(3)= f(1)-15 %一阶频率小于15Hz由于本地电脑上没有完整程序,没有完整程序运行结果,对此深表歉意。