数学规划问题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)对多目标函数进行加权求和时。权重需要由该问题领域的专家给定,但实际比赛中若无特殊的说明,我们可令权重相同。
模型构建步骤
确定目标:明确决策问题中需要优化的多个目标。例如在城市交通规划中,目标可能包括最小化交通拥堵、降低环境污染、减少建设成本等。
选择决策变量:确定影响目标实现的可调控因素作为决策变量。如在交通规划中,道路宽度、公交线路设置、停车场数量等都可以作为决策变量。
建立目标函数:根据目标与决策变量之间的关系,构建相应的目标函数。这些函数可以是线性的,也可能是非线性的,取决于实际问题的性质。例如,以最小化交通拥堵为目标,可将交通流量、平均车速等因素纳入目标函数,通过建立数学关系来量化拥堵程度。
确定约束条件:分析实际问题中的限制条件,转化为数学上的等式或不等式约束。例如,土地资源限制可能会对道路建设面积、停车场规模等决策变量形成约束;建设资金预算会限制交通设施建设的投入。