如何用matlab求解微分方程多目

平滑约束和非约束问题的和
用于非线性最小二乘、约束线性最小二乘、和非线性方程的求解器
优化建模工具
优化进度的图形监视
梯度预估加速(使用 Parallel Computing Toolbox(TM))
使用混合整数线性规划问题确定从仓库和厂房到供应销售地点的最佳路线。
定义和求解优化问题
使用优化技术寻找给出可能的最佳结果的一组设计参数或决策。优化问题是设计或决策问题的一个模型。您可以将设计参数或决策建模为优化参数。优化问题的其他组成部分包括和约束条件(如果适用)。目标函数要最小化或最大化的所需数量。约束条件限制优化变量的可能取值。
最小二乘问题和非线性方程属于优化问题,是因为它们可以通过最小化平方和来求解。
将问题描述转换为可以使用优化求解的数学规划(使用蒸汽发电厂示例)。
基于问题的优化建模
利用通过优化变量构建表达式的来定义您的目标和约束条件。此方法可用于线性和混合整数线性优化问题。
使用 Optimization Toolbox 求解器基于问题导向性的求解线性规划(使用蒸汽发电厂示例)。
使用基于问题的建模确定最优发电计划。
基于求解器的优化建模
使用定义您的目标和约束条件。您可以使用函数或矩阵,其中含有您选择的求解器需要的优化变量。此方法可用于 Optimization Toolbox 中的所有求解器。
使用 Optimization Toolbox(TM) 求解器求解线性规划(使用蒸汽发电厂示例)。
使用基于求解器的建模确定最优投资组合。
选择求解器
Optimization Toolbox 包含对不同类型目标和约束的求解器。在使用基于求解器的方法时,可帮助您选择适合您问题的最佳求解器。在使用基于问题的方法时,会自动为您选择适当的求解器。
Optimization Toolbox 提供了范围广泛的函数,使您通过一次函数调用便能解决许多类型的优化问题。您还可以使用这些函数构造更加复杂的优化算法,比如列生成算法,或用于某些算法,在这些算法中优化只是其中的一个步骤,比如机器人的运动规划。
使用列生成算法求解下料问题。
求解器使您能调节或调整优化进程和可视化求解器进度。
在 Optimization Toolbox 中使用 optimoptions 设置选项,调节求解器和监控优化进度。
Optimization Toolbox 求解器通过使用有限差估计目标函数的偏导数最小化非线性函数。您可以通过定义计算偏导数值的函数,极大地减小导数估计步长的开销。
计算目标函数的偏导数可能单调乏味。您可以利用Symbolic Math Toolbox(TM) 以符号形式表达问题,并通过使用内置函数自动计算目标函数的偏导数。然后,您可以生成 MATLAB 代码,与 Optimization Toolbox 求解器一起使用。
您可以使用 Optimization Toolbox 求解器和
创建能与没有
的用户共享的决策支持工具。可以免版权税向无数量限制的终端用户部署这些独立应用程序。利用 ,您还可以将 MATLAB 优化算法与其他语言集成,比如 C++、Java(R)、Python(R) 和 .NET。
非线性优化
Optimization Toolbox 提供用于求解
中的问题的应用广泛的优化算法。该工具箱包含用于无约束和有约束非线性优化的求解器和用于的求解器。
无约束非线性优化
Optimization Toolbox 使用三种算法求解无约束非线性最小化问题:
拟牛顿算法使用二次和三次混合线搜索法并结合 Broyden-Fletcher-Goldfarb-Shanno (BFGS) 公式来更新海赛矩阵的近似值。
Nelder-Mead 算法(或下坡单纯形)是只使用函数值(不要求导数)的直接搜索算法,可用于处理非平滑目标函数。 为非线性优化提供了更多的非求导优化算法。
信赖域算法用于无约束非线性问题,特别适用于有稀疏性或其他结构的大规模问题。
用于在发动机性能图中搜索峰值效率的无约束非线性优化。
约束非线性优化
约束非线性优化问题由线性或非线性目标函数构成,并可能受到线性和非线性约束。Optimization Toolbox 使用三种算法求解这些问题:
内点算法用于常规非线性优化。它特别适用于具有稀疏性或其它结构的大规模问题,并且可容许用户自定义的目标和约束函数评估失败情形。它基于障碍函数,且在优化运行过程中可选择保持所有迭代对于边界严格可行。
SQP 算法用于常规非线性优化。它服从所有迭代的边界,并且容许用户定义的目标和约束函数评估失败情形。
信赖域反射算法仅用于限制约束问题或线性等式。它特别适用于大规模问题。
内点和信赖域反射算法使您可以用不同的方法来评估估计海赛矩阵。
对于内点算法,可以使用以下方法评估估计海赛矩阵:
BFGS(稠密)
有限内存 BFGS(用于大规模问题)
海赛-乘函数
实际海赛矩阵(稀疏或稠密)
有限梯度差法,但不要求预先知道稀疏性结构。
对于信赖域反射算法,可以使用:
有限梯度差,稀疏性结构的海赛矩阵
实际海赛矩阵(稀疏或稠密)
海赛-乘函数
为降低内存使用率,内点和信赖域反射算法可用于在函数中计算海赛乘向量的乘积而无需明确形成海赛矩阵。
用于设计最佳悬架系统的约束非线性优化。
线性规划和二次规划
Optimization Toolbox 可求解大规模线性和二次规划问题。
问题涉及最小化或最大化受到边界、线性等式和不等式约束的线性目标函数。线性规划用于变量之间关系可线性表示的财务、能源、运营研究及其他应用领域。
Optimization Toolbox 包含用于求解线性规划问题的两种算法:
对偶单纯形算法是一种单纯形算法。单纯形算法是一种系统规划,用于生成并测试线性规划的候选顶点解,是进行线性规划的最常用算法。
内点算法基于用来求解线性规划问题的原始-对偶预估-校正算法。内点法尤其适合于具有特殊结构或可通过稀疏性矩阵定义的大规模问题。
在一家蒸汽发电厂的设计中使用的线性规划。
问题涉及对受到边界、线性等式和不等式约束的多元二次函数的最小化。二次规划用于财务金融中投资组合优化、发电厂发电优化、工程中设计优化及其他应用领域。
Optimization Toolbox 包含两种用于求解二次规划的算法:
内点凸包算法求解具有任何约束组合的凸包问题。
信赖域反射算法求解边界约束问题或线性等式约束问题。
本次网络技术交流会通过一个二次优化问题示例和 MATLAB 中的符号运算工具,带您了解如何使用 MATLAB 求解优化问题。
内点凸包和信赖域反射算法都是大规模的,这表示两种算法都可以处理大型稀疏问题。而且,内点凸包算法具有优化的内部线性代数例程和一个新的预求解模块,该模块可以改进速度、数值稳定性以及不可行性的检测。 而且,内点凸包算法具有优化的内部线性代数程序和一个预求解模块,该模块可以改进速度、数值稳定性以及不可行性的检测。
为三种共同基金执行基于回报的投资风格分析所使用的二次规划。
混合整数线性规划
扩展了问题,增加了最优解中部分或全部变量必须是整数的约束。
对于一些优化问题,变量不应取分数值。例如,如果一个变量代表要认购的股票数量,则只应取整数值。同样,如果一个变量代表发电机的开/关状态,则只应取二进制值(0 或 1)。混合整数线性规划问题通过增加了这些变量在最优解中只应取整型或整数的约束,从而允许对这种行为进行建模。
学习如何使用2014a版本中新的混合整数线性规划优化求解。这个新的求解器使您能够求解一些或全部变量都约束为整数值的优化问题。
Optimization Toolbox 使用如下算法求解混合整数线性规划问题:
执行整型规划预处理,紧缩可行区域
应用切割平面紧缩可行区域
使用启发式搜索整型可行解
验证分枝定界算法求解一系列线性规划松驰问题不可能存在更好的可行解
开始使用MATLAB(R)优化工具改进您的设计,以做出更好的商业决策。了解设置和解决优化问题的最佳实践。
多目标优化
涉及受同一组约束的多个目标函数的最小化。Optimization Toolbox 提供的函数可求解以下两种多目标优化问题的公式:
目标达到问题,涉及减小线性或非线性向量函数的值以达到目标向量中指定的目标值。目标的相对重要性则使用权重向量来描述。目标达到问题也可能受到线性和非线性约束。
最小最大问题求解最小化一组多元函数的最差情况值,可能受到线性和非线性约束。
Optimization Toolbox 将两种多目标问题都转换为标准的约束优化问题,然后使用动态序列方法对其求解。
为非平滑问题提供了一个额外的多目标求解器。
用于设计低通滤波器的多目标优化。
非线性最小二乘、数据拟合及非线性方程
Optimization Toolbox 可求解线性和非线性最小二乘问题、问题和非线性方程。
线性和非线性最小二乘优化
该工具箱包含两种用于求解约束线性最小二乘问题的算法:
内点算法求解有边界的问题以及线性不等式或等式。
信赖域反射算法求解只有边界约束的大规模问题。
该工具箱包含两种用于求解非线性最小二乘问题的算法:
信赖域反射算法实现专用于非线性最小二乘问题的信赖域方法。它用于无约束和有边界约束的问题。
Levenberg-Marquardt 算法用于无约束问题。
使用非线性最小二乘拟合超越方程。
该工具箱为数据拟合问题提供专用的界面接口,在其中需要找出一系列非线性函数中最适合一组数据点的特定函数。该工具箱对数据拟合问题采用的算法与其用于非线性最小二乘问题的算法相同。
使用最小二乘曲线拟合来拟合非线性指数方程。
非线性方程求解
Optimization Toolbox 实现折线信赖域算法来求解非线性方程组,其中的方程个数与未知数个数一样多。该工具箱还可以使用信赖域算法和 Levenberg-Marquardt 算法来求解此问题。
使用非线性方程求解器来求解 n 维 Rosenbrock 函数。
非线性问题的 Optimization Toolbox 求解器使用梯度法最小化或最大化目标。目标函数梯度的有关信息可使用有限差通过求解器估计或由用户向求解器提供。 通过启用内置的并行计算支持或通过定义优化问题的自定义并行计算实现,从而能够缩短求解时间。
借助 Optimization Toolbox 中的内置并行计算支持,对于一般非线性优化问题、非线性最小二乘和方程、非线性方程组以及多目标问题的求解器,在求解器中可加速梯度估计步长计算。
通过明确定义优化问题以使用并行计算功能,可以自定义并行计算实现。可将目标或约束函数定义为使用并行计算,从而缩短评估目标或约束所需的时间。
使用 Parallel Computing Toolbox 更快地求解优化问题。
使用非线性优化求解器中的内置并行计算支持来加速静电问题的求解。通过指定目标函数(右上)和约束函数(右下)的 UseParallel 选项(左)来启用该内置功能,并在左侧显示解。
Select a Web Site
Choose a web site to get translated content where available and see local events and
offers. Based on
your location, we recommend that you select: .
You can also select a web site from the following list:
(Fran?ais)
(Italiano)
Switzerland
Asia Pacific[MATLAB]&利用遗传算法函数求目标函数的最优解
最近接触到了遗传算法以及利用遗传算法求最优解,所以就把这些相关的内容整理记录一下。
一、遗传算法简介(摘自维基百科)
遗传算法(英语:genetic
(GA))是计算数学中用于解决最佳化的搜索算法,是进化算法的一种。进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择以及杂交等。
选择初始生命种群
评价种群中的个体适应度
以比例原则(分数高的挑中概率也较高)选择产生下一个种群。
改变该种群(交叉和变异)
直到停止循环的条件满足
遗传算法擅长解决的问题是全局最优化问题。
跟传统的爬山算法相比,遗传算法能够跳出局部最优而找到全局最优点。而且遗传算法允许使用非常复杂的适应度函数(或者叫做目标函数),并对变量的变化范围可以加以限制。
二、MATLAB中的GA函数
= ga(FITNESSFCN, NVARS)
这是GA函数最简单的调用方法,其中FITNESSFCN是目标函数,其参数应为一向量,NVARS则是参数向量的维度。
X是目标函数值为最小时的参数向量。
= ga(FITNESSFCN, NVARS, A, b, Aeq, beq, lb, ub, NONLCON,
这些参数用于约束X:
AX &= B, AeqX = Beq
(线性约束)
&= X &= UB
NONLCON:定义C(X) &= 0, Ceq(X) = 0(非线性约束)
options:设置GA的相关参数
[X,FVAL,EXITFLAG,OUTPUT] = ga(FITNESSFCN, ...)
FVAL是在目标函数的参数为X时的值
EXITFLAG是结束遗传算法计算的标志
-0 Maximum number of generations exceeded.
-1 Optimization terminated by the output or plot
-2 No feasible point found.
-4 Stall time limit exceeded.
-5 Time limit exceeded.
OUTPUT结构体包含了遗传代数、输出种群等信息
options = gaoptimset();
options.Generations=5000;&%迭代次数
options.PopulationSize=30;&%种群数目
还又其他很多选项可以设置。
三、一个实例
假设要求目标函数
(339-0.01*x1-0.003*x2)*x1 + (399-0.004*x1-0.01*x2)*x2 -
(*x1+225*x2);
的最大值。
首先编写目标函数myfit.m:
function&f
= myfit( x )
= (339-0.01*x(1)-0.003*x(2))*x(1)...
(399-0.004*x(1)-0.01*x(2))*x(2)...
(*x(1)+225*x(2));
= -f;&%因为GA是寻找最小值,所以为了求这个函数的最大值,取f的相反数
调用GA函数:
X =ga(@myfit, 2)
结果显示:&Optimization terminated: maximum
number of generations exceeded.
说明迭代达到最大次数仍未求得最优解。因此下面通过options增大迭代次数:
options = gaoptimset();
options.Generations = 2000;&%最大迭代数设为2000
%再次调用GA函数
[X,FVAL,EXITFLAG,OUTPUT] =ga(@myfit, 2 ,[],
[],[],[],[],[],[],options);
结果显示:&Optimization
terminated: average change in the fitness value less than
options.TolFun.
  1.0e+03
FVAL = -5.5364e+05
这个结果与对目标函数 x1、x2
分别求偏导得到的结果(x1=4735, x2=7043, y=553641)是一致的,表明结果正确。
四、其他求最优解的方法
MATLAB还有许多其他求最优解的常用函数,如
fmincon()、fminsearch()、fminimax()等。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。多目标线性规划求解方法及matlab实现
求解多目标线性规划的基本思想是将多目标转化为单目标,常见的方法有理想点法、线性加权法、最大最小法、目标规划法、模糊数学解法等。这里就这几种方法进行举例说明,并用matlab实现。
一、多目标线性规划模型
多目标线性规划模型是有两个或两个以上的目标函数,且所有的目标函数和约束条件都是线性的,数学模型表示为:
则上述目标规划可简化为:
二、MATLAB优化工具箱常用函数
常用的求解最优化问题的函数,有线性规划问题的linprog,非线性规划问题的fmincon,最大最小问题的fminimax,求解多目标的fgoalattain等。调用形式分别为:
三、多目标线性规划的求解方法及MATLAB实现
1.理想解法:
解:先对单目标进行求解
对第一个目标求解的matlab程序为:
b=[18;10];
[x,favl]=linprog(f,a,b,[],[],lb,ub);
输出结果为:x=0.0,favl=-12.0000,所以最大值为12.0000
对第二个目标求解的matlab程序为:
f=[-4;-3];
b=[18;10];
[x,favl]=linprog(f,a,b,[],[],lb,ub);
输出结果为:x=3.0,favl=-24.0000,所以最大值为24.0000
于是得到理想点:(12,24)
Matlab程序为:
a=[2 3;2 1];
b=[18;10];
x=fmincon('((-3*x(1)+2*x(2)-12)^2+(4*x(1)+3*x(2)-24)^2)^(1/2)',x0,a,b,[],[],lb,ub);
f1=-3*x(1)+2*x(2);
f2=4*x(1)+3*x(2);
2.线性加权法:
求解的matlab程序为:
f=[-0.5;-2.5];
a=[2 3;2 1];
b=[18;10];
x=linprog(f,a,b,[],[],lb,ub);
输出结果为:x1=0..0000,对应的目标值为f1=12..0000
3.最大最小法
首先编写M函数文件:
function f=mutiplesubjiect(x)
f(1)=3*x(1)-2*x(2);
f(2)=-4*x(1)-3*x(2);
&& x0=[0;0];
a=[2 3;2 1];
b=[18;10];
[x,favl]=fminimax('mutiplesubjiect',x0,a,b,[],[],lb,[])
4.目标规划法
首先编写M函数文件,和上述M函数相同。然后输入:
goal=[12,24];
weight=[12,24];
a=[2 3;2 1];
b=[18;10];
[x,fval]=fgoalattain('mutiplesubjiect',goal,weight,x0,a,b,[],[],lb,[])
输出结果为:x1=0..0000,对应的目标值为f1=12..0000
5.模糊数学解法
求解的matlab程序为:
f=[0;0;-1];
a=[3 -2 27
b=[15;0;18;10];
lb=[0;0;0];
[x,favl]=linprog(f,a,b,[],[],lb,ub);
f1=-3*x(1)+2*x(2);
f2=4*x(1)+3*x(2);
输出结果为:x1=1...8354,对应的目标值为f1=7..0506
最优化方法(n)多目标优化
MATLAB求多目标优化问题——fminimax
多目标优化问题中常见分解方法的理解
多目标遗传算法优化
没有更多推荐了,matlab 多目标规划问题?
如何用matlab求解minf(1)=6-3x-4y-5zminf(2)=3x+4y+5z-6约束条件:x+y+z=1x,y,z&0
09-09-25 &
是这样的function zFgoalattain % 多目标最优化
clc % 给定目标,权重按目标比例确定,给出初值 %options = optimset('TolCon',1e-008); goal = [1 1 ]; weight = [0.5 0.5]; x0 = [1 1 1]; % 给出约束条件的系数 A=[]; B=[]; Aeq = [1 1 1]; Beq = 1; lb=[0 0 0]; ub=[]; % 求解 [x,fval,attainfactor,exitflag] = fgoalattain(@ObjFun,x0,goal,weight,A,B,Aeq,Beq,lb,ub) % ------------------------------------------------------------------ function f = ObjFun(x) f1=-3*x(1)-4*x(2)-5*x(3)+6; f2=3*x(1)+4*x(2)+5*x(3)-6; f=[f1;f2]; 结果:x =         0         0    1.0000fval =    1.0000   -1.0000attainfactor =  6.exitflag =     5
请登录后再发表评论!嵌入式Linux
MATLAB求多目标优化问题——fminimax
一、 fminimax函数 求解的模型
minmax { f1, f2, f3, ……, f3}
AX &= b (线性不等式约束)
AeqX = beq (线性等式约束)
C(X) &= 0 (非线性不等式约束条件)
Ceq(X) = 0 (非线性等式约束)
Lb &= X &= Ub (边界约束条件)
二、 fminimax函数用法说明
1. 调用格式
x = fminimax(fun,x0)
x = fminimax(fun,x0,A,b)
x = fminimax(fun,x0,A,b,Aeq,beq)
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub)(最常用的)
x =fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
x =fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
[x,fval,maxfval] =fminimax(…)
[x,fval,maxfval,exitflag]= fminimax(…)
[x,fval,maxfval,exitflag,output]= fminimax(…)
[x,fval,maxfval,exitflag,output,lambda]= fminimax(…)
2. 参数说明
(1)fun为目标函数;
(2)x0为初始值;
(3)A、b满足线性不等约束 ,若没有不等约束,则取A=[ ],b=[ ];
(4)Aeq、beq满足等式约束 ,若没有,则取Aeq=[ ],beq=[ ];
(5)lb、ub满足 ,若没有界,可设lb=[ ],ub=[ ];
(6)nonlcon的作用是通过接受的向量x来计算非线性不等约束 和等式约束分别在x处的值C和Ceq,通过指定函数柄来使用,如:
&&x =fminimax(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon),先建立非线性约束函数,并保存为mycon.m:function[C,Ceq]
= mycon(x)
% 计算x处的非线性不等约束 的函数值。
% 计算x处的非线性等式约束 的函数值。
(7)options为指定的优化参数;
(8)fval为最优点处的目标函数值;
(9)maxfval为目标函数在x处的最大值;
(10)exitflag为终止迭代的条件;
(11)lambda是Lagrange乘子,它体现哪一个约束有效。
(12)output输出优化信息。
设某城市有某种物品的10个需求点,第i个需求点Pi的坐标为(ai,bi),道路网与坐标轴平行,彼此正交。现打算建一个该物品的供应中心,且由于受到城市某些条件的限制,该供应中心只能设在x界于[5,8],y界于[5.8]的范围之内。问该中心应建在何处为好?
P点的坐标为:
1. 题目分析
设供应中心的位置为(x,y),要求它到最远需求点的距离尽可能小,则数学模型为:
2. fminimax函数参数分析
3. MATLAB代码
(1)主函数文件
%求解极大值的极小值的主函数 main.m:
%x初始值,随意设定
%线性不等式约束AX &= b
A=[-10;1 0;0 -1;0 1];
b=[-5;8;-5;8];
%线性等式约束AeqX = beq
%边界约束条件Lb &= X &= Ub
[x,fva,maxfval,exitflag,output]=fminimax(@myfun,x0,A,b,Aeq, Beq,lb,ub)
plot(x(1),x(2),'bo')
% 图中标出要求的点
(2)目标函数文件
%目标函数文件 myfun.m:
functionf=myfun(x)
x1=[14 3 5 9 12 6 20 17 8];
x2=[210 8 18 1 4 5 10 8 9];
str=[repmat('(', 10, 1)
num2str(x1')
num2str(x2') repmat(
')', 10, 1) ];
plot(x1,x2,'*r');%画出10个需求点
text(x1,x2,cellstr(str));
%给10个需求点标出坐标
%返回10个需求点的各自的目标函数
f(i)=abs(x(1)-x1(i))+abs(x(2)-x2(i));
Matlab优化问题08—fminimax
Matlab优化问题04_1—linprog(基础)
Matlab优化问题03—fminsearch
多目标优化问题中常见分解方法的理解
没有更多推荐了,}

我要回帖

更多关于 matlab求解偏微分方程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信