收藏 分销(赏)

数学实验非线性规划.docx

上传人:仙人****88 文档编号:11692539 上传时间:2025-08-05 格式:DOCX 页数:25 大小:187.67KB 下载积分:10 金币
下载 相关 举报
数学实验非线性规划.docx_第1页
第1页 / 共25页
数学实验非线性规划.docx_第2页
第2页 / 共25页


点击查看更多>>
资源描述
《大学数学实验》作业 非线性规划 班级: 姓名: 学号: 日期: 目录 【实验目的】 3 【实验内容】 3 题目1(课本习题第九章第4题) 3 【第(1)问求解】 3 【第(2)问求解】 7 【第(3)问求解】 7 【拓展实验、思考、对比、分析】 8 【本题小结】 10 题目2(课本习题第九章第8题) 10 【模型建立】 11 【模型求解】 14 【第(1)问求解】 14 【第(2)问求解】 20 【第(3)问求解】 22 【拓展实验、思考、对比、分析】 23 【本题小结】 25 【实验心得、体会】 25 注:本实验作业脚本文件均以ex9_4_1形式命名,其中ex代表作业,9_4_1表示第九章第四小题第一个程序。 自编函数均以exf9_4_1形式命名,exf代表作业函数,9_4_1表示第九章第四题第一个自编函数。 【实验目的】 1. 掌握用MATLAB优化工具箱和LINGO解非线性规划的方法; 2. 练习建立实际问题的非线性规划模型。 【实验内容】 题目1(课本习题第九章第4题) 某公司将3种不同含硫量的液体原料(分别记为甲、乙、丙)混合生产两种产品(分别记为A,B)。按照生产工艺的要求,原料甲、乙必须首先倒入混合池中混合,混合后的液体再分别与原料丙混合生产A,B。已知原料甲、乙、丙的含硫量分别是3%,1%,2%,进货价格分别为6千元/t,16千元/t,10千元/t;产品A,B的含硫量分别不能超过2.5%,1.5%,售价分别为9千元/t,15千元/t。根据市场信息,原料甲、乙、丙的供应量都不能超过500t;产品A,B的最大市场需求量分别为100t,200t。 (1) 应如何安排生产? (2) 如果产品A的最大市场需求量增长为600t,应如何安排生产? (3) 如果乙的进货价格下降为13千元/t,应如何安排生产?分别对(1)、(2)两种情况进行讨论。 【第(1)问求解】 【模型建立】 (1)模型 该题为带约束非线性规划问题,其模型包含决策变量、目标函数和约束条件。 决策变量:设生产A所用的甲、乙、丙原料的量分别为x1,x2,x3;生产B所用的甲、乙、丙原料的量分别为x4,x5,x6;所生产的A、B产品的量分别为x7,x8。单位均为t。 目标函数:设总获利为z,同时设销售收入为z1,进货费用为z2(单位均为千元)。则总获利 z=z1-z2 由题中条件,销售收入 z1=9x7+15x8 进货费用 z2=6(x1+x4)+16(x2+x5)+10(x3+x6) 故可得,总获利 z=z1-z2 =-6x1-16x2-10x3-6x4-16x5-10x6+9x7+15x8 即为本题的目标函数。 (2)约束条件 浓度约束:按照生产工艺的要求,原料甲、乙必须先混合再分别与原料丙混合生产A,B。故有 x1x5=x2x4 含硫量约束:要求产品A,B的含硫量分别不能超过2.5%,1.5%。故可得 3%x1+1%x2+2%x3≤2.5%x73%x4+1%x5+2%x6≤1.5%x8 即 3x1+x2+2x3-2.5x7≤03x4+x5+2x6-1.5x8≤0 原料供应约束:原料甲、乙、丙的供应量都不能超过500t。故得 x1+x4≤500x2+x5≤500x3+x6≤500 市场需求约束:产品A,B的最大市场需求量分别为100t,200t。故有 x7≤100x8≤200 A、B产量约束:生产的A、B产品的量与所用的甲、乙、丙原料的量所满足的关系 x7=x1+x2+x3 x8=x4+x5+x6 非负约束:x1,x2,x3,x4, x5,x6,x7,x8均为非负。 (3)模型整理 将前面分析得到的带约束非线性规划模型化为如下标准形式: minz=fx s.t. c(x)=0 A1x≤b1 A2x=b2 x≥v1 其中,x=x1,x2,x3,x4, x5,x6,x7,x8 将目标函数系数以及各约束条件的数值代入标准形式,可得各函数表达式及参数数值分别为 fx=6x1+16x2+10x3+6x4+16x5+10x6-9x7-15x8 cx=x1x5-x2x4 A1=[1 0 0 1 0 0 0 0; 0 1 0 0 1 0 0 0; 0 0 1 0 0 1 0 0; 0 0 0 0 0 0 1 0; 0 0 0 0 0 0 0 1; 3 1 2 0 0 0 -2.5 0; 0 0 0 3 1 2 0 -1.5] b1=[500 500 500 100 200 0 0] A2=[1 1 1 0 0 0 -1 0; 0 0 0 1 1 1 0 -1] b2=[0 0] v1=[0 0 0 0 0 0 0 0] 【模型求解及结果分析】 根据已经建立好并化为标准形式的模型,利用Matlab优化工具箱对该模型进行求解。 对于第(1)问,编写运行代码如下: %-----------------作业题9_4目标函数M文件(含梯度以及黑塞矩阵)exf9_4_1--------------- function [f,g,H]=exf9_4_1(x) f=6*x(1)+16*x(2)+10*x(3)+6*x(4)+16*x(5)+10*x(6)-9*x(7)-15*x(8); % 给出分析梯度 if nargout>1 g=[6,16,10,6,16,10,-9,-15]; end % 给出黑塞矩阵(由于本题不能使用大规模算法,因此该黑塞矩阵不会被使用) if nargout>2 H=zeros(8,8); end %-----------------------作业题9_4约束函数M文件(含梯度)exf9_4_2------------------ function [c1,c2,gc1,gc2]=exf9_4_2(x) c1=0; c2=x(1)*x(5)-x(2)*x(4); % 给出分析梯度 if nargout>2 gc1=[0 0 0 0 0 0 0 0]'; gc2=[x(5),-x(4),0,-x(2),x(1),0,0,0] '; end %-----------------------------作业题9_4函数M文件源程序ex9_4---------------------- clc;clear; % 输入不等式约束 A1=[1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 3 1 2 0 0 0 -2.5 0 0 0 0 3 1 2 0 -1.5]; b1=[500 500 500 100 200 0 0]; % 输入等式约束A2矩阵 A2=[1 1 1 0 0 0 -1 0 0 0 0 1 1 1 0 -1]; b2=[0 0]; %等式约束 % 迭代初值 x0=[10 10 10 10 10 10 10 10]; % 自变量下限 v1=[0 0 0 0 0 0 0 0]; % 采用中等规模算法模式 opt=optimset('largescale','off'); % 利用fmincon函数求解 [x,fv,ef,out,lag,grad,hess]=fmincon(@exf9_4_1,x0,A1,b1,A2,b2,v1,[],@exf9_4_2,opt) 得到运行结果为: 最优解x = 0, 0, 0, 0, 100, 100, 0, 200T f=-400(最大利润z=-f=400,单位:千元) exitflag=1 (收敛) out =iterations: 12(迭代次数) funcCount: 108(函数调用次数) algorithm: 'medium-scale: SQP, Quasi-Newton, line-search'(所使用的算法为中等规模SQP方法) grad=[6, 16, 10, 6, 16, 10-9, -15] (输出x点的梯度grad) hess=[限于篇幅,数据略] (输出x点黑塞矩阵hess) 从而可得,应进乙、丙各100t,且全部用于生产B产品200t,可获得最大利润40万元。 【第(2)问求解】 当产品A的最大市场需求量增长为600t时:则需要修改A产品市场需要需求为 x7≤600 即b1向量变为b1=[500 500 500 600 200 0 0],并适当调整初值,比如调为x0=[300 0 200 100 200 300 500 500]。因此只需要在主程序中作相应修改,将不等式约束范围变化即可求解。得到结果如下: 最优解x = 300, 0, 300, 0, 0, 0, 600, 0T f=-600 (最大利润z=-f=600,单位:千元) 从而可得,当产品A的最大市场需求量增长为600t时,应该进货甲、丙各300t且全部用来生产A产品600t,可获得最大利润60万元. 【第(3)问求解】 如果乙的进货价格下降为13千元/t:则利润函数应变为 f=9x7+15x8-6(x1+x4)-13(x2+x5)-(x3+x6),只需修改目标函数M文件即可。 ①若在第(1)问的条件下,即此时A的最大市场需求量为100t时,运行结果为 最优解x = 0, 0, 0, 500, 150, 0, 0, 200T f=-750 (最大利润z=-f=750,单位:千元) 从而可得,如果乙的进货价格下降为13千元/t且当产品A的最大市场需求量为100t时,应该进货甲50t、乙150t且全部用来生产B产品200t,可获得最大利润75万元。 ②若在第(2)问的条件下,即此时A的最大市场需求量为600t时,运行结果为 最优解x = 450, 150, 0, 0, 0, 0, 600, 0T f=-750 (最大利润z=-f=750,单位:千元) 从而可得,如果乙的进货价格下降为13千元/t且当产品A的最大市场需求量为600t时,应该进货甲450t、乙150t且全部用来生产A产品600t,可获得最大利润75万元. 综上所述,可得最优生产安排如下面得表1: 表1:不同情形下的最优生产安排 情况 原料甲/t 原料乙/t 原料丙/t 产出A/t 产出B/t 总利润/万元 第一问 0 100(全生产B) 100(全生产B) 0 200 40 第二问 300(全生产A) 0 300(全生产A) 600 0 60 第三问(1) 50(全生产B) 150(全生产B) 0 0 200 75 第三问(2) 450(全生产A) 150(全生产A) 0 600 0 75 【拓展实验、思考、对比、分析】 ① 代初值的对比、分析 可以借助本题模型研究迭代初值对求解结果的影响。以本题第(1)问的模型为例,选取不同初值,得到结果如下面的表2: 表2:第(1)问不同初值时的求解结果 初值x0 最优解x 最大利润值/万元 迭代次数(iterations) 函数调用次数 (funcCount) 最优解处的梯度grad [0,0,0……0] [0,0,0,0,0.6667,0.6667,0,1.3333] 2.6667 3 27 [6, 16, 10, 6, 16, 10-9, -15] [100,100……100] [0,0,0,0,100,100,0,200] 40 12 108 [6, 16, 10, 6, 16, 10-9, -15] [0,0,0,0,99,9,0,0,199] [0,0,0,0,100,100,0,200] 40 5 45 [6, 16, 10, 6, 16, 10-9, -15] [-100,-100……-100] 接近零向量 几乎为0 2 18 [6, 16, 10, 6, 16, 10-9, -15] 由表可以观察到如下结果: ①初值在一定范围内,得到的解是一致的。如表第3和第2行。此时初值均在经历若干次迭代后最终收敛于同一个最优解。 ②不同的初值迭代次数不一样,且解越靠近最优解迭代次数越少,如表第3行。这也是很容易理解的(选取初值不当错误停止的情况除外,比如第4行)。因此,在求解问题的过程中,应当尽量选取靠近最优解的点作为初值,从而提高程序运行效率。 ③初值超过了一定范围后,可能无法得到符合实际要求的最优解甚至迭代过程不收敛。如表第1、4行。因此初值的选取会影响到所求得结果。可见对于某些算法而言,初值的选取是很重要的。 ②梯度算法的对比、分析 本题在求解过程中默认使用了目标函数和约束函数的数值梯度。也可以通过改变控制参量使用分析梯度。(也可以自定义目标函数的黑塞矩阵,但由于本题模型含有非线性约束,故不能使用大规模算法,因而对于本题而言,在函数M文件中输入的黑塞矩阵不会被使用)。 在目标函数M文件以及约束函数M文件中分别写入目标函数和约束函数的分析梯度(根据nargout的数值决定函数被调用时是否输出分析梯度),具体见前面所列的函数M文件代码。然后运行 opt2=optimset(opt,'GradObj','on','GradCon','on'); [x,fv,ef,out,lag,grad,hess]=fmincon(@exf8_10_1,x0,A1,b1,A2,b2,v1,[],@exf8_10_2,opt2) 得到的结果与数值梯度算法所得结果一起列表如下(以第一问中的模型为例进行对比分析): 表3:数值梯度和分析梯度所得结果 梯度算法 最优解x 最大利润值/万元 迭代次数 (iterations) 函数调用次数 (funcCount) 数值梯度 [0,0,0,0,100,100,0,200] 40 12 108 分析梯度 [0,0,0,1.027,101.027, 97.946,0,200] 39.79 14 27 可见,数值梯度计算结果与分析梯度计算结果略有不同。迭代次数和函数调用次数也不同。但对于本题模型而言,数值梯度和分析梯度差别不大。 ③对拉格朗日乘子的探索、分析 可以借助本题模型,仿照前一题对结果输出的lag结构变量即程序停止时的相应约束的拉格朗日乘子作一些分析。 拉格朗日乘子包含了程序运行的有关信息,其维数等于约束条件的个数,其非零分量对应于起作用的约束,即等号严格成立时的约束。比如,以第一问模型为例,运行lag.ineqlin可得到 lag.ineqlin=[0, 0, 0, 0, 2, 0, 6] 该乘子对应于约束不等式约束A1x≤b1。此时如果将b1的第6个分量加1,即令b1=[500 500 500 100 200 0 1],运行程序,可得到目标函数的值变为406。而改动前目标函数的值为400。406-400=6,该值恰为lag.Ineqlin第6分量的值。可见,拉格朗日乘子表示的是对应约束的右端项增加一个单位时(其它条件不变),目标函数的增加量(在一定的适用范围以内)。 【本题小结】 ①本题对应的模型为带约束非线性规划问题。利用Matlab的优化工具箱可以求解本题的模型。求得:对于第1问:应进乙、丙各100t,且全部用于生产B产品200t,可获得最大利润40万元。对于第2问:应该进货甲、丙各300t且全部用来生产A产品600t,可获得最大利润60万元;对于第3(1)问:应该进货甲50t、乙150t且全部用来生产B产品200t,可获得最大利润75万元;对于第3(2)问:应该进货甲450t、乙150t且全部用来生产A产品600t,可获得最大利润75万元。 ②可以借助本题模型分析初值对求解结果的影响。在一定范围内,不同初值得到的解是一致的。但不同的初值迭代次数不一样,且解越靠近最优解迭代次数越少;初值超过了一定范围后,可能无法得到符合实际要求的最优解甚至迭代过程不收敛。因此,在求解问题的过程中,应当尽量选取靠近最优解的点作为初值,从而提高程序运行效率。 ③本题可以使用目标函数以及约束函数的数值梯度和分析梯度分别求解。数值梯度计算结果与分析梯度计算结果完全一致,但迭代次数和函数调用次数不同。 ④可以借助本题模型继续对拉格朗日算子的含义作一些分析。其零分量表示与之对应的约束条件不起作用,而非零分量对应于等号严格成立时的约束,且有一定的实际含义:拉格朗日乘子表示的是对应约束的右端项增加一个单位时(其它条件不变),目标函数的增加量(当然,仅在一定的适用范围以内成立)。 题目2(课本习题第九章第8题) 美国某3种股票(A, B, C)12年(1943—1954年)的价格(已经包括了分红在内)每年的增长情况如表1所示(表中还给出了相应年份的500种股票的价格指数的增长情况)。例如,表中第一个数据1.300的含义是股票A在1943年的年末价值是其年初价值的1.300倍,即收益为30%,其余数据的含义依此类推。假设你在1955年时有一笔资金准备投资这三种股票,并期望年收益率至少达到15%,那么你应当如何投资?此外,考虑以下问题: (1)当期望的年收益率在10%~100%之间变化时,投资组合和相应的风险如何变化? (2)假设除了上述三种股票外,投资人还有一种无风险的投资方式,如购买国库券。假设国库券的年收益率为5%,如何考虑该投资问题? (3)假设你手上目前握有的股票比例为:股票A占50%,B占35%,C占15%。这个比例与你得到的最优解可能有所不同,但实际股票市场上每次股票买卖通常总有交易费,例如按交易额的1%收取交易费,这时你是否仍需要对手上的股票进行买卖(换手),以便满足“最优解”的要求? 表4 年份 股票A 股票B 股票C 股票指数 1943 1.300 1.225 1.149 1.258997 1944 1.103 1.290 1.260 1.197526 1945 1.216 1.216 1.419 1.364361 1946 0.954 0.728 0.922 0.919287 1947 0.929 1.144 1.169 1.057080 1948 1.056 1.107 0.965 1.055012 1949 1.038 1.321 1.133 1.187925 1950 1.089 1.305 1.732 1.317130 1951 1.090 1.195 1.021 1.240164 1952 1.083 1.390 1.131 1.183675 1953 1.035 0.928 1.006 0.990108 1954 1.176 1.715 1.908 1.526236 【模型建立】 设购买A, B, C三种股票的比例分别为,记股票A, B, C的收益率分别为,根据题意,是一个随机变量,投资的总收益率也是一个随机变量。用和分别表示随机变量的数学期望和方差,表示两个随机变量的协方差,则根据1943年~1954年的统计数据,用excel求解期望、方差、协方差可以得到以下结果: (注:使用Excel软件计算方差有两种函数:VAR函数和VARP函数,两种方法所用公式不同,适用场合也不同: VAR函数的计算公式为:,代表样本方差; VARP函数的计算公式为:,代表总体方差。 而在本实验条件下,我选用的是VARP函数) 表5:excel求解各股票期望、方差及协方差 年份 股票A 股票B 股票C 1943 1.3 0.3 1.225 0.225 1.149 0.149 1944 1.103 0.103 1.29 0.29 1.26 0.26 1945 1.216 0.216 1.216 0.216 1.419 0.419 1946 0.954 -0.046 0.728 -0.272 0.922 -0.078 1947 0.929 -0.071 1.144 0.144 1.169 0.169 1948 1.056 0.056 1.107 0.107 0.965 -0.035 1949 1.038 0.038 1.321 0.321 1.133 0.133 1950 1.089 0.089 1.305 0.305 1.732 0.732 1951 1.09 0.09 1.195 0.195 1.021 0.021 1952 1.083 0.083 1.39 0.39 1.131 0.131 1953 1.035 0.035 0.928 -0.072 1.006 0.006 1954 1.176 0.176 1.715 0.715 1.908 0.908 E 1.08908333 0.08908333 1.21366667 0.21366667 1.23458333 0.23458333 D 0.00990691 0.00990691 0.05352572 0.05352572 0.08637458 0.08637458 cov covAB 0.011373 covBC 0.050807 covAC 0.011985 于是,投资的总期望收益率为 .. 用总收益率的方差衡量投资的风险。投资总收益率的方差为 根据题目有以下约束条件: 购买比例约束: 非负约束: 一般来说,希望投资的收益率高而风险小,即最大而最小,是一个多目标优化问题,通常需转化为单目标优化问题来求解。 要求年收益率至少为15%,则有: 因此模型可以化为: s.t. 为了利用MATLAB优化工具箱求解二次规划,所以将模型化为如下形式: s.t. 其中,,, ,,,,。 【模型求解】 根据上述模型编写程序如下: %-----------------------------作业题9_8函数M文件源程序ex9_8_1---------------------- clear;clc; H=[0.0198 0.0227 0.0240 0.0227 0.1070 0.1016 0.0240 0.1016 0.1728]; %给出目标函数二次型的矩阵 A1=[-0.0891 -0.2137 -0.2346]; b1=-0.15; A2=ones(1,3); b2=1; v1=zeros(1,3); %约束条件 x0=[0.5,0.3,0.1]; %给出初值 [x,fv,ef,out,lag]=quadprog(H,[0 0 0],A1,b1,A2,b2,v1,[],x0) 输出结果: 运行程序输出结果如下: x = 0.5301 0.3573 0.1126 fv = 0.0205 即A, B, C三种股票的购买比例分别为53.01%、35.73%、11.26%时,投资风险最小,方差为0.0205。 【第(1)问求解】 求当期望的年收益率在10%~100%之间变化时投资组合和相应的风险的变化情况。 改变约束条件,用for循环来实现年收益率的修改,b1从10%开始以0.1%的间隔增加到100%,输出每次改变后风险变化的情况及相应的投资组合情况。 修改模型如下 s.t. Matlab程序如下: %--------------------------作业题9_8函数M文件源程序ex9_8_2------------------------ clear;clc; H=[0.0198 0.0227 0.0240 0.0227 0.1070 0.1016 0.0240 0.1016 0.1728]; A1=[-0.0891 -0.2137 -0.2346]; A2=ones(1,3); b2=1; v2=ones(1,3); v1=zeros(1,3); x0=[0 0 0]; for i =1:1:901 b1=-0.001*i-0.099; [x(:,i),fv(i)]=quadprog(H,[0 0 0],A1,b1,A2,b2,v1,v2,x0) end y=0.1:0.001:1; figure(1) plot(y,x(1,:),'-'),grid xlabel('期望收益率') ylabel('最佳A股比例') title('期望收益率10%~100%变化时,最小投资风险时A股比例') figure(2) plot(y,x(2,:),'-'),grid xlabel('期望收益率') ylabel('最佳B股比例') title('期望收益率10%~100%变化时,最小投资风险时B股比例') figure(3) plot(y,x(3,:),'-'),grid xlabel('期望收益率') ylabel('最佳C股比例') title('期望收益率10%~100%变化时,最小投资风险时C股比例') figure(4) plot(y,fv(:),'-'),grid xlabel('期望收益率10%~100%') ylabel('投资风险(方差值)') title('期望收益率10%~100%变化时,最小投资风险(方差值)变化情况') 输出结果如下: 图1:期望收益率10%~100%变化时,最小投资风险(方差值)变化情况 图2:期望收益率10%~100%变化时, A股比例变化情况 图3:期望收益率10%~100%变化时, B股比例变化情况 图4:期望收益率10%~100%变化时,C股比例变化情况 观察图2,3,4得到,当期望收益率从10%变化到100%,投资风险最小时相应的投资比例,并不总能满足约束条件。因此现将图2、3、4放大(关注x≤0.25的情况),并标注转折点,进一步观察: 图5:期望收益率10%~100%变化时,A股比例变化情况 图6:期望收益率10%~100%变化时,B股比例变化情况 图7:期望收益率10%~100%变化时,C股比例变化情况 图8:期望收益率10%~100%变化时,最小投资风险(方差值)变化情况 【结果分析】 由图像可以看出期望的收益率在10~23.5%之间变化的趋势,分析综述如下: (1) 观察图5-8可以发现,每幅图像均可以分为3段,转折点的横坐标(期望收益率)都是相同的(x=0.219、0.235),前3幅在转折点之间图像均为线性。投资风险与期望收益关系是非线性。 (2) 发现当期望收益率大于23.5%时,c股持股比例已经达到饱和100%,A、B股持股比例均为0,也就是说图像上x值大于0.235的部分无实际意义, A股持股比例小于0,C股持股比例大于1,是不可能的。此时该问题无解,也即三种股票投资的最大收益率只能达到23.5%。 (3) 观察图5可得:当期望收益在10~21.9%的范围内增长时,股票A的投资比例从91.45%线性下降为0,当期望收益在21.9~23.5%的范围内增长时,股票A的投资比例不变,均为0。 期望收益最大值为23.5%。 (4) 观察图6可得:当期望收益在10~21.9%的范围内增长时,股票B的投资比例从7.356%线性增加到74.64%,当期望收益在21.9~23.5%的范围内增长时,股票B的投资比例从74.64%线性降到0。 期望收益最大值为23.5%。 (5) 观察图7可得:当期望收益在10~21.9%的范围内增长时,股票C的投资比例从1.192%线性增加到25.36%,当期望收益在21.9~23.5%的范围内增长时,股票C的投资比例从25.36%线性增加到100%。 期望收益最大值为23.5%。 (6) 观察图8可得:当期望收益在10~21.9%的范围内增长时,投资风险从1.046%增加到5.459%,且增加速度较为缓慢。当期望收益在21.9~23.5%的范围内增长时,股票C的投资比例从5.459%增加到8.653%。投资风险增加较快。期望收益最大值为23.5%。 总结:在三种股票中,股票A收益小、风险小,股票C收益大但风险也大,在总钱数一定的情况下,我们要在收益率和风险之间进行折中选择。在预期收益相对较低的情况下(比如预期收益为10%左右时),可以考虑投资大量投资风险小收益小的A股,随着收益率要求的增加A股要逐渐退出,而选择风险中等收益中等的B股,所以在预期收益为10%~21.9%时,B股持股率大量上升,风险相对平稳上升。但当预期收益要求极高(超过21.9%)时,B股的收益也无法满足要求,只能大量投资风险最大,收益率最大的C股,风险急剧上升。 【第(2)问求解】 加入无风险投资方式后投资方案的变化 设国债的购买比例为,收益率为,则由题意有,,模型修改如下: s.t. 此时,,, ,,,, 。 修改程序如下: %------------------------作业题9_8函数M文件源程序ex9_8_3------------------------ clear;clc; H=[0.0198 0.0227 0.0240 0 0.0227 0.1070 0.1016 0 0.0240 0.1016 0.1728 0 0 0 0 0]; A1=[-0.0891 -0.2137 -0.2346 -0.05]; b1=-0.15; A2=ones(1,4); b2=1; v1=zeros(1,4); x0=[0.5,0.3,0.1,0]; [x,fv,ef,out,lag]=quadprog(H,[0 0 0 0],A1,b1,A2,b2,v1,[],x0) 输出结果如下: x = 0.0879 0.4289 0.1428 0.3405 fv = 0.0191 此时的投资方案应该为:股票A, B, C的投资比例分别为8.79%、42.89%、14.28%,国债的投资比例应该为34.05%,此时的最小风险为0.0191,最大收益率为15%。 【第(3)问求解】 在股票持有比例为:股票A占50%,B占35%,C占15%的情况下,考虑按交易额的1%收取交易费,是否仍需要对手上的股票进行买卖(换手),以便满足“最优解”的要求? 此时目标函数不改变,应该对约束条件进行相应的修改: 将现有持股比例与最优解(A, B, C三种股票持股比例分别为53.33%、33.41%、13.27%,时风险最小,收益15%)进行对比,发现为了达到最优解,应增大股票A的持有比例,减小股票B、C的持有比例。 由于交易费的存在,所以股票持有比例的总和应小于1,因此该约束条件改为: 化简整理后得到: 总收益率的约束也相应调整为: 化简整理后得到: 另外,为了使换手后的股票持有比例与最优解尽可能地接近,还应该加入约束: 修改程序如下: %--------------------------作业题9_8函数M文件源程序ex9_8_4------------------------ clear;clc; H=[0.0198 0.0227 0.0240 0.0227 0.1070 0.1016 0.0240 0.1016 0.1728]; A1=[-0.0791 -0.2037 -0.2446]; b1=-0.143; A2=ones(1,3); b2=1; v1=[0.5 0.35 0]; v2=[1 1 0.15] x0=[0.5,0.3,0.1]; [x,fv,ef,out,lag]=quadprog(H,[0 0 0],A1,b1,A2,b2,v1,v2,x0) 输出结果如下: x = 0.5274 0.3500 0.1226 fv = 0.0207 由此可知,换手后股票A, B, C的投资比例应分别为52.74%、35%、12.26%,即应增加股票A的持有比例至52.74%,保持股票B的持有比例不变,减少股票C的持有比例至12.26%,此时的风险为0.0207,收益率为14.3%。 【拓展实验、思考、对比、分析】 本题也是非线性规划问题,考虑用fmincon函数求解。 编写matlab程序如下: %-------------作业题9_8目标函数M文件(含梯度以及黑塞矩阵)exf9_8_1------------------ function [f,g,H]=exf9_8_1(x) f=0.0099*x(1)^2 +0.0535*x(2)^2+0.0864*x(3)^2+0.0227*x(1) *x(2)+0.0240* x(1) *x(3) +0.1016* x(2) *x(3) % 给出分析梯度 if nargout>1 g(1)= 0.0099*x(1)* 2+0.0227 *x(2)+0.0240*x(3) g(2)= 0.0535*x(2)* 2+0.0227 *x(1)+0.1016*x(3) g(3)= 0.0864*x(3)* 2+0.0240* x(1)+0.1016*x(2) end % 给出黑塞矩阵(由于本题不能使用大规模算法,因此该黑塞矩阵不会被使用) if nargout>2 H=[0.0099* 2, 0.0227, 0.0240 0.0227, 0.0535* 2, 0.1016 0.0240, 0.1016, 0.0864* 2]; end %---------------------作业题8_10约束函数M文件(含梯度) exf9_8_2--------------------- function [c1,c2,gc1,gc2]=exf9_8_2(x) c1=0; c2=0; % 给出分析梯度 if nargout>2 gc1=[0 0 0]'; gc2=[0 0 0]'; end %------------------------作业题9_8函数M文件源程序ex9_8_5------------------------ clc;clear; % 输入不等式约束 A1=[-0.0891 -0.2137 -0.2346]; b1=-0.15; % 输入等式约束A2矩阵 A2=ones(1,3); b2=1; % 自变量下限 v1=zeros(1,3); % 迭代初值 x0=[0,0,0]; % 采用中等规模算法模式 opt=optimset('largescale','off'); % 利用fmincon函数求解 [x,fv,ef,out,lag,grad,hess]=fmincon(@exf9_8_1,x0,A1,b1,A2,b2,v1,[],@exf9_8_2,opt) 得到如下结果: x = 0.5301 0.3573 0.1126 fv = 0.0205 ef = 5 即期
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服