数学建模:非线性规划:二次规划问题

一、定义

如果规划模型的目标函数是决策向量的二次函数,约束条件都是线性的,那么这个模型称为二次规划(QP)模型。二次规划模型的一般形式为

 

二、性质

凸性判定准则

二次规划问题的凸性完全由Hessian矩阵H决定:

​严格凸QP​​:H正定(所有特征值>0),有唯一全局最优解

​凸QP​​:H半正定(所有特征值≥0),可能有多个最优解

​非凸QP​​:H不定,存在多个局部最优解

判定条件

二次规划的最优解必须满足​KKT条件​:

原始可行性​​:x满足所有约束条件

对偶可行性​​:拉格朗日乘子非负

互补松弛条件​​:乘子与约束的乘积为零

平稳性条件​​:∇f(x) + Aᵀλ = 0

三、内点法求解

代码

clear
clc

%生成数据
%资产数量
nAssets = 5;             
%生成收益率数据
returns = randn(100, nAssets);
%预期收益率
mu = mean(returns)';    
%协方差矩阵
Sigma = cov(returns);        
%目标收益率
targetReturn = 0.05;                    

%构建QP参数
H = Sigma;                
%无线性项
f = zeros(nAssets, 1);        
%预算约束和收益约束、约束右端项
Aeq = [ones(1, nAssets); mu'];         
beq = [1; targetReturn];          
lb = zeros(nAssets, 1);       

%求解
[w, risk] = quadprog(H, f, [], [], Aeq, beq, lb);

%绘图
%创建图形窗口
figure('Position', [100, 100, 800, 600]);

%资产配置比例
h_bar = bar(w, 'FaceColor', 'flat'); % 使用彩色条形图

%添加数值标签
for i = 1:length(w)
    text(i, w(i)+0.01, sprintf('%.2f%%', w(i)*100), ...
        'HorizontalAlignment', 'center', ...
        'FontSize', 10);
end
title('最优资产配置比例', 'FontSize', 12, 'FontWeight', 'bold');
xlabel('资产编号', 'FontSize', 10);
ylabel('配置比例', 'FontSize', 10);
grid on;
set(gca, 'XTick', 1:nAssets, 'XTickLabel', compose('资产%d',1:nAssets));
ylim([0, max(w)*1.2]);

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值