[数学建模]最大最小化模型&多目标规划问题

目录

一、最大最小化模型

1、一般数学模型 

2、典型例题

3、模型的求解

二、多目标规划问题

1、多目标规划问题概述

2、典型例题

3、代码块


一、最大最小化模型

1、一般数学模型 

2、典型例题

%% 最大最小化模型  :   min{max[f1,f2,···,fm]}
x0 = [6, 6];      % 给定初始值
lb = [3, 4];  % 决策变量的下界
ub = [8, 10];  % 决策变量的上界
[x,feval] = fminimax(@Fun,x0,[],[],[],[],lb,ub)
max(feval)
% x =
%     8.0000    8.5000
% feval =
%    13.5000    5.5000    5.5000   12.5000    8.5000    8.5000    5.5000   13.5000    9.5000    0.5000
% 结论:
% 在坐标为(8,8.5)处建立供应中心可以使该点到各需求点的最大距离最小,最小的最大距离为13.5单位。

3、模型的求解

二、多目标规划问题

1、多目标规划问题概述

         若一个规划问题中有多个目标,例如企业在保证利润最大时,也要保证生产时产生的污染最少,这种情况下我们可以对多目标函数进行加权组合,使问题变为单目标规划,如何再利用之前学的知识进行求解。
注意:
        1、要将多个目标函数统一为最大化或者最小化问题后才能进行加权组合。
        2、如果目标函数的量纲不相同,则需要对其进行标准化后再进行加权,标准化的方法一般是用目标函数除以某一个常量,该常量是这个目标函数的某个取值,具体取值可根据经验确定。
        3、对多目标函数进行加权求和时,权重需要由该问题领域的专家给定,实际建模时,若无特殊说明,我们令权重相同。

2、典型例题

        下面我们对结果进行敏感性分析,敏感性分析是指从定量分析的角度研究有关因素发生某种变化对某一个或一组关键指标影响程度的一种不确定分析技术。其实质是通过逐一改变相关变量数值的方法来解释关键指标受这些因素变动影响大小的规律。

 3、代码块

%%  多目标规划问题
w1 = 0.4;  w2 = 0.6;  % 两个目标函数的权重  x1 = 5  x2 = 2
w1 = 0.5;  w2 = 0.5;  % 两个目标函数的权重  x1 = 5  x2 = 2
w1 = 0.3;  w2 = 0.7;  % 两个目标函数的权重  x1 = 1  x2 = 6
c = [w1/30*2+w2/2*0.4 ;w1/30*5+w2/2*0.3];  % 线性规划目标函数的系数
A = [-1 -1];  b = -7; % 不等式约束
lb = [0 0]'; ub = [5 6]'; % 上下界
[x,fval] = linprog(c,A,b,[],[],lb,ub)
f1 = 2*x(1)+5*x(2)
f2 = 0.4*x(1) + 0.3*x(2)


%% 敏感性分析
clear;clc
W1 = 0.1:0.001:0.5;  W2 = 1- W1;  
n =length(W1);
F1 = zeros(n,1);  F2 = zeros(n,1);   X1 = zeros(n,1);  X2 = zeros(n,1);   FVAL = zeros(n,1);
A = [-1 -1];  b = -7; % 不等式约束
lb = [0 0]; ub = [5 6]; % 上下界
for i = 1:n
    w1 = W1(i);  w2 = W2(i);
    c = [w1/30*2+w2/2*0.4 ;w1/30*5+w2/2*0.3];  % 线性规划目标函数的系数
    [x,fval] = linprog(c,A,b,[],[],lb,ub);
    F1(i) = 2*x(1)+5*x(2);
    F2(i) = 0.4*x(1) + 0.3*x(2);
    X1(i) = x(1);
    X2(i) = x(2);
    FVAL(i) = fval;
end

% 「Matlab」“LaTex字符汇总”讲解:https://blog.csdn.net/Robot_Starscream/article/details/89386748
% 在图上可以加上数据游标,按住Alt加鼠标左键可以设置多个数据游标出来。
figure(1) 
plot(W1,F1,W1,F2)
xlabel('f_{1}的权重') 
ylabel('f_{1}和f_{2}的取值')
legend('f_{1}','f_{2}')

figure(2)
plot(W1,X1,W1,X2)
xlabel('f_{1}的权重') 
ylabel('x_{1}和x_{2}的取值')
legend('x_{1}','x_{2}')

figure(3)
plot(W1,FVAL)  % 看起来是两个直线组合起来的下半部分
xlabel('f_{1}的权重') 
ylabel('综合指标的值')

参考:清风数学建模课程+【课本】司守奎 《数学建模算法与应用》 第二版,仅作为个人笔记。

  • 6
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python数学建模中的线性规划模型是一种在一组线性约束条件下,求解一个线性目标函数的最大值或最小值的问题。在Python中,可以使用scipy库来求解线性规划问题。 线性规划问题可以用决策变量、目标函数和约束条件来表示。决策变量表示需要优化的变量,目标函数是需要最大化或最小化的线性函数,约束条件是一组线性不等式。 在使用scipy库求解线性规划问题时,首先需要定义决策变量、目标函数和约束条件,然后使用scipy.optimize.linprog()函数来求解最优解。 决策变量可以使用Python中的变量来表示,目标函数和约束条件可以使用数学公式来表示。 举一个简单的例子,假设我们有两个决策变量x和y,目标函数是最大化2x + 3y,约束条件是0 <= x <= 1和0 <= y <= 2。我们可以通过以下代码来求解该线性规划问题: ```python from scipy.optimize import linprog c = [-2, -3] A = [[1, 0], [0, 1]] b = [1, 2] x_bounds = (0, 1) y_bounds = (0, 2) res = linprog(c, A_ub=A, b_ub=b, bounds=[x_bounds, y_bounds]) ``` 在上述代码中,c表示目标函数的系数,A和b表示约束条件的系数和常数,x_bounds和y_bounds表示决策变量x和y的取值范围。linprog函数的返回结果res包含了最优解及其对应的目标函数值。 通过使用scipy库中的linprog函数,我们可以轻松地求解线性规划问题,并得到最优解和最优值。需要注意的是,scipy库还提供了其他方法和函数来求解更复杂的数学建模问题,你可以根据具体需求选择适合的方法来求解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值