非线性规划学习笔记

非线性规划学习笔记

一、非线性规划的应用

非线性规划(Nonlinear Programming, NLP)在很多领域都有重要应用,主要包括:

  • 工程设计优化:结构优化、电路参数优化、交通线路设计
  • 经济与管理:投资组合优化、生产计划优化、供需均衡模型
  • 能源与环境:电力系统优化调度、环境治理
  • 机器学习与数据科学:神经网络训练、支持向量机等

二、非线性规划的一般模型

min⁡ f(x)s.t. gi(x)≤0,i=1,2,...,mhj(x)=0,j=1,2,...,px∈Rn \begin{aligned} \min \ & f(x) \\ \text{s.t.} \ & g_i(x) \leq 0, \quad i = 1,2,\dots,m \\ & h_j(x) = 0, \quad j = 1,2,\dots,p \\ & x \in \mathbb{R}^n \end{aligned} min s.t. f(x)gi(x)≤0,i=1,2,...,mhj(x)=0,j=1,2,...,px∈Rn

  • f(x)f(x)f(x):目标函数(可能是非线性的)
  • gi(x),hj(x)g_i(x), h_j(x)gi(x),hj(x):约束条件(可能是非线性的)

三、MATLAB 中的非线性规划工具

MATLAB 的 Optimization Toolbox 提供了多种函数:

1. fmincon ------ 约束非线性规划

matlab 复制代码
[x, fval] = fmincon(fun, x0, A, b, Aeq, beq, lb, ub, nonlcon)
  • fun:目标函数
  • x0:初始点
  • A, b:线性不等式约束 Ax≤bAx \leq bAx≤b
  • Aeq, beq:线性等式约束
  • lb, ub:变量上下界
  • nonlcon:非线性约束函数(返回 c(x) <= 0, ceq(x) = 0

2. fminunc ------ 无约束非线性优化

matlab 复制代码
[x, fval] = fminunc(fun, x0)

3. 全局优化方法

  • ga ------ 遗传算法
  • patternsearch ------ 模式搜索
  • simulannealbnd ------ 模拟退火

四、MATLAB 示例

示例 1:约束非线性规划

min⁡f(x)=(x1−1)2+(x2−2)2 \min f(x) = (x_1-1)^2 + (x_2-2)^2 minf(x)=(x1−1)2+(x2−2)2

约束条件:

x12+x22≤5,x1≥0,x2≥0 x_1^2 + x_2^2 \leq 5, \quad x_1 \geq 0, \quad x_2 \geq 0 x12+x22≤5,x1≥0,x2≥0

matlab 复制代码
% 目标函数
fun = @(x) (x(1)-1)^2 + (x(2)-2)^2;

% 初始点
x0 = [0,0];

% 线性约束
A = []; b = [];
Aeq = []; beq = [];

% 边界
lb = [0,0];
ub = [];

% 非线性约束
nonlcon = @(x) deal(x(1)^2 + x(2)^2 - 5, []); 

% 调用 fmincon
[x, fval] = fmincon(fun, x0, A, b, Aeq, beq, lb, ub, nonlcon);

disp('最优解:'); disp(x);
disp('最优目标值:'); disp(fval);

示例 2:无约束非线性优化

min⁡f(x)=x4−3x3+2 \min f(x) = x^4 - 3x^3 + 2 minf(x)=x4−3x3+2

matlab 复制代码
fun = @(x) x^4 - 3*x^3 + 2;
x0 = 0;  % 初始点
[x, fval] = fminunc(fun, x0);

disp('最优解:'); disp(x);
disp('最优目标值:'); disp(fval);
相关推荐
学究天人14 分钟前
数学公理体系大全:Comprehensive Collection of Mathematical Axiom Systems(补充卷9)
人工智能·线性代数·算法·数学建模·动态规划·原型模式·抽象代数
心中有国也有家1 小时前
AtomGit Flutter 鸿蒙客户端:Flutter 鸿蒙应用的错误处理与优雅降级策略
学习·flutter·华为·harmonyos
2301_800256111 小时前
人工智能入门学习——ANN、CNN基本概念和考试核心代码
人工智能·学习·cnn
学究天人1 小时前
数学公理体系大全:第四章 ZFC公理的形式化与构造演算
线性代数·数学建模·矩阵·动态规划·图论·抽象代数·拓扑学
辞旧 lekkk2 小时前
CMake工程指南(一)
linux·运维·服务器·开发语言·qt·学习·萌新
db_murphy2 小时前
机器学习决策树的基尼系数是个啥?
学习·算法
心中有国也有家13 小时前
AtomGit Flutter 鸿蒙客户端: ChangeNotifier 模式
学习·flutter·华为·harmonyos
取地址符13 小时前
C++学习笔记(基于learn-cxx)(1)
c++·经验分享·笔记·学习
恣逍信点15 小时前
主观是客观的聚焦
人工智能·学习·程序人生·生活·业界资讯·交友·哲学
打球她不香吗15 小时前
本周ALLegro学习内容的总结
学习·allegro