> 技术文档 > 【数学建模】【优化算法】:【MATLAB】从【一维搜索】到】非线性方程】求解的综合解析_数学建模 黄金分割

【数学建模】【优化算法】:【MATLAB】从【一维搜索】到】非线性方程】求解的综合解析_数学建模 黄金分割

目录

第一章:一维搜索问题

黄金分割法

股票交易策略优化

总结:

第二章:线性规划

线性规划(Simplex 算法)

生产计划优化

总结:

第三章:无约束非线性优化问题

梯度下降法

神经网络训练

总结:

牛顿法

非线性系统求解

总结:

第四章:有约束非线性优化问题

拉格朗日乘数法

机械设计优化

总结:

第五章:二次规划

二次规划

投资组合优化

总结:

第六章:混合整数线性规划

混合整数线性规划(MILP)

工厂选址问题

总结:

第七章:多目标规划

多目标规划(权重法)

生产计划优化

总结:

第八章:极大最小化

极大最小化

供货中心选址问题

总结:

第九章:半无限问题

半无限优化

天线设计优化

总结:

第十章:最小二乘问题

线性最小二乘法

数据拟合

总结:

第十一章:非线性方程(组)的求解

牛顿法

非线性系统求解

总结:

割线法

非线性方程求解

总结:

总结


731bd47804784fa2897220a90a387b28.gif

专栏:数学建模学习笔记

第一章:一维搜索问题

黄金分割法

应用类型: 函数优化问题

算法简介: 黄金分割法是一种用于一维搜索问题的优化算法,特别适用于无导数信息的目标函数。通过利用黄金分割比(φ ≈ 0.618),该算法逐步缩小搜索区间,以快速逼近极值点。黄金分割法在优化问题中具有高效性和稳健性,特别适用于目标函数光滑但无导数信息的情况。

优势:

  1. 效率高: 通过逐步缩小搜索区间,迅速逼近极值点。
  2. 简单易用: 算法步骤简单,容易实现和理解。
  3. 无需导数信息: 适用于目标函数不易求导或不可导的情况。

应用领域: 黄金分割法广泛应用于各种一维搜索优化问题,如经济学中的定价策略、金融学中的投资决策、工程中的设计参数优化等。

股票交易策略优化

已知数据: 假设某只股票在一个交易日中的价格变化函数如下:

其中,t是交易时间,以小时为单位。我们希望找到在交易日内(0到10小时)最佳的买入和卖出时机,以最大化利润。

% 定义股票价格变化函数price = @(t) -0.1*t.^3 + 2*t.^2 - 15*t + 50;% 黄金分割法function [xmin, fmin] = golden_section_search(f, a, b, tol) phi = (sqrt(5) - 1) / 2; % 黄金分割比 c = b - phi * (b - a); d = a + phi * (b - a); while (b - a) > tol if f(c) < f(d) b = d; else a = c; end c = b - phi * (b - a); d = a + phi * (b - a); end xmin = (a + b) / 2; fmin = f(xmin);end% 定义搜索区间和容差a = 0;b = 10;tol = 1e-5;% 使用黄金分割法找到最佳买入和卖出时机[xmin, fmin] = golden_section_search(price, a, b, tol);fprintf(\'Optimal time to buy/sell: %.5f\\n\', xmin);fprintf(\'Optimal price: %.5f\\n\', fmin);

代码解释:

  1. 定义目标函数:函数 price 表示股票价格随时间的变化。
  2. 黄金分割法实现:函数 golden_section_search 使用黄金分割比 φ 逐步缩小搜索区间,寻找极值点。
  3. 搜索区间和容差:初始化搜索区间为 0 到 10 小时,设置容差为 1e-5。
  4. 求解最优时机:调用 golden_section_search 函数,找到最佳的买入和卖出时机,并打印结果。

总结:

黄金分割法在无导数信息的情况下,通过逐步缩小搜索区间,能够高效地找到目标函数的极值点。在股票交易策略优化竞赛中,利用黄金分割法可以有效地确定最佳的买入和卖出时机,以最大化交易利润。

第二章:线性规划

线性规划(Simplex 算法)

应用类型: 资源分配、生产计划、投资组合优化

算法简介: 线性规划(Linear Programming,LP)是一类求解线性目标函数在一组线性约束条件下的优化问题的算法。Simplex 算法是最经典的线性规划求解算法之一。它通过逐步移动顶点来搜索可行区域,最终找到最优解。Simplex 算法以其高效性和鲁棒性,广泛应用于各种线性优化问题中。

优势:

  1. 效率高: Simplex 算法在大多数情况下能够高效求解线性规划问题。
  2. 鲁棒性强: 适用于各种线性约束和目标函数。
  3. 全局最优: 线性规划问题的全局最优解能够通过 Simplex 算法求得。

应用领域: 线性规划广泛应用于资源分配、生产计划、物流调度、金融投资组合优化等地方。

生产计划优化

已知数据: 某工厂生产两种产品 P1 和 P2,每种产品的利润分别为 40 美元和 30 美元。生产每种产品需要的资源如下表:

P1 2 1 P2 1 2

工厂每天最多有 100 小时的资源1和 80 小时的资源2。目标是通过合理分配资源以最大化利润。

% 定义目标函数和约束f = [-40; -30]; % 注意:由于 linprog 求解的是最小值,这里取负A = [2, 1; 1, 2];b = [100; 80];lb = [0; 0];ub = [];% 求解线性规划问题[x, fval] = linprog(f, A, b, [], [], lb, ub);fprintf(\'Optimal production of P1: %.2f units\\n\', x(1));fprintf(\'Optimal production of P2: %.2f units\\n\', x(2));fprintf(\'Maximum profit: $%.2f\\n\', -fval);

代码解释:

  1. 定义目标函数:向量 f 表示每种产品的单位利润,由于 linprog 求解的是最小化问题,所以取负。
  2. 定义约束条件:矩阵 A 和向量 b 分别表示线性约束条件的系数矩阵和右端项,lbub 表示变量的下界和上界。
  3. 求解线性规划问题:调用 linprog 函数,求解最优生产计划,并打印结果。

总结:

线性规划(Simplex 算法)通过高效求解线性目标函数在一组线性约束条件下的最优解,广泛应用于各种资源分配和生产计划优化问题。在生产计划优化竞赛中,利用 Simplex 算法可以有效地确定最优的生产组合,以最大化工厂利润。

第三章:无约束非线性优化问题

梯度下降法

应用类型: 参数优化、机器学习模型训练

算法简介: 梯度下降法(Gradient Descent)是一种用于无约束非线性优化问题的迭代算法。它通过沿着目标函数梯度的反方向逐步更新变量,从而逼近函数的极小值。梯度下降法因其简单易用和适用广泛,成为机器学习模型训练和参数优化中的常用算法。

优势:

  1. 简单易用: 算法简单,易于实现。
  2. 适用广泛: 适用于多种无约束非线性优化问题。
  3. 收敛速度可控: 通过调整步长,可以控制收敛速度和精度。

应用领域: 梯度下降法广泛应用于机器学习模型训练、参数优化、图像处理、信号处理等地方。

神经网络训练

已知数据: 假设一个简单的二次函数作为训练误差函数:

我们希望通过优化权重参数 w使得训练误差最小。

% 定义训练误差函数及其梯度E = @(w) (w(1) - 3)^2 + (w(2) - 2)^2;grad_E = @(w) [2*(w(1) - 3); 2*(w(2) - 2)];% 梯度下降法function [w, fval] = gradient_descent(E, grad_E, w0, alpha, tol) w = w0; while norm(grad_E(w)) > tol w = w - alpha * grad_E(w); end fval = E(w);end% 定义初始权重、步长和容差w0 = [0; 0];alpha = 0.1;tol = 1e-5;% 使用梯度下降法优化权重参数[w, fval] = gradient_descent(E, grad_E, w0, alpha, tol);fprintf(\'Optimal weights: w1 = %.5f, w2 = %.5f\\n\', w(1), w(2));fprintf(\'Minimum error: %.5f\\n\', fval);

代码解释:

  1. 定义目标函数及其梯度:函数 E 表示训练误差函数,grad_E 表示其梯度。
  2. 梯度下降法实现:函数 gradient_descent 使用梯度下降法,通过沿着梯度反方向更新权重参数,逐步逼近极小值。
  3. 初始权重、步长和容差:初始化权重参数为 [0; 0],设置步长为 0.1,容差为 1e-5。
  4. 优化权重参数:调用 gradient_descent 函数,优化权重参数,并打印结果。

总结:

梯度下降法通过沿着目标函数梯度的反方向更新变量,能够有效地逼近函数的极小值。在神经网络训练竞赛中,利用梯度下降法可以有效地优化权重参数,以最小化训练误差。

牛顿法

应用类型: 参数优化、高精度问题求解

算法简介: 牛顿法(Newton\'s Method)是一种用于求解无约束非线性优化问题的迭代算法。它利用