网站建设 网站,百度网站地图生成器,长沙网页设计有限公司,wordpress仿卢松松目录
一、非线性规划的定义
二、非线性规划的模型
三、非线性规划函数
四、线性不等式约束
五、线性不等式和等式约束
六、带有非线性约束的求最值
七、非线性约束 总结#xff1a; 一、非线性规划的定义
前面我们学了线性规划#xff0c;整数规划#xff0c;我们可…目录
一、非线性规划的定义
二、非线性规划的模型
三、非线性规划函数
四、线性不等式约束
五、线性不等式和等式约束
六、带有非线性约束的求最值
七、非线性约束 总结 一、非线性规划的定义
前面我们学了线性规划整数规划我们可以把整数规划理解为是特殊的线性规划。 在实际生活中我们更多的认为数据是非线性的对于线性规划这毕竟会是一些少量为此我们引入了非线性规划。
如果目标函数或约束条件中包含非线性函数就称这种规划问题为非线性规划问题。一般说来解非线性规划要比解线性规划问题困难得多。而且也不象线性规划有单纯形法这一通用方法非线性规划目前还没有适于各种问题的一般算法各个方法都有自己特定的适用范围。
二、非线性规划的模型
Matlab 中非线性规划的数学模型写成以下形式 Matlab中的命令是
[x,y]fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
三、非线性规划函数
fmincon函数用于寻找约束非线性多变量函数的最小值。这个函数怎么用 这是语法格式
%1.从 x0 开始尝试在满足线性不等式 A*x ≤ b 的情况下寻找 fun 中所述的函数的最小值点 x。x0 可以是标量、向量或矩阵。
x fmincon(fun,x0,A,b)
%2.在满足线性等式 Aeq*x beq 以及不等式 A*x ≤ b 的情况下最小化 fun。如果不存在不等式则设置 A [] 和 b []。
x fmincon(fun,x0,A,b,Aeq,beq)
%3. 对x 中的设计变量定义一组下界和上界使解始终在 lb ≤ x ≤ ub 范围内。如果不存在等式请设置 Aeq [] 和 beq []。如果 x(i) 无下界请设置 lb(i) -Inf如果 x(i) 无上界请设置 ub(i) Inf。
x fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
%4.使用 options 所指定的优化选项执行最小化。使用 optimoptions 可设置这些选项。如果没有非线性不等式或等式约束请设置 nonlcon []。
x fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) 参数什么意思
b 和 beq 是向量A 和 Aeq 是矩阵c(x) 和 ceq(x) 是返回向量的函数f(x) 是返回标量的函数。f(x)、c(x) 和 ceq(x) 可以是非线性函数。
x、lb 和 ub 可以作为向量或矩阵传递四、线性不等式约束 目标函数
fun 100*(x(2)-x(1)^2)^2(1-x(1))^2
此时需要定义函数是 x
fun (x)100*(x(2)-x(1)^2)^2(1-x(1))^2约束条件从点 [-1,2] 为起点求最小值约束方程 x(1)2x(2)≤1 matlab代码
clc
clear allfun (x)100*(x(2)-x(1)^2)^2 (1-x(1))^2;%匿名函数
x0 [-1,2];%起点可以更改似乎没影响
A [1,2];
b 1;
[x,y] fmincon(fun,x0,A,b)%套用函数运行 五、线性不等式和等式约束
求如下 matlab代码
clc
clear all
fun (x)100*(x(2)-x(1)^2)^2 (1-x(1))^2;%匿名函数x0 [1,1];%初始点设置自行不同
A [1,-2];%不等式变量的系数
b 1;%不等式右边的值
Aeq [2,1];%等式变量的系数
beq 1;%等式右边的值
[x,y] fmincon(fun,x0,A,b,Aeq,beq)%求解x的值和此时函数值y结果 六、带有非线性约束的求最值 目标函数
min f (x) x1^2 x2^2 x3^2 8约束条件
x1^2 − x2 x3 ^2 ≥ 0
x1 x2^2 x3 ^3 ≤ 20
− x1 − x2^2 2 0
x2 2x3^2 3x1
x1,x2 , x3 ≥ 0matlab解法
1.主函数
%% 主函数
optionsoptimset(largescale,off);
[x,y] fmincon(fun,rand(3,1),[],[],[],[],zeros(3,1),[], nonlcon, options)2.目标函数以 end 结束
目标函数为最小化函数fun是一个函数fun接受向量或数组 x并返回实数标量 f即在 x 处计算的目标函数值。
%% 目标函数
function ffun(x)
fsum(x.^2)8;
end
3.添加约束条件以 end 结束
非线性约束条件nonlcon是一个函数接受向量或数组 x并返回两个数组 c(x) 和 ceq(x)。
%% 非线性约束条件
function [c,ceq]nonlcon(x)
c[-x(1)^2x(2)-x(3)^2x(1)x(2)^2x(3)^3-20]; %非线性不等式约束
ceq[-x(1)-x(2)^22x(2)2*x(3)^2-3]; %非线性等式约束
end 总代码需先分别定义目标函数和约束条件最后用主函数求解
clc
clear all
%% 主函数
optionsoptimset(largescale,off);
[x,y] fmincon(fun,rand(3,1),[],[],[],[],zeros(3,1),[], nonlcon, options)%% 目标函数
function ffun(x)
fsum(x.^2)8;
end%% 非线性约束条件
function [c,ceq]nonlcon(x)
c[-x(1)^2x(2)-x(3)^2x(1)x(2)^2x(3)^3-20]; %非线性不等式约束
ceq[-x(1)-x(2)^22x(2)2*x(3)^2-3]; %非线性等式约束
end运行 七、非线性约束
在边界约束下求 目标函数在圆内最小的点。目标函数
fun (x)100*(x(2)-x(1)^2)^2(1-x(1))^2
进一步可以匿名函数得到
fun (x)100*(x(2)-x(1)^2)^2 (1-x(1))^2;约束条件 0 ≤ x (1) ≤ 0.5 00.2≤x(2)≤0.8
这一步可以得到
lb [0,0.2];
ub [0.5,0.8];
同时在以 [1/3,1/3] 为圆心、半径为 1/3 的圆内寻找可以编写一个函数代码如下
function [c,ceq] circle(x)
c (x(1)-1/3)^2 (x(2)-1/3)^2 - (1/3)^2;
ceq [];没有线性约束因此将这些参数设置为 []空值
A [];
b [];
Aeq [];
beq [];
因此全部代码为 函数代码
function [c,ceq] circle(x)
c (x(1)-1/3)^2 (x(2)-1/3)^2 - (1/3)^2;
ceq [];
end主代码
clc
clear all
fun (x)100*(x(2)-x(1)^2)^2 (1-x(1))^2;
lb [0,0.2];
ub [0.5,0.8];
A [];
b [];
Aeq [];
beq [];
x0 [1/4,1/4];nonlcon circle;
[x,y] fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)运行 总结
已经学习第三天了深深感觉到了自己能力的提升不只体现在编程方面其他方面也一样码字速度是深深有感觉