当前位置: 首页 > article >正文

数学规划问题2 .有代码(非线性规划模型,最大最小化模型,多目标规划模型)

 非线性规划模型

FIrst:转化为标准型

在matlab中求非线性规划的函数

练习题:

典型例题:

最大最小化模型

核心思想:

matlab的模型求解

经典例题:

多目标规划模型

基本概念

求解思路:

模型构建步骤

经典例题:


 非线性规划模型

非线性规划(Nonlinear Programming,简称 NLP)是运筹学的一个重要分支,用于解决目标函数或约束条件中至少有一个是非线性函数的优化问题。

与线性规划相比,非线性规划的目标函数和约束条件更为复杂,具有更强的描述实际问题的能力,但求解难度也更大。因为非线性函数的性质(如非凸性、不可微性等)使得传统的线性规划求解方法不再适用,需要开发专门针对非线性特性的求解技术。

应用

FIrst:转化为标准型

还是有AX<=b,Aeq*x=beq ,lb<=x<=ub 多了, C(x)<=0,Ceq(x) =0 两个非线性的约束

在matlab中求非线性规划的函数

[x,fval]=fmincon(@fun,X0,A,b,Aeq,beq,lb,ub,@nonlfun,option)

1,这里的X0十分重要,需要慎重选取,因为这个求的是局部最优解

2,如果要求全局最优解,可以:1,选取多个初始值,选取其中最优的,2先用蒙特卡洛模拟

3,option表示求解的方法,有:1,interior-point(内点法),2,Sqp(序列二次规划)3,active-set(有效集)

和trust-region-reflective(信赖域发射算法)

4,@fun表示目标函数,我们要编写一个独立的.m文件,来存储目标函数

5,@nonlfun表示非线性部分的约束,我们也需要写一个.m文件取存储非线性约束

x是行列向量取决于X0

6,这里的下标需写成()

7,不需要某个约束用[]代替,如果后谜案全是[]且option默认,就可以不写[]

% [x,fval] = fmincon(@fun,x0,A,b,Aeq,beq,lb,ub,@nonlfun,option)

% x0表示给定的初始值(用行向量或者列向量表示),必须得写

% A b表示线性不等式约束

% Aeq beq 表示线性等式约束

% lb ub 表示上下界约束

% @fun表示目标函数

% @nonlfun表示非线性约束的函数

% option 表示求解非线性规划使用的方法

练习题:

第一题:

先转化为 求 min型

两个不等式要取负变为小于等于

将线性不等式转化为<=b,非线性不等式转换为<=0

其他的都是[]

function f = fun1(x)

f = -x(1)^2-x(2)^2 +x(1)*x(2)+2*x(1)+5*x(2) ;

end

function [c,ceq] = nonlfun1(x)

c = [(x(1)-1)^2-x(2)]; % 千万別写成了: (x1-1)^2 -x2

ceq = [];

end

mian.m

x0 = [0 0]; %任意给定一个初始值

A = [-2 3]; b = 6;

[x,fval] = fmincon(@fun1,x0,A,b,[],[],[],[],@nonlfun1) % 注意 fun1.m文件和nonlfun1.m文件都必须在当前文件夹目录下

fval = -fval

(默认使用的内点法)

练习题2:

求的是min ,不用转换,

将两个非线性的不等式约束转换为<=0标准型,,两个非线性等式约束也转换为=0的标准型

典型例题:

这里就有16个决策变量了

function f = fun5(xx) % 注意为了避免和下面的x同号,我们把决策变量的向量符号用xx表示(注意xx的长度为16)

a=[1.25 8.75 0.5 5.75 3 7.25]; % 工地的横坐标

b=[1.25 0.75 4.75 5 6.5 7.25]; % 工地的纵坐标

x = [xx(13) xx(15)]; % 新料场的横坐标

y = [xx(14) xx(16)]; % 新料场的纵坐标

c = []; % 初始化用来保存工地和料场距离的向量 (这个向量就是我们的系数向量)

for j =1:2

for i = 1:6

c = [c; sqrt( (a(i)-x(j))^2 + (b(i)-y(j))^2)]; % 每循环一次就在c的末尾插入新的元素

end

end

% 下面我们要求吨千米数,注意c是列向量,我们计算非线性规划时给定的初始值x0是行向量

f = xx(1:12) * c;

end

% (2) 不等式约束

A =zeros(2,16); % 注意这里要改成16

A(1,1:6) = 1;

A(2,7:12) = 1;

b = [20,20]';

% (3) 等式约束

Aeq = zeros(6,16); % 注意这里要改成16

for i = 1:6

Aeq(i,i) = 1; Aeq(i,i+6) = 1;

end

beq = [3 5 4 7 6 11]'; % 每个工地的日需求量

%(4)上下界

lb = zeros(16,1);

x0 = [3 5 0 7 0 1 0 0 4 0 6 10 5 1 2 7]; % 用第一问的结果作为初始值

[x,fval] = fmincon(@fun5,x0,A,b,Aeq,beq,lb) % 注意没有非线性约束,所以这里可以用[]替代,或者干脆不写

reshape(x(1:12),6,2) % 将x的前12个元素变为6行2列便于观察(reshape函数是按照列的顺序进行转换的,也就是第一列读完,读第二列,即x1对应x_1,1,x2对应x_2,1)

最大最小化模型

一种在决策过程中考虑最坏情况,并试图将这种最坏情况的影响降到最低的数学模型,在博弈论、优化理论等领域有着广泛应用。

核心思想:

在存在不确定性或竞争的环境中,决策者面对多种可能的情况(策略组合),从所有可能的 “最坏结果” 中选取 “最好” 的结果。例如,在两人零和博弈中,一方的收益就是另一方的损失,每个参与者都试图最大化自己在最坏情况下的收益,即最小化对手可能造成的最大伤害。

模型的一般形式:比如在我们的投资风险中,我们希望最小化我们的最大投资风险

matlab的模型求解

[x,fval]=fminimax(@fun,X0,A,b,Aeq,beq,lb,ub,@nonlfun,option)

规则和上面的非线性规划一致

经典例题:

精简出来模型如下

返回的[x,fval]表示的是坐标(x1,y1) 和这个坐标下和其他10个点的曼哈顿距离

x0 = [6, 6]; % 给定初始值

lb = [3, 4]; % 决策变量的下界

ub = [8, 10]; % 决策变量的上界

[x,feval] = fminimax(@Fun,x0,[],[],[],[],lb,ub)

max(feval)

function f = Fun(x)

a=[1 4 3 5 9 12 6 20 17 8];

b=[2 10 8 18 1 4 5 10 8 9];

% 函数向量

f=zeros(10,1);

for i = 1:10

f(i) = abs(x(1)-a(i))+abs(x(2)-b(i));

end

% f(1) = abs(x(1)-a(1))+abs(x(2)-b(1));

% f(2) = abs(x(1)-a(2))+abs(x(2)-b(2));

% f(3) = abs(x(1)-a(3))+abs(x(2)-b(3));

% f(4) = abs(x(1)-a(4))+abs(x(2)-b(4));

% f(5) = abs(x(1)-a(5))+abs(x(2)-b(5));

% f(6) = abs(x(1)-a(6))+abs(x(2)-b(6));

% f(7) = abs(x(1)-a(7))+abs(x(2)-b(7));

% f(8) = abs(x(1)-a(8))+abs(x(2)-b(8));

% f(9) = abs(x(1)-a(9))+abs(x(2)-b(9));

% f(10) = abs(x(1)-a(10))+abs(x(2)-b(10));

end

多目标规划模型

数学规划领域中的重要内容,用于处理同时存在多个相互冲突目标的决策问题。

基本概念

多目标特性:在实际决策中,往往需要同时考虑多个目标。例如,在生产管理中,企业既希望最大化利润,又要最小化生产成本,同时还要考虑产品质量、生产效率等多个目标。这些目标之间通常相互矛盾,提升一个目标可能会导致其他目标的恶化。

目标函数:多目标规划模型包含多个目标函数,一般形式可表示为:

求解思路:

将我们的多规格函数目标函数进行加权组合,让问题变为一个单目标规划

注意:

1)要先将多个目标函数统一为最大化或者最小化问题后,才可以进行加权组合。

2)如果目标函数的量纲不相同,则需要对其进行标准化后再进行加权。标准化的方法一般是用目标函数除以某一个常量,该常量是这个目标函数的某个值,具体取何值可以根据经验确定。

3)对多目标函数进行加权求和时。权重需要由该问题领域的专家给定,但实际比赛中若无特殊的说明,我们可令权重相同。

模型构建步骤

确定目标:明确决策问题中需要优化的多个目标。例如在城市交通规划中,目标可能包括最小化交通拥堵、降低环境污染、减少建设成本等。

选择决策变量:确定影响目标实现的可调控因素作为决策变量。如在交通规划中,道路宽度、公交线路设置、停车场数量等都可以作为决策变量。

建立目标函数:根据目标与决策变量之间的关系,构建相应的目标函数。这些函数可以是线性的,也可能是非线性的,取决于实际问题的性质。例如,以最小化交通拥堵为目标,可将交通流量、平均车速等因素纳入目标函数,通过建立数学关系来量化拥堵程度。

确定约束条件:分析实际问题中的限制条件,转化为数学上的等式或不等式约束。例如,土地资源限制可能会对道路建设面积、停车场规模等决策变量形成约束;建设资金预算会限制交通设施建设的投入。

经典例题:


http://www.kler.cn/a/515272.html

相关文章:

  • 数据结构——算法基础
  • 计算机网络——网络层
  • YOLOv8改进,YOLOv8检测头融合DSConv(动态蛇形卷积),并添加小目标检测层(四头检测),适合目标检测、分割等
  • IOS 安全机制拦截 window.open
  • vif-方差膨胀因子计算
  • 9. 神经网络(一.神经元模型)
  • 项目-03-封装echarts组件并使用component动态加载组件
  • 基于AutoDL云计算平台+LLaMA-Factory训练平台微调本地大模型
  • 网络安全 | 入侵检测系统(IDS)与入侵防御系统(IPS):如何识别并阻止威胁
  • Prolog语言的数据可视化
  • Jpom 安装教程
  • 自动化实现的思路变化
  • 深入解析人工智能中的协同过滤算法及其在推荐系统中的应用与优化
  • [Spring] OpenFeign的使用
  • wx035基于springboot+vue+uniapp的校园二手交易小程序
  • 缓存商品、购物车(day07)
  • JavaScript系列(39)-- Web Workers技术详解
  • 三天急速通关JAVA基础知识:Day3 基础加强
  • Python FastAPI 实战应用指南
  • WordPress Hunk Companion插件节点逻辑缺陷导致Rce漏洞复现(CVE-2024-9707)(附脚本)
  • Nginx:通过upstream进行代理转发
  • vue request 发送formdata
  • 【Python运维】Python与网络监控:如何编写网络探测与流量分析工具
  • vue3中使用render函数以及组合式写法实现一个配置化生成的表单组件
  • 数论问题61一一各种进位制
  • leetcode hot100(3)