利用Lingo求解最优定价问题
作者:河海大学 唐杰
摘要:如何进行产品定价是当下社会生活中一个非常有现实意义的问题,在有一定供给或需求约束的情况下,通过数学方法计算不同产品定价以使销售额最大化。本文将以农产品定价问题为例,介绍如何使用Lingo求解最优产品定价问题。
关键词:Lingo,最优解,定价
Lingo非常善于求解优化问题,对于线性规划和二次线性规划问题,Lingo在求解时非常方便。下面通过通过Lingo来求解农产品定价问题,以探究如何定价能使销售总收入最大。
政府要为其牛奶、奶油和奶酪等奶制品定价。所有这些产品都直接或间接地来自国家的原奶生产。原奶首先要分离成脂肪和奶粉两种组合,去掉生产出口产品和农场消费的产品的部分后,余下的共有60万吨脂肪和70万吨奶粉,可用于生产牛奶、奶油和两种奶酪,供国内全年消费。
各种产品的百分比组成见下表:
某国政府要为其牛奶、奶油和奶酪等奶制品定价。现共有原料60万吨脂肪和70万吨奶粉,可用于生产牛奶、奶油和两种奶酪,相关数据如下表:
各种产品的百分比组成
|
脂肪 |
奶粉 |
水 |
|
|
|
|
牛奶 |
4 |
9 |
87 |
奶油 |
80 |
2 |
18 |
奶酪1 |
35 |
30 |
35 |
奶酪2 |
25 |
40 |
35 |
往年的国内消费和价格
|
牛奶 |
奶油 |
奶酪1 |
奶酪2 |
|
|
|
|
|
消费量(万吨) |
482 |
32 |
21 |
7 |
价格(元/吨) |
297 |
720 |
1050 |
815 |
价格的变化影响消费需求。为表现这方面的规律,定义需求的价格伸缩性 E:
E=需求降低百分数/价格提高百分数
各种产品的E值,可以根据往年的价格和需求变化情况的统计数据,用数理统计方法求出。另外,两种奶酪的需求,随它们价格的相对变化,在某种程度上可以相互替代。表现这一规律要用需求关于价格的交叉伸缩性EAB定义作:
EAB=A需求提高百分数/B价格提高百分数
奶酪1到奶酪2的E12值和奶酪2到奶酪1的交叉伸缩性E21值,同样可以凭数据用统计方法求出。
已经求出牛奶、奶油、奶酪1、奶酪2的E值依次为0.4,2.7,1.1和0.4以及E12=0.1, E21=0.4.
试求出4种产品的价格,使所导致的需求使销售总收入为最大。
一.定义变量
Pi :第i种产品的新价格
Si :第i种产品的新需求量
z :所有产品的销售总收入
Ei :第i种产品的价格伸缩性
Eij:第j种产品对第i种产品的交叉伸缩性
N :脂肪的使用量
M :奶粉的使用量
xi :第i种产品的价格提高百分数
二.建立模型:
三.分解过程:
建立目标函数:
四种产品的价格提高百分数为x(i)。首先考虑牛奶和奶油的生产,牛奶和奶油的生产只与价格伸缩性Ei有关。
P1=297(1+x1),S1=482(1-x1E1)
P2=720(1+x2),S2=32*(1-x2E2)
再考虑奶酪1和奶酪2的情况。奶酪1和奶酪2的生产与两个因素有关,即与价格伸缩性E以及交叉伸缩性Eij有关。
P3=1050(1+x3),P4=815(1+x4);
S3=21(1-x3E3+x4E12),S4=7(1-x4E4+x3E21)
所以可计算得总销售收入得到目标函数:
‚考虑限制条件:
问题中的限制条件主要有两个,即脂肪的使用量和奶粉的使用量。根据模型中建立的公式可得
脂肪的使用量:
N=S1*4%+S2*80%+S3*35%+S4*25%≤60
奶粉的使用量:
M=S1*9%+S2*2%+S3*30%+S4*40%≤70
四.编程求解:
接下来便可以通过Lingo编写程序,把数学语言翻译成计算机语言,来求解max z 的值。
通过Lingo编写程序,
model:
!e为E,f为往年价格,s为往年销量,p为售价,x为销量
a b c为原材料消耗量
xs为生产量;
sets:
pro/1,2,3,4/:p,e,f,s,x,a,b,c,xs;
endsets
data:
e=0.4 2.7 1.1 0.4;
f=297 720 1050 815;
s=482 32 21 7;
a=0.04 0.80 0.35 0.25;
b=0.09 0.02 0.30 0.40;
c=87 18 35 35;
enddata
max=@sum(pro:xs*p);
e(1)*(p(1)-f(1))/f(1)=(s(1)-x(1))/s(1);
e(2)*(p(2)-f(2))/f(2)=(s(2)-x(2))/s(2);
e(3)*(p(3)-f(3))/f(3)-(0.1*((p(4)-f(4))/f(4)))=(s(3)-x(3))/s(3);
e(4)*(p(4)-f(4))/f(4)-(0.4*((p(3)-f(3))/f(3)))=(s(4)-x(4))/s(4);
@for(pro:xs<=x);
@sum(pro:xs*a)<=60;
@sum(pro:xs*b)<=70;
@for(pro:xs<=x);
五.得出最优解:
根据Lingo程序求得在使总收入最大的情况下:
各种产品的生产量为:
S1=334.47吨,S2=48.36吨,S3=20.12吨,S4=3.56吨;
各种产品的价格:
P1=524.27元/吨,P2=583.65元/吨,P3=1223.09元/吨,P4=1950.68元/吨;
最大总收入Max z=235127.6元;
此时脂肪与奶粉原料的使用量分别为60吨和38.53吨。
参考文献:
[1].潘驰宇.奶制品生产与定价[J].中国科技博览,2012,9;
[2].赵静,但琦等. 数学建模与数学实验. 北京:高等教育出版社,2008年.