目录

一.线性规划

1.求最小值

2.最大值

二.二次规划

1.概念:目标函数是决策向量的二次函数,约束条件都是线性的。

2.最小值

3.最大值.

三.整数规划

1.整数线性规划(决策变量中部分或者全部取整数,对结果值不要求)

2.0-1整数线性规划

3.非线性整数规划-模特卡罗法

四.非线性规划

1.有约束极值问题

2.无约束极值问题


一.线性规划

1.求最小值

clc,clear
prob=optimproblem;%默认目标函数最小化
x=optimvar('x',3,1,'LowerBound',0);%决策变量3*1
prob.Objective = -5*x(1)-4*x(2)-6*x(3);%目标函数
%约束条件
prob.Constraints.cons1 = x(1)-x(2)+x(3)<=20;
prob.Constraints.cons2 = 3*x(1)+2*x(2)+4*x(3)<=42;
prob.Constraints.cons3 = 3*x(1)+2*x(2)<=30;
[sol,fval,flag,out]=solve(prob)
sol.x

结果:

ans =

0
   15.0000
    3.0000

fval =

-78

out =

包含以下字段的 struct:

iterations: 3
    constrviolation: 0
            message: 'Optimal solution found.'
          algorithm: 'dual-simplex'
      firstorderopt: 1.7764e-15
             solver: 'linprog'

2.最大值

clc,clear
prob=optimproblem('ObjectiveSense','max');
x=optimvar('x',3,1,'LowerBound',0);
prob.Objective = 2*x(1)+3*x(2)-5*x(3);
prob.Constraints.cons1 = x(1)+x(2)+x(3)==7;
prob.Constraints.cons2 = 2*x(1)-5*x(2)+x(3)>=10;
prob.Constraints.cons3 = x(1)+3*x(2)+x(3)<=12;
[sol,fval,flag,out]=solve(prob)
sol.x

结果:

fval =

14.5714
ans =

6.4286
    0.5714
         0

二.二次规划

1.概念:目标函数是决策向量的二次函数,约束条件都是线性的。

2.最小值

clc,clear
prob=optimproblem;%默认目标函数最小化
x=optimvar('x',2,1,'LowerBound',0);%决策变量3*1
prob.Objective = 2*x(1)^2-4*x(1)*x(2)+4*x(2)^2-6*x(1)-3*x(2);%目标函数
%约束条件
prob.Constraints.cons1 = x(1)+x(2)<=3;
prob.Constraints.cons2 = 4*x(1)+x(2)<=9;
[sol,fval,flag,out]=solve(prob)
sol.x

结果:

ans =

1.9500
    1.0500

fval =

-11.0250

3.最大值.

max  f=-x(1)^2-0.3*x(1)*x(2)-2*x(2)^2+98*x(1)+277*x(2)

x(1)+x(2)<=100;

x(1)-2*x(2)<=0;

x(1),x(2)>=0

clc,clear,format long g
prob=optimproblem('ObjectiveSense','max');
x=optimvar('x',2,1,'LowerBound',0);
prob.Objective = -x(1)^2-0.3*x(1)*x(2)-2*x(2)^2+98*x(1)+277*x(2);
prob.Constraints.cons1 = x(1)+x(2)<=100;
prob.Constraints.cons2 = x(1)-2*x(2)<=0;
[sol,fval,flag,out]=solve(prob)
sol.x
format short %恢复到短小数的显示格式

结果:

ans =

35.3703703701727
          64.6296296287408

fval =

11077.8703703618

三.整数规划

1.整数线性规划(决策变量中部分或者全部取整数,对结果值不要求)

clc, clear,
prob = optimproblem;
x = optimvar('x',6,'Type','integer','LowerBound',0);
prob.Objective = sum(x);
prob.Constraints.cons1 = x(1)+x(6)>=35;
prob.Constraints.cons2 = x(1)+x(2)>=40;
prob.Constraints.cons3 = x(2)+x(3)>=50;
prob.Constraints.cons4 = x(3)+x(4)>=45;
prob.Constraints.cons5 = x(4)+x(5)>=55;
prob.Constraints.cons6 = x(5)+x(6)>=30;
[sol,fval,flag,out]=solve(prob)
sol.x

结果:

ans =

35
     5
    45
     0
    55
     0

fval =

140

2.0-1整数线性规划

clc, clear, 
c = [15 13.8 12.5 11 14.3
    14.5 14 13.2 10.5 15
    13.8 13 12.8 11.3 14.6
    14.7 13.6 13 11.6 14];
prob = optimproblem;
x = optimvar('x',4,5,'Type','integer','LowerBound',0,'UpperBound',1);
prob.Objective = sum(sum(c.*x));
prob.Constraints.con1 = sum(x,1)==1;
prob.Constraints.con2 = sum(x,2)<=2;
[sol, fval, flag] = solve(prob)
sol.x

结果:

ans =

0     0     1     0     0
     0     0     0     1     0
     1     1     0     0     0
     0     0     0     0     1

fval =

63.8000

3.非线性整数规划-模特卡罗法

clc, clear

%rng('shuffle')  %根据当前时间为随机数生成器提供种子

rng(0) %进行一致性比较,每次产生的随机数是一样的

p0=0; n=10^6; tic    %计时开始

for i=1:n

   x=randi([0,99],1,5); %产生一行五列的区间[0,99]上的随机整数

   [f,g]=mengte(x);

   if all(g<=0)

       if p0<f

           x0=x; p0=f; %记录下当前较好的解

       end

   end

end

x0, p0, toc    %计时结束

function [f,g]=mengte(x)  %定义目标函数和约束条件

f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-8*x(1)-2*x(2)-3*x(3)-...

x(4)-2*x(5);

g=[sum(x)-400

x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800

2*x(1)+x(2)+6*x(3)-200

x(3)+x(4)+5*x(5)-200];

end

结果:

x0 =

46    98     1    99     3

p0 =

50261

历时 1.391515 秒。

四.非线性规划

1.有约束极值问题

clc, clear, prob = optimproblem;
x = optimvar('x',3,'LowerBound',0);
prob.Objective = sum(x.^2)+8;
prob.Constraints.con1 = -x(1)^2+x(2)-x(3)^2 <= 0;
prob.Constraints.con2 = x(1)+x(2)^2+x(3)^3 <= 20;
prob.Constraints.con3 = -x(1)-x(2)^2+2 == 0;
prob.Constraints.con4 =  x(2)+2*x(3)^2 == 3;
x0.x=rand(3,1);  %非线性规划必须赋初值
[sol,fval,flag,out]= solve(prob,x0), sol.x

结果:

ans =

0.5522
    1.2033
    0.9478

fval =

10.6511

2.无约束极值问题

clc, clear, prob=optimproblem;  %最小值问题
x=optimvar('x',2); 
prob.Objective = 100*(x(2)-x(1)^2)^2+(1-x(1))^2;
x0.x=rand(2,1)  %初始值
[sol,fval,flag,out]=solve(prob,x0), sol.x

结果:

ans =

1.0000
    1.0000

fval =

1.2326e-30

clc, clear, prob1=optimproblem;  %最小值问题
x=optimvar('x','LowerBound',-3,'UpperBound',3);
y=optimvar('y','LowerBound',-4,'UpperBound',4);
prob1.Objective=x^3-y^3+3*x^2+3*y^2-9*x;
x0.x=1; x0.y=1;
[sol1,fval1,flag1,out1]=solve(prob1,x0)
prob2=optimproblem('ObjectiveSense','max')
prob2.Objective=x^3-y^3+3*x^2+3*y^2-9*x;
op=optimoptions(@fmincon,'Algorithm','active-set')
[sol2,fval2,flag2,out2]=solve(prob2,x0,'Options',op)

结果:

最小值:

x: 1.0000
 y: 1.7072e-10

fval1 =

-5

最大值:

x: 1
 y: 2.0000
fval2 =

-1.0000

优化-规划问题(数学建模)相关推荐

  1. 2023年第三届长三角高校数学建模竞赛】A 题 快递包裹装箱优化问题 详细数学建模过程

    相关链接 [2023年第三届长三角高校数学建模竞赛]A 题 快递包裹装箱优化问题 20页完整论文及代码 1 题目 2022 年,中国一年的包裹已经超过 1000 亿件,占据了全球快递事务量的一半以上. ...

  2. 数学建模优化模型简单例题_离散型优化问题Ⅱ_数学建模_每日一题(未附代码)附求解规划类问题的建议...

    题Ⅱ Background Information: 某饲料加工厂有9个加工窖.现有一批加工任务,要将16种加工原料按照某种混合方案 一次性放入加工窖中 进行加工.质量>=500kg的加工原料可 ...

  3. Lingo:软件简介与优化问题【数学建模工具】

    Lingo主菜单命令 LINDO 软件的菜单条上有 6 个主菜单: File(文件) Edit(编辑) Solve(求解) Reports(报告) Window(窗口) Help(帮助) File(文 ...

  4. 数学建模专栏 | 第五篇:MATLAB优化模型求解方法(上):标准模型

    最优化赛题是数学建模大赛中最常见的问题类型之一.一般说来,凡是寻求最大.最小.最远.最近.最经济.最丰富.最高效.最耗时的目标,都可以划入优化问题的范畴.MATLAB 优化工具箱和全局优化工具箱对多个 ...

  5. 数学建模优化模型简单例题_数学建模之优化模型:存储模型

    点击上方「蓝字」关注我们 最近,为申报市级精品课程,我为我校"数学建模与科学计算"课程录制了讲课视频,下面是3.1节优化模型的第一个例子:存储模型.敬请大家批评指正! 优化模型是数 ...

  6. 【2023年第三届长三角高校数学建模竞赛】A 题 快递包裹装箱优化问题 20页完整论文及代码

    相关链接 [2023年第三届长三角高校数学建模竞赛]A 题 快递包裹装箱优化问题 详细数学建模过程 1 题目 2022 年,中国一年的包裹已经超过 1000 亿件,占据了全球快递事务量的一半以上.近几 ...

  7. 数学建模 导航(持续更新ing)

    数学建模 导航 一.数学建模方法 1.综合评价类 2.分类与判别类 3.关联.因果与比较类 4.预测与预报类(1)单序列预测 5.预测与预报类(2)回归分析预测 6.优化与控制类 二.数学建模工具 1 ...

  8. 数学建模让人收益终身——2022美国大学生数学建模竞赛F奖

    数学建模与我的故事 2022-5-6上午美赛的结果揭晓了,我们小组很开心和庆幸自己在今年的竞赛C题中获得了Finalist!!这次也算是本科生涯最后一次建模了,小编从本科一年级开始数学建模,先后获得了 ...

  9. 数学建模workflow

    本人原创,转载请注明出处:https://blog.csdn.net/tyhj_sf/article/details/85227117 0. 引言 数学建模过程是一个创造性地将数学知识直接运用于生产实 ...

  10. 数学建模中常用的十大算法

    数学建模中常用的十大算法 这里,我们将对数学建模中常用的十大算法做一个简单的梳理,并给出一些可以继续学习的参考Blogs 文章目录 数学建模中常用的十大算法 1.蒙特卡罗算法 2.数据拟合.参数估计. ...

最新文章

  1. 真学霸不愁钱,传递社会正能量 - 我看华为百万年薪招聘天才少年
  2. 看看10万程序员怎么评论:零基础的前端开发该如何系统地学习?
  3. mysql 创建师徒_mysql基础整理
  4. python 之 collections
  5. 生物化学与分子生物学分析技术 Analytical Techniques in Biochemistry and Molecular Biology 英文原版
  6. 去掉字符串后面所有的0 去掉字符串前面或后面的0;
  7. 命令行的形式运行php
  8. 为了和互联网公司抢程序员,这家世界 500 强也是蛮拼的
  9. nginx配置二级域名
  10. atitit.导出excel的设计----查询结果 导出为excel的实现java .net php 总结
  11. 多视点视频编码快速模式选择算法综述
  12. 第2节---小任务,爬取百度LOGO链接并下载图片
  13. 网格布局---grid
  14. 音乐转换成16进制写进单片机的方法(音符频率和音符的播放长度时间计算)
  15. Silverlight游戏设计(Game Design):(六)场景编辑器之开源畅想
  16. P1867 【Mc生存】经验值 java题解
  17. 自己动手开发安卓版按键精灵
  18. Unsupervised Degradation Representation Learning for Blind Super-Resolution(基于无监督退化表示学习的盲超分辨率处理)
  19. Mysql数据库 | SQL语句解析『下篇』
  20. 【技术干货】详解BGP4+的负载分担

热门文章

  1. Using 1.7 requires compiling with Android 4.4 (KitKat); currently using API 10
  2. 关键字 surper 和 this
  3. Python 3 《array》入门练习
  4. python文章抄袭检测_CSDN文章被洗稿、抄袭严重!用Python做一个“基于搜索引擎的文章查重工具”,解决!...
  5. 夏天宝宝晚上睡觉不踏实怎么办?
  6. .nsh 怎么样运行_如何在Ubuntu 18.04上使用nsh运行安全的远程命令
  7. Visual C++游戏编程基础之透明半透明效果
  8. 制作openstack离线 yum 源
  9. 【小程序】小程序多次扫描不同二维码参数不生效问题
  10. 在iOS设备上安装Windows、Linux等操作系统!