Matlab优化工具箱简介

一、MATLAB求解优化问题的主要函数及其输入输出变量

二、投资的收益和风险实例

5、模型1的求解

%model sm22_1 求解线性规划问题
clc,clear
a=0;
hold on
while a<0.5
    c=[-0.05,-0.27,-0.19,-0.185,-0.185];
    c=c';
    A=[zeros(4,1),diag([0.025,0.015,0.055,0.026])]; %diag(v,k)创建对角阵
    b=a*ones(4,1);
    Aeq=[1,1.01,1.02,1.045,1.065];
    beq=1;
    LB=zeros(5,1);
    [x,Q]=linprog(c,A,b,Aeq,beq,LB); %线性规划
    Q=-Q;
    plot(a,Q,'*r');
    a=a+0.001;
end
xlabel('a'),ylabel('Q');

模型2的求解

%sm22_2.m 主函数
clc,clear
%输入盈利率
%k=input('输入盈利率(<=max(qi)):');
k=0.05;
range=[0.05,0.27,0.19,0.185,0.185];
%开始在k可能范围,做盈利与风险的关系图
hold on
while k<=max(range)
    %x的初始值,随意设定
    x0=ones(5,1)*0.2;
    %线性不等式约束
    A=[-0.05,-0.27,-0.19,-0.185,-0.185];
    b=-k;
    %线性等式约束Aeq*X = beq
    Aeq=[1,1.01,1.02,1.045,1.065];
    beq=1;
    %边界约束条件Lb <= X <= Ub
    Lb=zeros(5,1);
    Ub=[];
    [x,fval,maxfval,exitflag,output]=fminimax(@sm22_2Fun,x0,A,b,Aeq,beq,Lb,Ub);
    plot(k,maxfval,'*r');
    k=k+0.01;
end
xlabel('k'),ylabel('fvalmax');


%sm22_2的目标函数sm22_2Fun.m
function f=sm22_2Fun(x)
q=[0,2.5,1.5,5.5,2.6];
%返回各自的目标函数
for i=1:5
    f(i)=x(i)*q(i);
end

猜你喜欢

转载自blog.csdn.net/wys7541/article/details/81221427