x =
5.9113 35.2075 wmax =
-118.9437
最优值为118.9437千元,最优定价为5.9113元,最优广告费投入为35.2075千元。
五、模型验证
为了得到一个准确的最优值,在模型4.3基础上引入遗传算法的ga()函数求最优值。利用遗传算法ga()函数(见附录6)求解最优值的结果如下: x =
5.9103 19.6218 f =
-111.3133 flag =
Optimization terminated: maximum number of generations exceeded. out =
randstate: [35x1 double] randnstate: [2x1 double] generations: 100 funccount: 2000
message: 'Optimization terminated: maximum number of generations exceeded.' 将所得到的 x =
5.9103 19.6218
作为初值代入fminsearch()函数进行迭代
>>[x,wmax]=fminsearch(@profit,[5.9103,19.6218]) x =
5.9113 35.2076
wmax =
-118.9437
得到最终利润最优值为118.9437千元,最优定价为5.9113元,最优广告费投入为35.2075千元。与模型4.3的结果一致。 因此可以认为模型4.3所得出的结论是合理的。
六、模型评价
在模型4.3的求解最优值上直接利用最优化函数fminsearch()求解最优利润的方法过于简单,因为fminsearch函数的迭代需要在最优值附近,才能迭代出最好的效果,如果数据过于复杂,可能导致的偏差比较大,得出的最优值就有可能偏离实际最优值。因此,需要用到遗传算法中的ga()函数来求取最优值附近的值,并用这个值作为初值代入原模型4.3,才能得到准确的真实最优值。这次研究的课题的数据简单,因此比较第一次求最优值的迭代中很轻易就能得到最优值,但是验证的模型在遇到更复杂更庞大的数据时也能够应对自如,能够在模型4.3的基础上加以验证和保证,最终得到肯定确定的答案。
参考文献:
[1]刘卫国 MATLAB程序设计教程(第二版) 中国水利水电出版社2010,2
[2]张志涌 杨祖樱 MATLAB教程(R2006a-R2007a) 北京航空航天大学出版社2008,4
[3]胡蓉 MATLAB软件与数学实验 经济科学出版社 2010,8
[4]薛定宇 陈阳泉 高等应用数学问题的MATLAB求解 北京 清华大学出版社2004,8
附录
附录一
plot()函数关于售价与预期销售量关系图 程序: x=2:0.5:6;
y=[41 38 34 32 29 28 25 22 20];
plot(x,y);xlabel('售价');ylabel('预期销售量');
附录二
plot()函数关于广告费与销售增长因子关系图 程序: z=0:10:70;
h=[1.00 1.40 1.70 1.85 1.95 2.00 1.95 1.80];
plot(z,h);xlabel('广告费');ylabel('销售增长因子');
附录三
售价与预期销售量的拟合关系函数
程序: x=2:0.5:6;
y=[41 38 34 32 29 28 25 22 20]; p1=polyfit(x,y,1) xi=2:0.01:6;
yi=polyval(p1,xi);
plot(x,y,'o',xi,yi);xlabel('售价');ylabel('预期销售量');
附录四
广告费与销售量因子的拟合关系函数 程序: z=0:10:70;
h=[1.00 1.40 1.70 1.85 1.95 2.00 1.95 1.80]; p2=polyfit(z,h,2) zi=0:0.01:70; hi=polyval(p2,zi);
plot(z,h,'o',zi,hi); xlabel('广告费');ylabel('销售增长因子');
附录五
利润与售价,广告费的关系函数profit M文件程序:
function w=profit(x)
w=-(x(1)-2)*(-5.1333*x(1)+50.4222)*(-0.0004*x(2)^2+0.0409*x(2)+1.0188)+x(2);%x(1)表示售价;x(2)表示广告费
附录六
遗传算法ga()函数 程序:
ff=gaoptimset;
ff.Generations=2000; ff.PopulationSize=80;
ff.CrossoverFcn=@crossoverheuristic; [x,f,flag,out]=ga(@profit,2,ff)
附录七
利润w与售价x,广告投资z的三维曲线关系图 程序:
x=linspace(2,6,10); z=linspace(0,70,10);
y=(-5.133.*x+50.422);
h=-0.0004.*z.^2+ 0.0409.*z+ 1.0188; w=(x-2).*y.*h-z; plot3(x,z,w,'o'); grid on;
xlabel('x售价');ylabel('z广告投资');zlabel('w利润');