数学建模1:lingo软件求解优化模型

简介: 数学建模1:lingo软件求解优化模型

本次数学建模学习笔记系列,以代码学习为主,附带建模及论文亮点记录

由于队友为两位经济学小伙伴,因此以大数据类型题目为主要学习方向

注:论文代码资料来源网络

2014C题

1、结构清晰(后附该论文前两问的目录结构)

2、lingo求解优化模型,涉及函数循环与求和

3、表格很好看

4、关于sets,参考

https://blog.csdn.net/qq_47925836/article/details/119088653

5、代码和论文的结果没太明白,感觉优化过?

问题一(求解母猪年均产仔量以达到或超过盈亏平衡点)

盈亏平衡方程、多元函数建立计算模型、求解盈亏平衡问题

一、数据准备

1.搜集相关数据

2.确定养殖周期

二、利用盈亏平衡分析法确定产仔量

1.求解养殖总成本

(1)种猪饲养成本

(2)后备种猪饲养成本

(3)生猪饲养成本

(4)变动成本

(5)总成本

2.求解总收入

3.根据盈亏平衡点求解产仔量

三、结果分析(亮点!!!)

在 2014 年养猪行情下,不论采取何种配种方式和养殖周期该养殖场均无法达到盈亏平衡,

因此我们分析,若该养殖场在前两年的猪市行情下进行养殖可能会达到盈亏平衡。

所以我们又对 2013 年和 2012 年的猪市行情进行了调查,利用这两年的养殖成本和销售价格等数据对该养殖场的盈亏平衡点和母猪年均产仔量进行求解

四、相关建议

通过以上对问题的求解并结合猪市行情,我们给出当前形势下生猪养殖产业的一些相关建议

问题二(求解小猪选为种猪的比例和母猪的存栏数)

母猪每年可以产两胎,每胎可以成活 9 只小猪,求使得该养殖场养殖规模达到饱和时,小猪选为种猪的比例和母猪的存栏数

一、数据准备

1.种猪淘汰率

2.公母种猪比例

二、求解比例和存栏数

1.模型准备

1)目标建立

对小猪z、母猪l和公猪w数量建立整数规划

2)条件约束

(1)养殖场最大养殖规模约束

(2)小猪数量约束约束

(3)公猪母猪比例约束

2.模型建立

3.模型求解

代码(部分修改)

小猪z、母猪y和公猪x

max=x+@floor(x*0.45)+1+y+@floor(y*0.3)+1+z;
x+@floor(x*0.45)+1+y+@floor(y*0.3)+1+z<=10000;
y*9=z+@floor(x*0.45)+1+y+@floor(y*0.3)+1;
x=(1/24)*y;
@gin(x);
@gin(y);
@gin(z);
@floor(y*0.3)+1=a;
@floor(x*0.45)+1=b;
(a+b)/((2*z+@floor(x*0.45)+1+y+@floor(y*0.3)+1))*100=p;

结果表

结果可能被优化过,感觉不配套。。。。

问题三(确定最佳经营策略,计算年均利润)

一、拟合饲料价格与销售价格关系

1.建立函数关系

2.利用最小二乘法拟合

(1)模型准备

①目标建立

②约束条件

(2)模型建立

(3)模型求解

二、确定未来三年饲料价格

三、养殖场三年时间流程图

四、确定最佳经营策略和年均利润

1.数据准备

2.模型准备

1)目标建立

2)条件约束

3.模型建立

4.模型求解

代码 B Q M d

对应代码中 n q e w

第一步

sets:
bb/1..109/:a,b,c;
aa/1..6/:;
cc(aa,bb):f,p;
endsets
data:
a=@text('D:\roujia.txt');
b=@text('D:\biandongfeiyong.txt');
c=@text('D:\tianshujiange.txt');
enddata
max=n-q-e-w;
n=@sum(cc(i,j):a(j)*f(i,j)*100*8543)+8543*a(2);
q=@sum(cc(i,j):(c(j)*f(i,j)-c(j)*p(i,j)))*8543*1.5*3+8543*130*1.5*3;
e=@sum(bb(j):1452*(a(j)-7.3371)/2.3888*2.5*10);
w=@sum(cc(i,j):f(i,j)*8543*b(j))+1452*120;
@for(aa(i):@sum(bb(j):c(j)*f(i,j)-c(j)*p(i,j))>=150);
@for(aa(i)|(i#le#5):@sum(bb(j):f(i+1,j)*c(j)-f(i,j)*c(j))>=150);
!@for(aa(i)|(i#le#5):@sum(bb(j):f(i+1,j)*c(j)-f(i,j)*c(j))<=180);
@for(aa(i)|(i#le#5):@sum(bb(j):p(i+1,j)*c(j)-p(i,j)*c(j))>=180);
@for(aa(i):@sum(bb(j):f(i,j))<=1);
@for(aa(i):@sum(bb(j):p(i,j))<=1);
@for(cc(i,j):@bin(f(i,j)));
@for(cc(i,j):@bin(p(i,j)));

结果表

附表(部分)

5.结果分析

问题四

sets:
bb/1..109/:a,b,c,x,y;
aa/1..6/:;
cc(aa,bb):f,p;
endsets
data:
a=@text('D:\roujia.txt');
b=@text('D:\biandongfeiyong.txt');
c=@text('D:\tianshujiange.txt');
f=@text('D:\f.txt');
p=@text('D:\p.txt');
enddata
max=n-q-e-w;
n=@sum(cc(i,j):a(j)*f(i,j)*100*9*x(j)*0.98)+8479*a(2);
q=@sum(cc(i,j):(c(j)*f(i,j)-c(j)*p(i,j))*9*x(j)*0.98*1.5*3)+8479*130*1.5*3;
e=@sum(bb(j):x(j)/0.96*(a(j)-7.3371)/2.3888*2.5*10);
w=@sum(cc(i,j):f(i,j)*9*x(j)*0.98*b(j))+@sum(bb(j):x(j)/0.96)/109*120;
!@for(aa(i):@sum(bb(j):c(j)*f(i,j)-c(j)*p(i,j))>=150);
!@for(aa(i)|(i#le#5):@sum(bb(j):f(i+1,j)*c(j)-f(i,j)*c(j))>=150);
!@for(aa(i)|(i#le#5):@sum(bb(j):p(i+1,j)*c(j)-p(i,j)*c(j))>=180);
x(1)=1110;
@for(bb(j):x(j)<=1110);
@for(bb(j):x(j)>=24);
!@for(bb(j)|(j#le#108):@if(x(j+1)#ge#x(j),x(j+1)*0.1,x(j)*0.1)=@abs(x(j+1)-x(j)));
@for(bb(j)|(j#le#108):@abs(x(j)-x(j+1))<=x(j)*0.01);
!@for(aa(i):@sum(bb(j):f(i,j))<=1);
!@for(aa(i):@sum(bb(j):p(i,j))<=1);
@for(cc(i,j):@bin(f(i,j)));
@for(cc(i,j):@bin(p(i,j)));
@for(bb(j):x(j)*1.3=y(j));

母猪数量

模型推广与评价

1.模型评价

好的方面:

1.对所收集来的数据进行整理,并对其进行筛选,将合理数据用于计算中;

2.利用拟合最小二乘法来分析预测数据,更加具有说服力和理论性;

3.结合不同种实际情况,使所建立的模型更加科学、合理。

有待改进的地方:

1.本模型所收集的数据有限,计算精度不高,得到的结果可能同实际情况有所出入。

2.模型推广

所建立的模型考虑到的因素比较全面,并详细的给出了经营策略,可以应用到实际规划中。

根据文中所建立的模型,依据近几年市场价格涨跌趋势,预测未来几年市场营销情况,即可以提前做出预判。

目录
相关文章
|
11月前
鲁棒优化入门(二)——基于matlab+yalmip求解鲁棒优化问题
鲁棒优化的含义就是在最恶劣的情况下(不确定变量的取值使目标函数最大),求出满足约束条件,并且能使目标函数最优的决策变量。 yalmip工具箱可以用来求解鲁棒优化问题,但还是有一定局限性的,并不能处理任意形式的不确定集下的鲁棒优化问题,一般来说,当鲁棒优化问题的不确定集合为箱型不确定集、椭球不确定集以及多面体不确定集时,都可以用yalmip工具箱求解(具体细节可参考官方文档)。本文介绍了利用yalmip求鲁棒优化问题的一般方法。......
|
11月前
|
机器学习/深度学习 算法
【MATLAB第34期】 MATLAB 2023年棕熊算法 BOA-LSTM时间序列预测模型 #含预测未来功能,以及优化结构层数及单双向类型 研究工作量丰富且新颖
【MATLAB第34期】 MATLAB 2023年棕熊算法 BOA-LSTM时间序列预测模型 #含预测未来功能,以及优化结构层数及单双向类型 研究工作量丰富且新颖
|
算法 安全 机器人
Python语言如何使用MindOpt建模并求解二次规划问题
MindOpt是一款高效的优化算法软件包,求解算法实现了线性规划(LP)、混合整数线性规划(MILP)、二次规划(QP),可以支持命令行、c、c++、java和python调用。接下来我们将发布一系列文章,讲述各个语言如何使用 MindOpt 来求解数学规划问题。
Python语言如何使用MindOpt建模并求解二次规划问题
非线性优化 | 非线性问题matlab+yalmip求解案例
非线性优化 | 非线性问题matlab+yalmip求解案例
|
10月前
|
机器学习/深度学习 资源调度 数据建模
Matlab+Yalmip求解鲁棒优化编程实战
去年发布了使用Yalmip工具箱求解鲁棒优化问题的博客之后,陆陆续续有朋友问我相关的问题,有人形容从学习这篇博客到求解论文中的鲁棒优化问题,就好像刚学会求导公式,就要去做高考压轴题,根本无从下手。为了解决这个问题,这篇博客将手把手地教会大家如何使用Matlab+ yalmip+cplex(当然其他的求解器比如gurobi也是可以的)求解论文中的鲁棒优化问题。
|
10月前
基于遗传算法的最优潮流问题的研究(Matlab实现)【期刊论文复现】
基于遗传算法的最优潮流问题的研究(Matlab实现)【期刊论文复现】
|
11月前
|
Dragonfly 算法 安全
基于蜻蜓优化算法的配电网重构求解(Python代码实现)【IEEE123节点算例】
基于蜻蜓优化算法的配电网重构求解(Python代码实现)【IEEE123节点算例】
189 0
|
12月前
|
算法
数值分析算法 MATLAB 实践 线性方程组 分解法
数值分析算法 MATLAB 实践 线性方程组 分解法
87 0
|
12月前
|
算法 算法框架/工具
数值分析算法 MATLAB 实践 常微分方程求解
数值分析算法 MATLAB 实践 常微分方程求解
92 0
|
12月前
|
算法 Java
数学建模常用算法:蚁群算法求解tsp问题+att48算例测试【java实现--详细注释】
数学建模常用算法:蚁群算法求解tsp问题+att48算例测试【java实现--详细注释】
106 0

热门文章

最新文章