MATLAB 非线性规划及非线性约束条件求解
matlab解决非线性规划问题(凸优化问题)

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中的非线性规划求解fmincon函数

这个函数的基本形式为x = fminco n(fun,x0,A,b,Aeq,beq,lb,ub,nonlco n,option s)其中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为线性相等约束,A eq*x = beq。
Aeq beq同上可求5 lb ub为变量的上下边界,正负无穷用-Inf和In f表示, lb ub应为N阶数组6 nonlco n 为非线性约束,可分为两部分,非线性不等约束 c,非线性相等约束,ceq可按下面的例子设置functi on [c,ce] = nonlco n1(x)c = -x(1)+x(2)^2-4;ce = []; % no nonlin ear equali ty constr aints7,最后是opt ions,可以用OPT IMSET函数设置,见上例具体可见OP TIMSE T函数的帮助文件。
对于优化控制,MATLAB提供了18个参数,这些参数的具体意义为:option s(1)-参数显示控制(默认值为0)。
等于1时显示一些结果。
option s(2)-优化点x的精度控制(默认值为1e-4)。
option s = optims et('TolX',1e-8) option s(3)-优化函数F的精度控制(默认值为1e-4)。
基于matlab求解非线性规划问题

计算结果为:
x =[ 3.0000 5.0000 0.0000 7.0000 0.0000 1.0000 0.0000 0.0000 4.0000 0.0000 6.0000 10.0000]’ fval = 136.2275
即 由 料 场 A、 B 向 6 个 工 地 运 料 方 案 为 : 1 料场 A 料场 B 3 0 2 5 0 3 0 4 4 7 0 5 0 6 6 1 10
(二)使用临时料场的情形
使用两个临时料场A(5,1),B(2,7).求从料场j向工地i的运送量 为Xij,在各工地用量必须满足和各料场运送量不超过日储量的 条件下,使总的吨千米数最小,这是线性规划问题. 线性规划模 型为:
min f
aa ( i , j ) X
j 1 i 1
2
6
ij
2、先建立M-文件 fun3.m: function f=fun3(x); f=-x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^2
3、再建立主程序youh2.m: x0=[1;1]; A=[2 3 ;1 4]; b=[6;5]; Aeq=[];beq=[]; VLB=[0;0]; VUB=[]; [x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,VLB,VUB) 4、运算结果为: x = 0.7647 1.0588 fval = -2.0294
工 地 位 置 ( a, b) 及 水 泥 日 用 量 d 1 a b d 1 .2 5 1 .2 5 3 2 8 .7 5 0 .7 5 5 3 0 .5 4 .7 5 4 4 5 .7 5 5 7 5 3 6 .5 6 6 7 .2 5 7 .2 5 11
非线性规划的MATLAB解法

非线性规划问题通常具有多个局部最 优解,解的稳定性与初始条件有关, 需要使用特定的算法来找到全局最优 解。
非线性规划的应用场景
数据拟合、模型选择、参 数估计等。
生产计划、物流优化、设 备布局等。
投资组合优化、风险管理、 资本预算等。
金融
工业
科研
非线性规划的挑战与解决方法
挑战
非线性规划问题可能存在多个局部最优解,且解的稳定性与初始条件密切相关,需要使用特定的算法来找到全局 最优解。
共轭梯度法
总结词
灵活、适用于大型问题、迭代方向交替
详细描述
共轭梯度法结合了梯度下降法和牛顿法的思 想,通过迭代更新搜索方向,交替使用梯度 和共轭方向进行搜索。该方法适用于大型非 线性规划问题,具有较好的灵活性和收敛性。
04
非线性规划问题的约束 处理
不等式约束处理
处理方式
在Matlab中,可以使用 `fmincon`函数来求解非线性规划 问题,该函数可以处理不等式约 束。
要点二
详细描述
这类问题需要同时考虑多个目标函数,每个目标函数可能 有不同的优先级和权重。在Matlab中,可以使用 `gamultiobj`函数来求解这类问题。该函数可以处理具有 多个目标函数的约束优化问题,并允许用户指定每个目标 函数的权重和优先级。
谢谢观看
具体操作
将等式约束条件表示为线性方程组,并使用`Aeq`参 数指定系数矩阵,使用`beq`参数指定常数向量。
注意事项
等式约束条件需要在可行域内满足,否则会 导致求解失败。
边界约束处理
处理方式
边界约束可以通过在目标函数中添加惩罚项来处理,或者使用专门的优化算法来处理。
具体操作
在目标函数中添加惩罚项时,需要在目标函数中添加一个与边界约束相关的项,并调整 其权重以控制边界约束的重要性。
MATLAB优化工具箱--线性规划-非线性规划

linprog输入参数说明: f, A, b, Aeq, beq lb,ub 边界设置 说明: 如果x(i)无边界,则 lb(i) = -inf, ub(i) = inf
6
linprog 输出参数说明: x 决策变量取值 fval 目标函数最优值
exitflag > 0 成功找到最优解 0 达到最大迭代次数也没有找到最优解 < 0 该线性规划问题不可行或者linprog计
10
fmincon函数求解形如下面的有约束非线性规 划模型
一般形式:
min f ( X ) s.t. AX b
Aeq X beq l X u c(X ) 0 ceq ( X ) 0
Matlab求解有约束非线性最小化 1.约束中可以有等式约束 2.可以含线性、非线性约束均可
数学实验
输入参数语法:
例子:某农场种植两种作物A、B,需要甲、乙两种化肥。种植 每亩作物A和作物B分别需用的化肥数,可得利润及农场现有化
肥数量如下表所示:
问在现有条件下,如何安排种植,才能使利润最大?
作物
每亩所需化肥 (百公斤)
现有化肥
AB (百公斤)
化肥
甲
23
100) 6 4
数学实验
例题建模
[x,fval,exitflag,output,lambda]=fmincon(fun,x0,...)
数学实验
输入参数的几点说明
模型中如果没有A,b,Aeq,beq,lb,ub的限制,则以空矩阵[ ]作为 参数传入; nonlcon:如果包含非线性等式或不等式约束,则将这些函数
编写为一个Matlab函数, nonlcon就是定义这些函数的程序文件名;
3
应用软件5 Matlab求解非线性规划问题

佛山科学技术学院上 机 报 告课程名称 数学应用软件上机项目 Matlab 求解非线性规划问题 专业班级 姓名 学号一. 上机目的本节课我们学习了Matlab 求解非线性规划问题,主要有以下内容: 1. 了解非线性规划的基本理论知识。
2. 学习了Matlab 中fmincon 及guaqprog 命令格式,注意把规划中的目标函数及约束条件化为矩阵或向量的形式。
掌握用matlab 编写程序解决非线性规划模型的问题。
二. 上机内容1、用quadprog 和fmincon 求解二次规划问题min f(x):初始值为(1,1)2、求解优化问题:min 321)(x x x x f -= S.T.72220321≤++≤x x x注:取初值为(10,10,10)。
3、求表面积为常数150 m 2的体积最大的长方体体积及各边长。
注:取初值为(4,5,6)。
三. 上机方法与步骤给出相应的问题分析及求解方法,并写出Matlab 程序,并有上机程序显示截图。
1、用quadprog 和fmincon 求解二次规划问题min f(x):初始值为(1,1)Matlab程序:根据目标函数和约束条件利用quadprog来写主程序;而fmincon则根据目标函数和约束条件来定义目标函数和主程序。
Quadprog程序: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,fval]=quadprog(H,c,A,b,Aeq,beq,vlb,vub)Fmincon程序:function f=fun1(x);f=(1/2)*x(1)^2+x(2)^2-x(1)*x(2)-2*x(1)-6*x(2);x0=[1;1];A=[1 1;-1 2;2 1]; b=[2;2;3]; Aeq=[]; beq=[]; vlb=[0;0]; vub=[];[x,fval]=fmincon('fun1',x0,A,b,Aeq,beq,vlb,vub)2、求解优化问题:min 321)(x x x x f -= S.T.72220321≤++≤x x x注:取初值为(10,10,10)。
Matlab数学建模学习笔记——非线性规划

Matlab 数学建模学习笔记——⾮线性规划⽬录⾮线性规划⾮线性规划的matlab 解法fmincon 函数x = fmincon(fun,x0,A,b)x = fmincon(fun,x0,A,b,Aeq,beq)x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)% x0是x 的初始值,fun 是⽤M ⽂件定义的函数f(x),nonlcon 是M ⽂件定义的⾮线性向量函数c(x),ceq(x);options 定义了优化参数,可以⽤Matlab 默认的参数设置x = fmincon(problem)[x,fval] = fmincon(___)[x,fval,exitflag,output] = fmincon(___)[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(___)e.gmin f (x )=x 21+x 22+x 23+8,s .t .=x 21−x 2+x 23≥0,x 1+x 22+x 33≤20,−x 1−x 22+2=0,x 2+2x 23=3,x 1,x 2,x 3≥0。
对于这道题,我们需要编写三个m ⽂件% filename :'fun1.m'function f = fun1(x)f = sum(x.^2)+8;% filename :'fun2.m'function [g,h] = fun2(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]; % ⾮线性等式约束% filename :'main.m'clear;clc;[x,y]=fmincon('fun1',rand(3,1),[],[],[],[],zeros(3,1),[],'fun2');求得当x1=0.5522, x2=1.2033, x3=0.9478时,最⼩值y=10.6511fminsearch 函数(求极⼩值)f (x )=sin (x )+3例如我们要求f (x )取得极⼩值时x 的值,代码如下% filename :'fun.m'function f = fun(x);f = sin(x) +3;% filename :'main.m'x0 = 2;[x,y] = fminsearch(@ fun,x0)计算函数的零点和⽅程组的解求多项式f (x )=x 3−x 2+2x −3的零点法⼀clear;clc;xishu = [1,-1,2,-3];x = roots(xishu);x =-0.1378 + 1.5273i -0.1378 - 1.5273i 1.2757 + 0.0000i 法⼆clear;clc;syms xx0 = solve(x^3-x^2+2*x-3);%求函数零点的符号解x0 = vpa(x0,5); % 化成⼩数格式的数据,5为有效数字法三clear;clc;y = @(x)x^3-x^2+2*x-3;x = fsolve(y,rand);% 只能求给定初始值附近的⼀个零点约束极值问题{Processing math: 100%⼆次规划H为实对称矩阵求解命令x = quadprog(H,f)x = quadprog(H,f,A,b)x = quadprog(H,f,A,b,Aeq,beq)x = quadprog(H,f,A,b,Aeq,beq,lb,ub)x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0)x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)x = quadprog(problem)[x,fval] = quadprog(___)[x,fval,exitflag,output] = quadprog(___)[x,fval,exitflag,output,lambda] = quadprog(___)罚函数法利⽤罚函数法,可将⾮线性规划规划问题的求解,转化为求解⼀系列⽆约束极值问题,也可称这种⽅法为序列⽆约束最⼩化技术思想是利⽤题⽬中的约束函数做出适当的罚函数,由此构造出带参数的增⼴⽬标函数,把问题转化成⽆约束⾮线性规划问题。
Matlab求解有约束规划函数

第二步:调用优化函数lsqnonlin
% 给定搜索起点 x0 = [0.3 0.4] ; % 调用求解函数 [x,resnorm] = lsqnonlin('myfun',x0) x=
0.2578 0.2578 resnorm %residual or sum of squares resnorm =
% 给一个初始搜索点
x0 = [10; 10; 10]; [x,fval] = fmincon('myfun',x0,A,b)
主程序(整体):
A=[-1 -2 -2; 1 2 2 ]; b=[0 72]’;
% 给一个初始搜索点
x0 = [10; 10; 10]; [x,fval] = fmincon('myfun',x0,A,b)
fmincon应用求解示例:
min f (x) x x x 123
s.t 0 x1 2x2 2x3 72
请问: 1、结合fmincon函数,需要提供哪些参数
第一步:编写一个M文件返回目标函数f在点 x处的值函数程序
函数myfun.m
function f = myfun(x) f = -x(1) * x(2) * x(3);
c = ...
% 计算非线性不等式约束在点x处的函数值
ceq = ... %计算机非线性等式约束在点x处的函数值
if nargout > 2 % nonlcon 如果四个输出参数
GC = ... % 不等式约束的梯度
GCeq = ... % 等式约束的梯度
end
输出参数语法:
[x,fval] = fmincon(...) [x,fval,exitflag] = fmincon(...) [x,fval,exitflag,output] = fmincon(...) [x,fval,exitflag,output,lambda] = fmincon(...) [x,fval,exitflag,output,lambda,grad] = fmincon(...) [x,fval,exitflag,output,lambda,grad,hessian] = fmincon(...) 运用步骤: 将自己的模型转化为上面的形式 写出对应的参数 调用函数
使用Matlab进行非线性优化问题求解的技巧

使用Matlab进行非线性优化问题求解的技巧介绍:非线性优化在工程、金融、科学等领域广泛应用,它涉及到求解一个目标函数的最小值或最大值,并且满足一系列约束条件。
Matlab是一个功能强大的数值计算软件,提供了许多用于求解非线性优化问题的工具和函数。
本文将介绍一些使用Matlab进行非线性优化问题求解的技巧,帮助读者更有效地应用这些工具。
一、定义目标函数和约束条件在使用Matlab求解非线性优化问题之前,首先要明确问题的数学模型。
假设我们要最小化一个目标函数F(x),并且存在一系列约束条件g(x) <= 0和h(x) = 0。
在Matlab中,可以使用函数形式或者符号形式来定义目标函数和约束条件。
例如,使用函数形式可以这样定义目标函数和约束条件:```matlabfunction f = objective(x)f = x(1)^2 + x(2)^2;endfunction [c, ceq] = constraints(x)c = [x(1) + x(2) - 1; x(1)^2 + x(2)^2 - 2];ceq = [];end```其中,objective函数定义了目标函数,constraints函数定义了约束条件。
在constraints函数中,c表示不等式约束条件g(x) <= 0,ceq表示等式约束条件h(x) = 0。
二、使用fmincon函数求解非线性优化问题Matlab提供了fmincon函数来求解非线性优化问题。
该函数的基本语法如下:```matlab[x, fval] = fmincon(fun, x0, A, b, Aeq, beq, lb, ub, nonlcon, options)```其中,fun表示目标函数,x0表示初始解,A表示不等式约束条件的线性部分,b表示不等式约束条件的右侧常数,Aeq表示等式约束条件的线性部分,beq表示等式约束条件的右侧常数,lb表示变量的下界,ub表示变量的上界,nonlcon表示非线性约束条件,options表示优化选项。
数学软件MATLAB课件第六章非线性规划

D中的点称为可行解或可行点
模型也可写成 min f (x )
x D
三、 分
类
(1)线性规划:目标函数和约束条件皆为x的线 性函数。 (2)非线性规划:目标函数和约束条件中至少 有一个是x的非线性函数。 本章讨论非线性规划。 (1)当p=0,q=0 ,即可行域D=Rn 时, (P)可 写成
min f ( x)
min f ( x 1 , x 2 ) x x
2 1
2 2
x2
1
1 x 1 x 2 0 s .t . x 1 1 0 x 1 0 2
全局最优解为x*=(1/2,1/2)T ,
x*
1
x1
全局最优值为f(x*)=1/2。 2 2 2 2 若目标函数改为: min f ( x , x ) ( x ) ( x ) 1 2 1 2 3 3 其最优解和最优值如何?
运
筹
学
运 筹 帷 幄 之 中 Non-linear Programming
决 胜
非线性规划
千 里 之 外
第六章 非线性规划
基本概念
凸函数和凸规划 一维搜索方法 无约束最优化方法 约束最优化方法
第一节 基本概念
非线性规划问题
非线性规划方法概述
一、非线性规划问题引例
例1 曲线的最优拟合问题
称为无约束非线性规划或无约束最优化问题。
(2)若可行域D≠Rn ,(P)称为约束非线性规划 或约束最优化问题。
四、最优解和最优值
定义 1 对于非线性规划(P),若 x* D , 并且存在x*的一个领域 * n * N ( x ) x R x x , 0 * * 使得 f ( x ) f ( x ), x N ( x ) D
Matlab的fmincon函数(非线性等式不等式约束优化问题求解)

Matlab的fmincon函数(非线性等式不等式约束优化问题求解)fmincon函数优化问题fmincon解决的优化模型如下:min F(X)subject to: A*X <= B (线性不等式约束)Aeq*X = Beq (线性等式约束)C(X) <= 0 (非线性不等式约束)Ceq(X) = 0 (非线性等式约束)LB <= X <= UB (参数x的取值范围)x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)fmincon是求解目标fun最小值的内部函数x0是初值A b线性不等式约束Aeq beq线性等式约束lb下边界ub上边界nonlcon非线性约束条件options其他参数,对初学者没有必须,直接使用默认的即可优化工具箱提供fmincon函数用于对有约束优化问题进行求解,其语法格式如下:x=fmincon(fun,x0,A,b)x=fmincon(fun,x0,A,b,Aeq,beq)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,.. .) [x,fval]=fmincon(...)[x,fval,exitflag]=fmincon(...)[x,fval,exitflag,output]=fmincon(...)其中,x,b,beq,lb,和ub为线性不等式约束的下、上界向量,A和Aeq为线性不等式约束和等式约束的系数矩阵矩阵,fun为目标函数,nonlcon为非线性约束函数。
显然,其调用语法中有很多和无约束函数fminunc的格式是一样的,其意义也相同,在此不在重复介绍。
MATLAB求解非线性规划

经济管理学院:李继红
1 Matlab简介及操作环境
1.1 Matlab简介
由美国 DOCTORCLEVER MOLER 于 1980 年 开始研制并于1984年推出正式版本。以后陆续推 出了4.0,4.2和5.0版本,1999年初推出了功能更 为强大的5.3版本,2001年推出6.1版本,2003年 推出了6.5版本。2004年6月正式推出7.0版本。 MATLAB是建立在 C 语言基础上的高级语言, 并建立了自已独特的语言环境。
plot3(x,y,z,’s’)
plot3(x1,y1,z1,’s1’,x2,y2,z2,’s2’,·· ·) plot3例命:令t将=绘0制:二pi维/5图0形:1的0函*p数i;plot的特性扩展到三维空间。函 数格式除p了lo包t括3(第s三in维(t的),信co息s((t)比,t如);Z方向)之外,与二维函数
1、for循环
li1_6_1.m
• For循环可以按指定的次数重复执行一系列语 句。For循环的常见结构:
• for 变量 =表达式 循环语句
end
这里循环语句可以是一条或 多条,并且可以是变量的函 数
• 如:for k=初值: 增值: 终值
例:
% mzmfor.m
clear all
N=input('请输入矩阵的维数 N:');
6.4 switch-case语句
一般switch-case语句格式为: switch num case n1 command case n2 command case n3 command . . .otherwise Command
li1_6_4.m
7 数据的可视化
Matlab学习系列25.非线性优化

、有约束非线性规划若规划问题的目标函数或约束条件中包含非线性函数, 则称为非线性规划。
非线性规划的最优解(若存在)可能在其可行域的任一点达到, 目前非线性规划还没有适合各种问题的一般解法, 各种方法都有其特 定的适用范围。
Matlab 中非线性规划的标准形式为Matlab 实现:[x, fval, exitflag, output, lambda, grad, hessia n]二fmincon( ‘Un ;X0, A,b,Aeq,beq,VLB,VUB, nonIcon : options)其中,有些参数同线性规划;fUn'为用M-文件定义的目标函数F(x);nonlcon‘为用M-文件定义的非线性向量函数[C(x), Ceq(x)]例1求解下列非线性规划问题:min f (x ) = x ; x ; 8xf - x 2 一 0 s. t. « 咅 + x ; = 2XfX 兰 025.非线性规划min F (x) s. t. AX _ bAeq X = beq C(X)EO Ceq(X) =0 VLB _ X _VUB(线性不等式约束) (线性等式约束) (非线性不等式约束) (非线性等式约束) (有界约束)代码: 目标函数(M文件):fun cti on f=fun 1(x)f=x(1^2+x (2)A2+8;非线性约束(M文件):fun ctio n [C,Ceq]=fu n2(x)C=-x(1)A2+x(2); %非线性约束,若不止1个,则用C(1),C(2),…Ceq二x(1)+x(2)八2-2; %等式约束,若没有等式约束,可令Ceq=[];主程序:xO = ran d(2,1);VLB = zeros(2,1); [x,fval,exitflag,output,lambda,grad,hessia n]= fmin co n( 'fun1' ,x0,[],[],[],[],VLB,[], 'fun 2')运行结果(部分):exitflag = 1优化成功x = 1.00001.0000最优解xfval= 10.0000 目标值fgrad = 2.00002.0000hessian = 1.4338 0.49600.4960 0.5902二、无约束非线性规划Matlab中无约束非线性规划的标准形式为:min f (x)S. t. X i 巴x 巴x2Matlab提供了3个不同的函数分别适合不同情形:1. fminbnd 函数用于求解定区间上单变量函数的最小值点,调用格式为:[x, fval, exitflag, output] = fminbnd( ‘Un 'x1, x2, options)其中,fun为用M-文件定义的目标函数。
工程优化 6-解非线性规划的MATLAB指令

练习:利用Matlab求解下列最优化问题
( 1)
1 2 1 2 min f x1 2 x2 x1 x2 2 2 2x1+3x2 6 s.t x1+4x2 5 x1,x2 0
2 2 (2) min f ( x ) e x1 (4 x1 2 x2 4 x1 x2 2 x2 1)
(4) 若修改主程序gying2.m, 取初值为上面的计算结果:
x0=[ 3.0000 5.0000 0.0707 7.0000 0 0.9293 0 0 3.9293 0 6.0000 10.0707 6.3875 4.3943 5.7511 7.1867]’
得结果为:
x=[3.0000 5.0000 0.3094 7.0000 0.0108 0.6798 0 0 3.6906 0 5.9892 10.3202 5.5369 4.9194 5.8291 7.2852]’ fval =103.4760 exitflag = 1 总的吨千米数比上面结果略优. (5) 若再取刚得出的结果为初值, 却计算不出最优解.
(6) 若取初值为: x0=[3 5 4 7 1 0 0 0 0 0 5 11 5.6348 4.8687 7.2479 7.7499]', 则计算结果为: x=[3.0000 5.0000 4.0000 7.0000 1.0000 0 0 0 0 0 5.0000 11.0000 5.6959 4.9285 7.2500 7.7500]’ fval =89.8835 exitflag = 1 总的吨千米数89.8835比上面结果更好.
小结:用Matlab求解非线性规划问题,基本步骤:
1. 首先建立M文件fun.m,定义目标函数 f(x): function f=fun(x); f= f(x); 2.若约束条件中有非线性约束:g(x) 0