数学建模:11 数学规划模型

20 篇文章 8 订阅
订阅专栏
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 线性规划:
[x,fval] = linprog(c, A, b, Aeq, beq, lb, ub, x0);

% c是目标函数各个变量的系数组成的列向量
% lb是各个变量的下界组成的列向量
% 默认求的是目标函数的min、不等式约束是小于等于

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 整数规划:
[x,fval] = intlinprog(c, intcon, A, b, Aeq, beq, lb, ub);

% intcon 行向量或数字,哪个变量要求是整数 就把它的下标加进来

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 01规划:
% 在整数规划基础上 把lb ub限制为0 1

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 非线性规划:
[x,fval] = fmincon(@fun, x0, A, b, Aeq, beq, lb, ub, @nonlfun, option);

% x0表示给定的初始值(用行向量或者列向量表示),必须得写
% option 表示求解非线性规划使用的方法
option = optimoptions('fmincon','Algorithm','interior-point')           % 内点法
option = optimoptions('fmincon','Algorithm','sqp')                      % SQP(序列二次规划法)
option = optimoptions('fmincon','Algorithm','active-set')               % active set(有效集法)
option = optimoptions('fmincon','Algorithm','trust-region-reflective')  % trust region reflective (信赖域反射算法)

%%%%%%%%%%%%%% 使用蒙特卡罗的方法来找初始值(推荐)
clc,clear;
n=10000000;
x1=unifrnd(-100,100,n,1);  % 生成在[-100,100]之间均匀分布的随机数组成的n行1列的向量构成x1
x2=unifrnd(-100,100,n,1); 
fmin=+inf; % 初始化函数f的最小值为正无穷(后续只要找到一个比它小的我们就对其更新)
for i=1:n
    x = [x1(i), x2(i)];  %构造x向量, 这里千万别写成了:x =[x1, x2]
    if 约束条件1 & 约束条件1
        result = 目标函数;  % 如果满足条件就计算目标函数值
        if  result  < fmin 
            fmin = result; 
            x0 = x;
        end
    end
end

%%%%%%%%%%%%%%%% fun.m
function f = fun(x)
% 目标函数:max  f(x) = x1^2 +x2^2 -x1*x2 -2x1 -5x2
    f = -x(1)^2-x(2)^2 +x(1)*x(2)+2*x(1)+5*x(2) ; 
end

%%%%%%%%%%%%%%%% nonlfun.m
function [c,ceq] = nonlfun(x)
    % 非线性不等式约束,多个要用列向量
    c = [-x(1)^2+x(2)-x(3)^2;  
         x(1)+x(2)^2+x(3)^2-20];
    % 非线性等式约束
    ceq = [-x(1)-x(2)^2+2;
           x(2)+2*x(3)^2-3]; 
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 最大最小化模型:
[x,fval] = fminimax(@Fun, x0, A, b, Aeq, beq, lb, ub, @nonlfun, option);

% Fun是函数向量 Fun.m
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
end 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 多目标规划:
[x,fval] = fgoalattain(func,goal,weight,x0,A,b,Aeq,beq,lb,ub)
% 具体用法看后面的例子

 

目录

概述

分类

线性规划

例题

非线性规划

例题

选址问题

国赛A题:飞行管理

整数规划

例题

背包问题

指派问题

钢管切割问题

最大最小化模型

例题

多目标规划模型

参考资料


概述

数学规划的目标:求目标函数在一定约束条件下的极值问题

组成:决策变量、目标函数、约束条件

分类

  • 线性规划:目标函数和约束条件 均是 决策变量的线性表达式(单纯形法一定能解决线性规划,有唯一/多个解)
  • 非线性规划:目标函数和约束条件 有一个是 决策变量的非线性表达式(需给定决策变量的初始值,只能求近似解)
  • 整数规划:要求变量取整数
    • 线性整数规划
    • 非线性整数规划:目前没有准确解法,可用蒙特卡洛
  • 01规划:整数规划的特例,只能取0/1

线性规划

参考: matlab线性规划--简单入门_老蔡的菜的博客-CSDN博客_matlab线性规划

 

其中的初始值x0只加快得到结果的速度,结果与x0无关

例题

Matlab线性规划实例_zz_Outlier的博客-CSDN博客_matlab线性规划例题

clear,clc
format long g   %可以将Matlab的计算结果显示为一般的长数字格式(默认会保留四位小数,或使用科学计数法)
% (1) 系数向量
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 = [5  2];  % 料场的横坐标
y = [1  7];  % 料场的纵坐标
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
% (2) 不等式约束
A =zeros(2,12);
A(1,1:6) = 1;
A(2,7:12) = 1;
b = [20,20]';
% (3) 等式约束
Aeq = zeros(6,12);  
for i = 1:6
    Aeq(i,i) = 1;  Aeq(i,i+6) = 1;
end
% Aeq = [eye(6),eye(6)]  % 两个单位矩阵横着拼起来
beq = [3 5 4 7 6 11]';  % 每个工地的日需求量
%(4)上下界
lb = zeros(12,1);

% 进行求解
[x fval] = linprog(c, A, b, Aeq, beq, lb)
x = reshape(x,6,2)  % 将x变为6行2列便于观察(reshape函数是按照列的顺序进行转换的,也就是第一列读完,读第二列,即x1对应x_1,1,x2对应x_2,1)

% fval =
%           135.281541790676

非线性规划

先用蒙特卡罗找到一个解,作为非线性规划的初始值 x0,matlab:fmincon

例题

选址问题

国赛A题:飞行管理

详见pdf

整数规划

 

例题

背包问题

指派问题

%% 指派问题(选择队员去进行游泳接力比赛)
clear;clc
c = [66.8 75.6 87 58.6 57.2 66 66.4 53 78 67.8 84.6 59.4 70 74.2 69.6 57.2 67.4 71 83.8 62.4]';  % 目标函数的系数矩阵(先列后行的写法)
intcon = [1:20];  % 整数变量的位置(一共20个决策变量,均为0-1整数变量)
% 线性不等式约束的系数矩阵和常数项向量(每个人只能入选四种泳姿之一,一共五个约束)
A = [1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
       0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0;
       0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0;
       0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0;
       0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1];
% A = zeros(5,20);
% for i = 1:5
%     A(i, (4*i-3): 4*i) = 1;
% end
b = [1;1;1;1;1];
% 线性等式约束的系数矩阵和常数项向量 (每种泳姿有且仅有一人参加,一共四个约束)
Aeq = [   1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0;
          0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0;
          0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0;
          0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1];
% Aeq = [eye(4),eye(4),eye(4),eye(4),eye(4)];  % 或者写成 repmat(eye(4),1,5)  
beq = [1;1;1;1];
lb = zeros(20,1);  % 约束变量的范围下限
ub = ones(20,1);  % 约束变量的范围上限
%最后调用intlinprog()函数
[x,fval] = intlinprog(c,intcon,A,b,Aeq,beq,lb,ub)
% reshape(x,4,5)'
%      0     0     0     1    甲自由泳
%      1     0     0     0    乙蝶泳
%      0     1     0     0    丙仰泳
%      0     0     1     0    丁蛙泳
%      0     0     0     0    戊不参加

钢管切割问题

这里用了枚举法:一根6.9m,只能切割出 2 根2.9m,所以2.9m枚举范围:[0, 2];同理2.1m:[0, 3];0.9m:[0, 6]

for i = 0: 2  % 2.9m长的圆钢的数量 最多只能切出2根
    for j = 0: 3  % 2.1m长的圆钢的数量
        for k = 0:6   % 1m长的圆钢的数量
            if 2.9*i+2.1*j+1*k >= 6 && 2.9*i+2.1*j+1*k <= 6.9
                disp([i, j, k])
            end
        end
    end
end

c = ones(7,1);  % 目标函数的系数矩阵
intcon=[1:7];  %  整数变量的位置(一共7个决策变量,均为整数变量)
A = -[   1 2 0 0 0 0 1;  
         0 0 3 2 1 0 1;
         4 1 0 2 4 6 1];  % 线性不等式约束的系数矩阵
b = -[100 100 100]'; %  线性不等式约束的常数项向量
lb = zeros(7,1); % 约束变量的范围下限
[x,fval]=intlinprog(c,intcon,A,b,[],[],lb)

 

最大最小化模型

例题

 

多目标规划模型

参考资料

【数学建模】多目标规划_SuperSources的博客-CSDN博客_多目标规划

数模3—Matlab线性规划、非线性规划、多目标规划(超全解法合集)_day by day get on的博客-CSDN博客_非线性规划matlab编程求最大值

下面例题来源: https://shenlong.blog.csdn.net/article/details/110501496

多目标遗传算法:  https://zstar.blog.csdn.net/article/details/119302954

function f = mutiplesubjiect(x)
  f(1)=3*x(1)-2*x(2);
  f(2)=-4*x(1)-3*x(2);

% 单独对每个目标线性规划:
f1=[3;-2];
a=[2  3;2 1];
b=[18;10];
lb=[0;0];
ub=[];
[x,favl]=linprog(f1,a,b,[],[],lb,ub);
% 输出结果为:x=0.0000 6.0000,favl=-12.0000,所以最大值为12.0000

f2=[-4;-3];
[x,favl]=linprog(f2,a,b,[],[],lb,ub);
% 输出结果为:x=3.0000 4.0000,favl=-24.0000,所以最大值为24.0000

% 所以得到目标goal和权重
goal=[12,24];
weight=[12,24];
x0=[0;0];
[x,fval] = fgoalattain('mutiplesubjiect',goal,weight,x0,a,b,[],[],lb,[])

C++内点法求解大规模线性规划问题——对标MATLAB中linprog函数
08-22
该库基于C++14标准构建,用于处理大规模线性规划问题(整数或浮点数均可,基于内点法),详细使用说明可参考我发布的博客:https://blog.csdn.net/weixin_46584887/article/details/126462648?spm=1001.2014.3001.5501,文件内包含说明文档,在Linux系统以及Windows系统下均可使用。
数学建模-数学规划模型
qq_46238275的博客
09-26 7127
数学规划模型 一、概述 1.什么是数学规划? 运筹学的一个分支,用来研究在给定条件下(即约束条件),如何按照某一衡量指标(目标函数)来寻求计划、管理工作中的最优方案。 即求目标函数在一定约束条件下的极值问题 2.数学规划的一般形式 min(or max)Z=f(x) s.t gi(x)<=0,i=1,2,…,m (不等式约束) 约束条件,也可能等式约束、整数约束… x:决策变量(一般多个自变量) f(x):目标函数 3.数学规划的分类 (1)线性规划 目标函数f(x)和约束条件均是决策变量的线
数学建模】-- 数学规划模型
weixin_73612682的博客
08-18 3069
数学规划包括多种不同类型的问题,其中最常见的包括线性规划(Linear Programming)、整数规划(Integer Programming)、非线性规划(Nonlinear Programming)、混合整数规划(Mixed Integer Programming)等。在数学规划中,通常会使用数值优化算法来求解最优解,这些算法包括线性规划的单纯形法、内点法,以及非线性规划的牛顿法、拟牛顿法等。常见的数学规划模型包括线性规划(LP)、整数规划(IP)、非线性规划(NLP)、混合整数规划(MIP)等。
数学建模 —— 规划模型
qq_52928524的博客
08-24 4079
规划模型
数学规划模型
qq_52117903的博客
04-19 3370
内容聚焦数学建模数学规划模型,主要有:线性规划、整数规划、非线性规划、多目标规划、最大最小模型
数学建模算法与应用》-整数规划-指派问题-matlab求解
半岛铁盒里
07-12 1936
数学建模算法与应用》——司守奎,整数规划相关的指派问题,主要叙述如何利用构建系数矩阵来满足matlab的求解函数参数(等式约束和不等式约束)
数学规划模型总结(附MatLab代码)
Uncle Tan_的博客
08-17 6574
数学规划是统筹学的分支。通俗的讲,就是求 目标函数 在一定 约束条件 下的极值问题。本文总结了数学规划模型中的常见模型,并附对应MatLab代码,便于读者在遇到数学规划问题时查阅解决。
[数学建模]数学规划模型
catzhaojia的博客
01-21 5862
数学规划是运筹学的一个分支,其用来研究:在给定条件下(约束条件),如何按照某一衡量指标(目标函数)来寻求计划、管理工作中的最优方案。 【求目标函数在一定约束条件下的极值问题】 当目标函数和或者约束条件中 有⼀个是决策变量x的非...
数学建模:统计模型
01-19
数学建模:统计模型.PPT 总结得很好,分享给各位。大家感兴趣的拿
清华数学建模电子教案 数学规划模型
07-20
清华数学建模电子教案 数学规划清华数学建模电子教案 数学规划清华数学建模电子教案 数学规划清华数学建模电子教案 数学规划清华数学建模电子教案 数学规划清华数学建模电子教案 数学规划模型
数学建模数学模型期中测验.docx
02-22
数学建模数学模型期中测验.docx
简单数学建模:人口模型.rar
05-16
简单数学建模:人口模型,内附详细matlab程序
数学建模:第3章 线性规划模型.ppt
02-22
数学建模:第3章 线性规划模型.ppt
数学建模:降落伞的选择.ppt
02-22
数学建模:降落伞的选择.ppt
数学建模】线性规划模型基本原理与案例分享
热门推荐
StudyWinter的博客
01-31 4万+
1、线性规划问题 在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。此类问题构成了运筹学的一个重要分支—数学规划,而线性规划(Linear Programming 简记LP)则是数学规划的一个重要分支。自从1947年G.B.Dantzig提出求解线性规划的单纯形方法以来,线性规划在理论上趋向成熟,在实用中日益广泛与深入。特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性规划的适用领域更为广泛了,已成为现代管理中经常采用的基本方法之一。 ...
数学规划模型(一)
最新发布
2303_76664877的博客
10-21 207
我们先来了解一下什么是数学规划数学规划是运筹学的一个分支,其用来研究:在给定的条件下(约束条件),如何按照某一衡量指标(目标函数)来寻求规划,管理工作中的最优方案。简单的说,也就是求目标函数在一定的约束条件下的极值问题。再来看数学规划的一般形式。用数学式子将其表示出来,x代表决策变量,一般会有多个自变量;f(x)代表目标函数;下面的g(x)代表的是约束条件,约束条件可分为不等式约束、等式约束、整数约束。在一个题目中,可能会有一种约束条件,也可能会有多种约束条件。对于不同的问题,可将数学规划分类。
数学建模(4):动态规划
Kirisane_Marisa的博客
06-11 1万+
动态规划本身并不是类似前三篇文章所说明的一样,是一种规定的算法,而更像是考察问题的一种途径。自问世以来,它在经济管理、生产调度、工程技术和优控制等方面得到了广泛的应用。例如短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比用其它方法求解更为方便。 §1 动态规划模型的要素 动态规划模型的要素是对问题解决的抽象,其可分为: 阶段。指对问题进行解决的自然划分。例如:在最短线路问题中,每进行走一步的决策就是一个阶段。 状态。指一个阶段开始时的自然状况。例如:在最短线路问题中,每进行走一步后
数学建模:动态规划模型
09-09
动态规划是一种常用的数学建模方法,用于解决具有重叠子问题和最优子结构特性的优化问题。在动态规划模型中,我们将问题拆分为多个阶段,并通过求解每个阶段的最优解来获取整体的最优解。 动态规划模型通常包括以下...

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 怎么解决vmware中虚拟机中无法使用键盘的故障 6810
  • 谷歌浏览器默认百度引擎改不了的解决方法 4127
  • 数学建模:18 粒子群算法 4067
  • 数学建模:9 多元线性回归分析 3468
  • 数学建模:14 时间序列 3235

分类专栏

  • 深度学习 2篇
  • OOAD 2篇
  • 软件测试 1篇
  • 数学建模 20篇
  • matlab 2篇
  • JavaEE 7篇
  • python 6篇
  • OS 1篇
  • 数据结构 1篇

最新评论

  • 数学建模:18 粒子群算法

    にしのみやけつげん: Obj_fun2不给一下吗

  • 谷歌浏览器默认百度引擎改不了的解决方法

    K-O-F: 还真是,无语了这联想电脑管家,怪不得我前几天还是自己设置的主页这几天突然就老是跳到百度

  • 谷歌浏览器默认百度引擎改不了的解决方法

    WEidong_01: 有用的解决方法!感谢!最近不知道为啥打卡谷歌老是跳转到百度,原来是被联想的这个锁定了

大家在看

  • 骑士遍历问题详解 208
  • 人工语音领头羊-chatTTS 441
  • [NOIP2004 提高组]合唱队形 题目详解
  • JVM之【字节码/Class文件/ClassFile 内容解析】 874
  • Android基础-Log管理 603

最新文章

  • GPT、GPT-2、GPT-3论文精读笔记
  • 双流网络论文精读笔记
  • 机试笔记(C++)
2023年28篇
2022年19篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司大理网站定制报价大运模板网站建设公司邢台seo优化公司临猗网站改版多少钱周口网站优化按天收费多少钱杭州SEO按天计费报价连云港网站优化按天扣费公司张掖网站推广系统推荐台州网络推广哪家好合肥高端网站设计多少钱成都推广网站公司永湖关键词排名多少钱景德镇外贸网站制作报价坪山关键词排名包年推广公司平湖模板推广价格昌吉企业网站制作推荐昌吉网站定制宁波企业网站制作保山网站建设设计报价长春百度seo多少钱绍兴阿里店铺托管报价渭南网站优化软件报价大运营销网站公司遂宁SEO按天收费价格崇左关键词排名多少钱温州网站设计模板价格湖州模板制作丽水网络营销多少钱怀化百度seo多少钱罗湖seo优化公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化