1998年全国大学生数学建模竞赛A题

目录

题目

问一

用lingo求解

用matlab求解

问2


题目

市场上有n 种资产(如股票、债券、…)Si ( i=1,…n) 供投资者选择,某公司有数额为M 的一笔相当大的资金可用作一个时期的投资。公司财务分析人员对这n 种资产进行了评估,估算出在这一时期内购买Si 的平均收益率为 ri,并预测出购买Si的风险损失率为qi 。考虑到投资越分散,总的风险越小,公司确定,当用这笔资金购买若干种资产时,总体风险可用所投资的Si 中最大的一个风险来度量。

购买Si 要付交易费,费率为 pi,并且当购买额不超过给定值 ui时,交易费按购买ui 计算(不买当然无须付费)。另外,假定同期银行存款利率是r0, 且既无交易费又无风险。( r0=5% )

1)已知n = 4 时的相关数据如下:

Si    ri(%)  qi(%)  pi(%)  ui(元)   
S1   28     2.5     1         103
S2   21     1.5     2         198
S3   23     5.5     4.5       52
S4    25    2.6     6.5       40

试给该公司设计一种投资组合方案,即用给定的资金 ,有选择地购买若干种资产或存银行生息,使净收益尽可能大,而总体风险尽可能小。

2)试就一般情况对以上问题进行讨论,并利用以下数据进行计算。

Si ri/% qi/% pi/% ui/元
S1 9.6 42 2.1 181
S2 18.5 54 3.2 407
S3 49.4 60 6 428
S4 23.9 42 1.5 549
S5 8.1 1.2 7.6 270
S6 14 39 3.4 397
S7 40.7 68 5.6 178
S8 31.2 33.4 3.1 220
S9 33.6 53.3 2.7 475
S10 36.8 40 2.9 248
S11 11.8 31 5.1 195
S12 9 5.5 5.7 320
S13 35 46 2.7 267
S14 9.4 5.3 4.5 328
S15 15 23 7.6 131

问一求解

用lingo求解:

model:
sets:
type/1..5/:c,x;
rate/1..4/:;
link(type,rate):asset,A;
point/1..11/:w,q_lim,v_lim;
endsets
data:
asset=5 0 0 028 2.5 1 10321 1.5 2 19823 5.5 4.5 5225 2.6 6.5 40;
w_start=0;
w_add=0.1;!权重初值和每次求解的增量;
enddatasubmodel sub:
@for(type(i):c(i)=@if(x(i)#eq#0,0,@smax(A(i,3)*A(i,4),A(i,3)*x(i)))); !计算购买各资产的交易费;
q=@max(type(i):A(i,2)*x(i));          !投资组合x的风险(以各类资产中最大的风险为度量);
v=@sum(type(i):A(i,1)*x(i)-c(i));  !投资组合x的平均净利润;
@sum(type(i):x(i)+c(i))=10000;          !约束条件;
endsubmodel       submodel obj:
min=w_sum*q-(1-w_sum)*v;
endsubmodelcalc:
@for(link(i,j)|j#le#3:A(i,j)=asset(i,j)*0.01);     !#le#左边运算符<=右边运算符;
@for(link(i,j)|j#eq#4:A(i,j)=asset(i,j));
!系统参数设置;
!@set('terseo',1);!只输出简单的求解信息;
!@set('stawin',0);!关闭求解状态窗口;
!分别求解不同广告费上限的优化问题;
@for(point(n):w_sum=w_start+(n-1)*w_add;@solve(obj,sub);!求解子模型;
!记录计算结果;w(n)=w_sum;q_lim(n)=q;v_lim(n)=v;);
!显示所记录的结果;
@write('w   风险   净利润',@newline(1));!@write函数用于输出结果,@newline即输出新行;
@for(point(n):@write(@format(w(n),'#12.1f'),@format(q_lim(n),'#12.2f'),@format(v_lim(n),'#12.1f'),@newline(1)));
endcalc end

结果:

还可以对权重w按0.001的间隔取值计算并作图:

lingo:

sets:
type/1..5/:c,x;
rate/1..4/:;
link(type,rate):asset,A;
point/1..1001/:w,q_lim,v_lim;
endsets
data:
asset=5 0 0 028 2.5 1 10321 1.5 2 19823 5.5 4.5 5225 2.6 6.5 40;
w_start=0;
w_add=0.001;!权重初值和每次求解的增量;
@ole('C:\Users\烟雨潇潇\Desktop\新建文件夹\CSDN\数模4.8例2.xlsx',q)=q_lim;
@ole('C:\Users\烟雨潇潇\Desktop\新建文件夹\CSDN\数模4.8例2.xlsx',v)=v_lim;
enddata

matlab:

clc,clear
q=xlsread('C:\Users\烟雨潇潇\Desktop\新建文件夹\CSDN\数模4.8例2.xlsx',1,'A1:A1000');
v=xlsread('C:\Users\烟雨潇潇\Desktop\新建文件夹\CSDN\数模4.8例2.xlsx',1,'B1:B1000');
plot(q,v)
xlabel('风险/元')
ylabel('收益/元')
title('例2的有效前沿')
grid on  %网格线

用matlab求解(失败):

主程序:

clear,clc
global w  %设定风险q和净收益v的权重分别为w,1-w
global asset
global type
%资产的数据矩阵,第一行为银行存款
%列1平均收益率,列2风险损失率,列3交易费率,列4定值
asset=[5 0 0 0;28 2.5 1 103;21 1.5 2 198;23 5.5 4.5 52;25 2.6 6.5 40];
asset(:,1:3)=asset(:,1:3)*0.01;%前三列用百分率
type=size(asset,1); %维度为1时,size返回矩阵的行数(资产种类)
% fmincon(@fun,x0,A,b,Aeq,beq,lb,ub,nonlcon(非线性约束),options)  %求fun最小值,一般fval=fun(x)
%约束条件为Aeq*x = beq 和 A*x <= b
x_final=zeros(type,11);%记录x
q=[];%记录投资组合x的风险
v=[];      %投资组合x的平均净收益
gs = GlobalSearch;
for i=1:11w=(i-1)/10;%[x,fval]=ga(@minfun,5,[],[],[],[],zeros(5,1),[],@nonfun);%x=x';problem = createOptimProblem('fmincon','objective',@minfun,'x0',zeros(5,1),'Aineq',[],'bineq',[],'Aeq',[],...
'beq',[],'lb',zeros(type,1),'ub',[],'nonlcon',@nonfun);
%'options',optimset('Algorithm','SQP','Disp','none')x = run(gs,problem);x_final(:,i)=x;q=[q,max(asset(:,2).*x)];v=[v,sum(asset(:,1).*x-cfun(x))];
end

minfun.m

function[y]=minfun(x)
global w
global asset
%x=x';
q=max(asset(:,2).*x);             %投资组合x的风险(以各类资产中风险最大的一个度量)
v=sum(asset(:,1).*x-cfun(x));      %投资组合x的平均净收益
y=w*q-(1-w)*v;                    %设定风险q和净收益v的权重分别为w,1-w

cfun.m

function[c]=cfun(x)      %cfun函数计算购买各资产的交易费
global type
global asset
c=zeros(type,1);          %列向量
for i=1:typeif x(i)<=0.06c(i,1)=0;elsec(i,1)=max(asset(i,3)*asset(i,4),asset(i,3)*x(i));  %每种资产购买额x(i)不超过定值时,交易费按购买定值计算end
end

nonfun.m

function[g,ceq]=nonfun(x)%非线性约束:g(x)<=0 ,ceq(x)=0
%x=x';
g=[];
m=10000;
ceq=sum(x+cfun(x))-m;

matlab尝试过很多次,下图是最好的一次,但是cfun里要设置x<=0.06,x==0会和书上结果大不一样。

问2

简单的代入就可以了,如果w以0.1为间隔,运行15秒即可出结果。

1998年全国大学生数学建模竞赛A题——投资的收益和风险数模P133|lingo,matlab相关推荐

  1. 2021 年高教社杯全国大学生数学建模竞赛A题分析

    2021 年高教社杯全国大学生数学建模竞赛A题分析 题目 赛题分析 前言 问题一分析 问题二分析 问题三分析 题目 A 题 "FAST"主动反射面的形状调节 中国天眼--500 米 ...

  2. 2020年高教社杯全国大学生数学建模竞赛 C题思路

    2020年高教社杯全国大学生数学建模竞赛 C题 中小微企业的信贷决策 本文旨在为广大热爱建模的朋友们提供2020年数学建模C题的思路和解法. 问题回顾 在实际中,由于中小微企业规模相对较小,也缺少抵押 ...

  3. 2020年全国大学生数学建模竞赛B题穿越沙漠问题——建立整数线性规划模型(ILP)——通过LINGO求解

    2020年全国大学生数学建模竞赛B题 穿越沙漠 题目是讲玩家在不同地图下穿越沙漠,所获得的资金数要最多(大概是这个意思).然后通过文章的描述又总结了N个约束条件.整体的思路就是对资金最大化作为目标函数 ...

  4. 2020年高教社杯全国大学生数学建模竞赛C题 第一问详细解答+代码

    2020年高教社杯全国大学生数学建模竞赛C题 第一问详细解答+代码 本文摘自小编自己的参赛论文与经历,小编获得了2020年高教社杯国奖,有问题的同学们可私聊博主哦. 1. 问题分析 问题一主要围绕信贷 ...

  5. 【数学建模】2003年全国大学生数学建模竞赛B题求解

    目录 [数学建模]2003年全国大学生数学建模竞赛B题求解 [数学建模]2003年全国大学生数学建模竞赛B题求解 model: title CUMCM-2003B-01; sets: cai / 1. ...

  6. 2022年全国大学生数学建模竞赛C题思路

    一.思路获取方式 获取代码方式: 2022年全国大学生数学建模竞赛赛题思路 备注: 点击上面蓝色字体2022年全国大学生数学建模竞赛赛题思路,扫描上面二维码,付费29.9元订阅海神之光博客付费专栏20 ...

  7. 2022年全国大学生数学建模竞赛E题思路

    一.思路获取方式 获取代码方式: 2022年全国大学生数学建模竞赛赛题思路 备注: 点击上面蓝色字体2022年全国大学生数学建模竞赛赛题思路,扫描上面二维码,付费29.9元订阅海神之光博客付费专栏20 ...

  8. 2022年全国大学生数学建模竞赛A题思路

    一.思路获取方式 获取代码方式: 2022年全国大学生数学建模竞赛赛题思路 备注: 点击上面蓝色字体2022年全国大学生数学建模竞赛赛题思路,扫描上面二维码,付费29.9元订阅海神之光博客付费专栏20 ...

  9. 尖峰法聚类:2021 年高教社杯全国大学生数学建模竞赛 E题 中药材的鉴别 问题1

    PeakCluster是Lu优化库中的一个函数,该函数利用数据曲线尖峰形状和位置进行聚类分析. 例子:2021 年高教社杯全国大学生数学建模竞赛 E题 中药材的鉴别 问题1:根据附件 1 中几种药材的 ...

最新文章

  1. 阿里p8呕心沥血整理出来的,APP UI自动化测试思路总结,速看
  2. 宏BOOST_TEST_TRAIT_TRUE的用法实例
  3. 2014\Province_C_C++_B\2 切面条
  4. jstat分析_jstat –分析
  5. f3arra1n3.4.1版本_Sysmon v11.1新版本功能测试报告
  6. pcp pmda mysql_linux下的mysql的安装
  7. 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_37、分布式缓存Redis介绍...
  8. 3d Max如何移除和取消网格显示
  9. editorloop 占用_【交换机在江湖-维护无忧系列】CPU占用率高故障专题(3)-常见故障案例...
  10. python项目实战:天眼查询你所需的公司信息
  11. recovery 恢复出厂设置失败Data wipe failed
  12. UPnP 体系架构和基本原理 —— UPnP的描述文件
  13. 面试官问你Java线程池--怎么样回答才能让面试官知道你真的懂了!
  14. android aidl混淆代码,Android代码混淆
  15. HTTP概念协议报文结构请求响应数据报分析
  16. ospf理论概述.md
  17. 让数字预失真的故障排除和微调不再难 必备攻略请查收
  18. 用 Python 爬取糗事百科
  19. 3.11 CMMI3级——组织培训(Organizational Training)
  20. microsoft edge浏览器朗读卡顿解决办法

热门文章

  1. 十年一梦(炒股的经历)
  2. PendingIntent重定向:一种针对安卓系统和流行App的通用提权方法——BlackHat EU 2021议题详解 (下)
  3. Android Fragment切换动画(滑入滑出)
  4. php 输入 输出,php的文件输入输出流php://input
  5. ExtJS 4.2心得和总结:布局系统详解(Ext.layout.container)
  6. PDF文档怎么添加水印?手机就能轻松操作
  7. (写给 未来的 自己) --- 我的明天
  8. C# 14440 125K串口 rfid门禁
  9. DRM架构介绍(一)
  10. 德国计算机语言学专业哪个学校好,德国热门学科大学排名情况一览