MATLAB求解非线性规划
- 格式:ppt
- 大小:462.50 KB
- 文档页数:61
matlab解决⾮线性规划问题(凸优化问题)当⽬标函数含有⾮线性函数或者含有⾮线性约束的时候该规划问题变为⾮线性规划问题,⾮线性规划问题的最优解不⼀定在定义域的边界,可能在定义域内部,这点与线性规划不同;例如:编写⽬标函数,定义放在⼀个m⽂件中;编写⾮线性约束条件函数矩阵,放在另⼀个m⽂件中;function f = optf(x);f = sum(x.^2)+8;function [g, h] = limf(x);g = [-x(1)^2+x(2)-x(3)^2x(1)+x(2)^2+x(3)^3-20]; %⾮线性不等式约束h = [-x(1)-x(2)^2+2x(2)+2*x(3)^2-3]; %⾮线性等式约束options = optimset('largescale','off');[x y] = fmincon('optf',rand(3,1),[],[],[],[],zeros(3,1),[],...'limf',options)输出为:最速下降法(求最⼩值):代码如下:function [f df] = detaf(x);f = x(1)^2+25*x(2)^2;df = [2*x(1)50*x(2)];clc,clear;x = [2;2];[f0 g] = detaf(x);while norm(g)>1e-6 %收敛条件为⼀阶导数趋近于0p = -g/norm(g);t = 1.0; %设置初始步长为1个单位f = detaf(x+t*p);while f>f0t = t/2;f = detaf(x+t*p);end %这⼀步很重要,为了保证最后收敛,保持f序列为⼀个单调递减的序列,否则很有可能在极值点两端来回震荡,最后⽆法收敛到最优值。
x = x+t*p;[f0,g] = detaf(x);endx,f0所得到的最优值为近似解。
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 解法及其应用(一) 问题描述非线性规划是具有非线性约束条件或目标函数的数学规划,是运筹学的一个重要分支。
非线性规划是20世纪50年代才开始形成的一门新兴学科。
70年代又得到进一步的发展。
非线性规划在工程、管理、经济、科研、军事等方面都有广泛的应用,为最优设计提供了有力的工具。
在经营管理、工程设计、科学研究、军事指挥等方面普遍地存在着最优化问题。
例如:如何在现有人力、物力、财力条件下合理安排产品生产,以取得最高的利润;如何设计某种产品,在满足规格、性能要求的前提下,达到最低的成本;如何确定一个自动控制的某些参数,使系统的工作状态最佳;如何分配一个动力系统中各电站的负荷,在保证一定指标要求的前提下,使总耗费最小;如何安排库存储量,既能保证供应,又使储存 费用最低;如何组织货源,既能满足顾客需要,又使资金周转最快等。
对于静态的最优化 问题,当目标函数或约束条件出现未知量的非线性函数,且不便于线性化,或勉强线性化后会招致较大误差时,就可应用非线性规划的方法去处理。
具有非线性约束条件或目标函数的数学规划,是运筹学的一个重要分支。
非线性规划研究一个n 元实函数在一组等式或不等式的约束条件下的极值问题,且目标函数和约束条件至少有一个是未知量的非线性函数。
目标函数和约束条件都是线性函数的情形则属于线性规划。
本实验就是用matlab 软件来解决非线性规划问题。
(二) 基本要求掌握非线性规划的MATLAB 解法,并且解决相关的实际问题。
题一 :对边长为3米的正方形铁板,在四个角剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大?题二: 某厂生产一种产品有甲、乙两个牌号,讨论在产销平衡的情况下如何确定各自的产量,使总利润最大. 所谓产销平衡指工厂的产量等于市场上的销量.符号说明:z(x 1,x 2)表示总利润;p 1,q 1,x 1分别表示甲的价格、成本、销量; p 2,q 2,x 2分别表示乙的价格、成本、销量; a ij ,b i ,λi ,c i (i ,j =1,2)是待定系数.题三:设有400万元资金, 要求4年内使用完, 若在一年内使用资金x 万元, 则可得效益x 万元(效益不能再使用),当年不用的资金可存入银行, 年利率为10%. 试制定出资金的使用计划, 以使4年效益之和为最大.(三) 数据结构题一:设剪去的正方形的边长为x ,则水槽的容积为:x x )23(2-;建立无约束优化模型为:min y=-x x )23(2-, 0<x<1.5题二:总利润为: z(x1,x2)=(p1-q1)x1+(p2-q2)x2若根据大量的统计数据,求出系数b1=100,a11=1,a12=0.1,b2=280,a21=0.2,a22=2,r1=30,λ1=0.015,c1=20, r2=100,λ2=0.02,c2=30,则问题转化为无约束优化问题:求甲,乙两个牌号的产量x1,x2,使总利润z 最大.为简化模型,先忽略成本,并令a12=0,a21=0,问题转化为求:z1 = ( b1 - a11x1 ) x1 + ( b2 - a22x2 ) x2的极值. 显然其解为x1 = b1/2a11 = 50, x2 = b2/2a22 = 70,我们把它作为原问题的初始值.题三:设变量i x 表示第i 年所使用的资金数,则有 4,3,2,1,04.5321.121.1331.14841.121.14401.1400..max 43213212114321=≥≤+++≤++≤+≤+++=i x x x x x x x x x x x t s x x x x z i(四) 源程序题一:编写M 文件fun0.m:function f=fun0(x)f=-(3-2*x).^2*x;主程序为wliti2.m:[x,fval]=fminbnd('fun0',0,1.5);xmax=xfmax=-fval题二:建立M-文件fun.m:function f = fun(x)y1=((100-x(1)- 0.1*x(2))-(30*exp(-0.015*x(1))+20))*x(1); y2=((280-0.2*x(1)- 2*x(2))-(100*exp(-0.02*x(2))+30))*x(2); f=-y1-y2;输入命令:x0=[50,70];x=fminunc(‘fun ’,x0),z=fun(x)题三:建立M 文件 fun44.m,定义目标函数:function f=fun44(x)f=-(sqrt(x(1))+sqrt(x(2))+sqrt(x(3))+sqrt(x(4)));建立M 文件mycon1.m 定义非线性约束:function [g,ceq]=mycon1(x)g(1)=x(1)-400;g(2)=1.1*x(1)+x(2)-440;g(3)=1.21*x(1)+1.1*x(2)+x(3)-484;g(4)=1.331*x(1)+1.21*x(2)+1.1*x(3)+x(4)-532.4;ceq=0主程序youh4.m 为:x0=[1;1;1;1];vlb=[0;0;0;0];vub=[];A=[];b=[];Aeq=[];beq=[];[x,fval]=fmincon('fun44',x0,A,b,Aeq,beq,vlb,vub,'mycon1')(五) 运行结果题一:运算结果为: xmax = 0.5000,fmax =2.0000.即剪掉的正方形的边长为0.5米时水槽的容积最大,最大容积为2立方米.题二:运行结果为:x=23.9025, 62.4977, z=6.4135e+003即甲的产量为23.9025,乙的产量为62.4977,最大利润为6413.5.题三:运行结果为:x1=86.2;x2=104.2;x3=126.2;x4=152.8;z=43.1(六) 相关知识用Matlab 解无约束优化问题一元函数无约束优化问题21),(m in x x x x f ≤≤常用格式如下:(1)x= fminbnd (fun,x1,x2)(2)x= fminbnd (fun,x1,x2 ,options)(3)[x ,fval]= fminbnd (...)(4)[x ,fval ,exitflag]= fminbnd (...)(5)[x ,fval ,exitflag ,output]= fminbnd (...)其中(3)、(4)、(5)的等式右边可选用(1)或(2)的等式右边。
遗传算法解决非线性规划问题的Matlab程序首先,让我们来了解一下什么是非线性规划问题。
非线性规划问题是指目标函数或约束条件中至少有一个是非线性函数的规划问题。
与线性规划问题不同,非线性规划问题的求解往往没有通用的解析方法,需要借助数值优化算法来找到最优解或近似最优解。
遗传算法是一种基于自然选择和遗传机制的随机搜索算法。
它模拟了生物进化的过程,通过对种群中个体的选择、交叉和变异操作,逐步优化个体,从而找到问题的最优解。
在解决非线性规划问题时,遗传算法将问题的解编码为染色体,通过适应度函数来评估染色体的优劣,然后通过遗传操作不断进化种群,直到找到满意的解。
接下来,我们开始介绍如何在 Matlab 中实现遗传算法来解决非线性规划问题。
首先,我们需要定义问题的目标函数和约束条件。
假设我们要解决的非线性规划问题是:\\begin{align}&\min f(x) = x_1^2 + x_2^2 2x_1x_2 + 2x_1 4x_2 + 5\\&\text{st } x_1 + x_2 \leq 5\\&-2 \leq x_1 \leq 2\\&-3 \leq x_2 \leq 3\end{align}\在 Matlab 中,我们可以定义目标函数如下:```matlabfunction f = objective(x)f = x(1)^2 + x(2)^2 2x(1)x(2) + 2x(1) 4x(2) + 5; end```约束条件可以通过定义一个函数来判断:```matlabfunction c, ceq = constraints(x)c =;ceq =;if x(1) + x(2) > 5c = x(1) + x(2) 5;endend```然后,我们需要设置遗传算法的参数。
这些参数包括种群大小、最大迭代次数、交叉概率、变异概率等。
```matlabpopSize = 50; %种群大小maxGen = 100; %最大迭代次数pc = 08; %交叉概率pm = 01; %变异概率```接下来,我们需要对个体进行编码。
佛山科学技术学院上 机 报 告课程名称 数学应用软件上机项目 用MATLAB 求解非线性规划问题 专业班级 姓 名 学 号一. 上机目的1.了解非线性规划的基本理论知识。
2.对比Matlab 求解线性规划,学习用Matlab 求解非线性规划的问题。
二. 上机内容1、用quadprog 求解二次规划问题min f(x):2、求解优化问题:min 321)(x x x x f -= S.T.72220321≤++≤x x x注:取初值为(10,10,10)。
3、求表面积为常数150 m 2的体积最大的长方体体积及各边长。
注:取初值为(4,5,6)。
三. 上机方法与步骤 1、可用两种方法解题: 方法一:Matlab 程序:H=[1 -1;-1 2]; c=[-2;-6];A=[1 1;-1 2;2 1];b=[2;2;3];Aeq=[];beq=[];vlb=[0;0];vub=[];[x,z]=quadprog(H,c,A,b,Aeq,beq,vlb,vub)方法二:Matlab程序如下:先建立fun.m文件,程序为:function f=fun(x);f=1/2*x(1)^2+x(2)^2-x(1)*x(2)-2^x(1)-6*x(2);再建立chushi.m文件,程序为:x0=[1;1];A=[1 1;-1 2;2 1];b=[2;2;3];Aeq=[];beq=[];vlb=[0;0];vub=[];[x,fval]=fmincon('fun',x0,A,b,Aeq,beq,vlb,vub)2、Matlab程序:先建立fun1.m文件,程序为:function f=fun1(x);f=-x(1)*x(2)*x(3);再建立chushi1.m文件,程序为:x0=[10;10;10];A=[1 2 2;-1 -2 -2];b=[72;0];Aeq=[];beq=[];vlb=[];vub=[];[x,fval]=fmincon('fun1',x0,A,b,Aeq,beq,vlb,vub)四.上机结果1、结果:(1)方法一结果:x =0.66671.3333z =-8.2222(2)方法二结果:x =0.66671.3333fval =-8.47632、结果:x =24.000012.000012.0000fval =-3.4560e+0033、结果:x =5.00005.00005.0000 fval =-125.0000 f =125.0000。
MATLAB求解非线性规划非线性规划是一类涉及非线性目标函数或非线性约束条件的数学规划问题。
MATLAB是一种强大的数学计算软件,可以用来求解非线性规划问题。
本文将介绍MATLAB中求解非线性规划问题的方法。
1. 目标函数和约束条件在MATLAB中,非线性规划问题可以表示为以下形式:minimize f(x)subject to c(x)≤0ceq(x)=0lb≤x≤ub其中f(x)是目标函数,c(x)和ceq(x)是不等式和等式约束条件,lb和ub是变量的下限和上限。
2. 求解器MATLAB提供了多种求解器可以用来求解非线性规划问题。
其中常用的有fmincon和lsqnonlin。
lsqnonlin可以用来求解非线性最小二乘问题。
它使用的是Levenberg-Marquardt算法,能够有效地求解非线性最小二乘问题,并且具有较好的收敛性。
3. 示例下面我们来看一个求解非线性规划问题的示例。
假设我们要求解以下非线性规划问题:首先,我们需要定义目标函数和约束条件。
在MATLAB中,我们可以使用anonymous function来定义目标函数和约束条件。
代码如下:f = @(x)x(1)^2+2*x(2)^2+3*x(3)^2;c = @(x)[x(1)+x(2)+x(3)-4, x(1)*x(2)+x(1)*x(3)+x(2)*x(3)-3];ceq = [];lb = [0,0,0];接下来,我们使用fmincon求解非线性规划问题。
代码如下:[x,fval,exitflag,output] = fmincon(f,[1,1,1],[],[],[],[],lb,[],@(x)c(x));其中,第一个参数是目标函数,第二个参数是变量的初值,第三个参数是不等式约束条件,第四个参数是等式约束条件,第五个参数是变量的下限,第六个参数是变量的上限,第七个参数是非线性约束条件,最后一个参数是opts,可以设置其他求解参数。
在matlab 中非线性规划的数学模型可写成一下形式:minf(X)s.t. Ax ≪B Aeq .x =Beq C (x )≪0Ceq x =0其中,f(x)是标量函数;A,B,Aeq,Beq 是相应维数的矩阵和向量;C(x),Ceq(x)是非线性向量函数。
Matlab 中的命令是X=FMINCON(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON,OPTIONS)它的返回值是向量x 。
其中,FUN 是用M 文件定义的函数f(x)。
X0是X 的初始值。
A ,B ,Aeq ,Beq 定义了线性约束AX ≪B ,Aeq*X=Beq ,如果没有线性约束,则A=[],B=[],Aeq=[],Beq=[]。
LB 和UB 是变量x 的下界和上界,如果上界和下界没有约束,则LB=[],UB=[];如果X 无下界,则LB=-inf;如果X 无上界,则UB=inf 。
NONLCON 是用M 文件定义的非线性向量函数C(x),Ceq(x)。
OPTIONS 定义了优化函数,可以使用MATLAB 默认的参数设置。
例求解下列非线性规划问题:max z= X 1+ X 2+ X 3+ X 4 s.t.x 1≪4001.1x 1+x 2≪4401.21x 1+1.1x 2+x 3≪4841.331x 1+1.21x 2+1.1x 3+x 4≪532.4X i≫0,i =1,2,3,4(1)编写M 文件,定义目标函数:function f=fun44(x)f=-(sqrt(x(1))+sqrt(x(2))+sqrt(x(3))+sqrt(x(4)) );(2)编写M 文件,定义约束条件function[g,ceq]=mycon1(x)g(1)=x(1)-400;g(2)=1.1*x(1)+x(2)-440;g(3)=1.21*x(1)+1.1*x(2)+x(3)-484;g(4)=1.331*x(1)+1.21*x(2)+1.1*x(3)+x(4)-532.4;ceq=0(3)编写主程序x0=[1;1;1;1];lb=[0;0;0;0];ub=[];A=[];b=[];Aeq=[];beq=[];[x,fval] = fmincon('fun44',x0,A,b,Aeq,beq,lb,ub,'mycon1')输出结果x =86.1883104.2879 126.1883 152.6879fval =-43.0860。
基于Matlab的非线性规划问题的求解摘要:优化问题分为线性规划问题和非线性规划问题。
对于线性规划问题,可以使用图解法或者单纯形法很方便地求解;对于非线性规划问题,用图解法只能解极为特殊的情况,对于一般的非线性规划问题,求解计算极其复杂。
本文利用Matlab软件,通过实例,高效快捷地实现了非线性规划问题求解。
关键词:优化非线性规划Matlab人们在日常工作中经常会遇到在一定人力、物力和财办资源条件下,使经济效益(如产值、利润等)达到最大的问题,这就是最优化问题。
其用数学语言可表述为:在一定的约束条件下,求目标函数的极值。
根据涉及的函数类型,优化问题分为线性规划问题、非线性规划问题等。
1 最优化问题模型对于线性规划问题,可以使用图解法或者单纯形法很方便地求解;求解非线性规划问题涉及到十分复杂的计算,下面分别使用图解法及使用Matlab软件来解非线性规划问题,通过实验得出,使用Matlab软件,能够大大提高求解非线性规划问题的效率。
2 非线性规划问题的图解法图解法是解决非线性规划问题的最直观的方法,但它只能用于解决二维或者三维空间中某些特殊的问题,对于一般的非线性规划问题无法使用图解法。
3 用Matlab解非线性规划问题Matlab是一个数学平台,在这个平台上,可以使用Matlab的各种指令和函数完成计算和作图工作,下面用实例来加以验证。
3.1 单变量函数的最小值问题的求解对单变量函数求最小值的形式为,可使用fminbnd命令求其最小值。
x=fminbnd(fun,x1,x2,options)变量x返回函数fun在区间[x1,x2]上的最小值点,fun为目标函数的表达式字符串或Matlab自定义函数的函数柄,options为设置优化选项参数,可缺省。
[x,fval] = fm inbnd(…)fval为目标函数的最小值;[x,fval,exitflag]=fminbnd(…) exitflag为返回算法的终止标志;[x,fval,exitflag,output] = fminbnd(…) output为返回优化算法的一个数据结构。
MATLAB⾮线性规划MATLAB求解⾮线性规划可以使⽤ fmincon 函数,其数学模型可以写成如下形式:x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)其中,fun是⽬标函数,x0是初始值,A,b 规定线性不等式约束条件,Aeq,beq 规定线性等式约束条件,lb 规定可⾏解的数值下限,ub规定可⾏解的数值上限。
nonlcon是包含⾮线性约束条件(C(x),Ceq(x))的函数。
使⽤options所指定的优化选项执⾏最⼩化。
例如,使⽤MATLAB计算如下⾮线性规划。
x0 = [0.5,0];A = [1,-2];b = 1;Aeq = [2,1];beq = 1;x = fmincon(fun,x0,A,b,Aeq,beq)带有边界约束的,例如:fun = @(x)1+x(1)/(1+x(2)) - 3*x(1)*x(2) + x(2)*(1+x(1));lb = [0,0];ub = [1,2];% 没有线性约束,因此将这些参数设置为 []。
A = [];b = [];Aeq = [];beq = [];% 尝试使⽤⼀个位于区域中部的初始点。
x0 = (lb + ub)/2;x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)带有⾮线性约束的,例如:%% 主函数options=optimset('largescale','off');x = fmincon(@fun,rand(3,1),[],[],[],[],zeros(3,1),[], @nonlcon, options)%% ⽬标函数function f=fun(x)f=sum(x.^2)+8;end%% ⾮线性约束条件function [c,ceq]=nonlcon(x)c=[-x(1)^2+x(2)-x(3)^2x(1)+x(2)^2+x(3)^3-20]; %⾮线性不等式约束ceq=[-x(1)-x(2)^2+2x(2)+2*x(3)^2-3]; %⾮线性等式约束end特别注意:⽬标函数为最⼩化函数,fun是⼀个函数,fun接受向量或数组 x,并返回实数标量 f,即在 x 处计算的⽬标函数值。
用Matlab 求解非线性规划1.无约束优化问题)(min x f n Rx ∈,其中向量x 的n 个分量i x 都是决策变量,称)(x f 目标函数。
用Matlab 求解:先建立函数文件mbhs.m ,内容是)(x f 的表达式;再回到Matlab 命令区输入决策变量初值数据x0,再命令[x,fmin]=fminunc(@mbhs,x0) 如:)32(m in 22212x x R x +∈的最优解是.)0,0(T x = 用Matlab 计算,函数文件为 function f=mbhs(x)f=2*x(1)^2+3*x(2)^2;再输入初值 x0=[1;1]; 并执行上述命令,结果输出为 x =? fmin =? 略。
2.约束优化问题.),,...,2,1(,0)(),,...,2,1(,0)(..)(min U x L m i x h p i x g t s x f i i Rx n ≤≤===≤∈其中:向量x 的n 个分量i x 都是决策变量,称)(x f 目标函数、)(x g i 等式约束函数、)(x h i 不等式约束函数、L 下界、U 上界。
用Matlab 求解:先把模型写成适用于Matlab 的标准形式.,0)(,0)(,,..)(min U x L x h x g beq x Aeq b Ax t s x f n Rx ≤≤=≤=≤∈ 约束条件中:把线性的式子提炼出来得前两个式子;后三个式子都是列向量。
(如:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡===⨯⨯)()()([],[],,,11262x g x g x g beq Aeq b A p )再建立两个函数文件:目标函数mbhs.m ;约束函数yshs.m再回到Matlab 命令区,输入各项数据及决策变量初值数据x0,执行命令[x,fmin]=fmincon(@mbhs,x0,A,b,Aeq,beq,L,U,@yshs)例:单位球1222≤++z y x 内,曲面xy y x z 1.05.022--+=的上方,平面008.0=-++z y x 之上(不是上面),满足上述三个条件的区域记为D ,求函数)1cos()sin(2-+-+-z e z y x e xy xyz 在D 上的最大值、最大值点。
这个函数的基本形式为x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)其中fun为你要求最小值的函数,可以单写一个文件设置函数,如以上给的例子中。
1.如果fun中有N个变量,如x y z, 或者是X1, X2,X3, 什么的,自己排个顺序,在fun 中统一都是用x(1),x(2)....x(n) 表示的。
2. x0, 表示初始的猜测值,大小要与变量数目相同3. A b 为线性不等约束,A*x <= b, A应为n*n阶矩阵,学过线性代数应不难写出A和b4 Aeq beq为线性相等约束,Aeq*x = beq。
Aeq beq同上可求5 lb ub为变量的上下边界,正负无穷用 -Inf和Inf表示, lb ub应为N阶数组6 nonlcon 为非线性约束,可分为两部分,非线性不等约束 c,非线性相等约束,ceq可按下面的例子设置function [c,ce] = nonlcon1(x)c = -x(1)+x(2)^2-4;ce = []; % no nonlinear equality constraints7,最后是options,可以用OPTIMSET函数设置,见上例具体可见OPTIMSET函数的帮助文件。
对于优化控制,MATLAB提供了18个参数,这些参数的具体意义为:options(1)-参数显示控制(默认值为0)。
等于1时显示一些结果。
options(2)-优化点x的精度控制(默认值为1e-4)。
options = optimset('TolX',1e-8) options(3)-优化函数F的精度控制(默认值为1e-4)。
options = optimset('TolFun',1e-10) options(4)-违反约束的结束标准(默认值为1e-6)。