数学建模——线性规划

导论

        在Matlab中线性规划的标准形式如下:注意,这里x为列向量,f做了转置

在matlab中求解线性规划的命令为:

[x, fval] = linprog(f, A, b);
[x, fval] = linprog(f, A, b, Aeq, beq);
[x, fval] = linprog(f, A, b, Aeq, beq, lb, ub);

当上述命令中对应位置没有约束时,使用空矩阵代替。

例子

        

clear
clc
f = [-2; -3; 5];
A = [-2 5 -1; 1 3 1];
b = [-10; 12];
Aeq = [1 1 1];
beq = [7];
lb = zeros(3, 1);
ub = [inf inf inf];
[x, fval] = linprog(f, A, b, Aeq, beq, lb, ub);
fprintf('最小值点:x1 = %f; x1 = %f; x1 = %f\n最小值:fval = %f\n', x(1), x(2), x(3), fval)

可改为线性规划的典型问题

投资的收益和风险(多目标规划转换为单目标规划)

多目标规划

模型一

模型二

模型三

模型二求解

思路为直接使用非线性规划(目标函数非线性),线性规划解法待补充

clear
clc

r = [0.05 0.28 0.21 0.23 0.25];
q = [0 0.025 0.015 0.055 0.026];
p = [0 0.01 0.02 0.045 0.065];
A = -(r-p);
b = -0;
Aeq = ones(1, 5)-p;
beq  = 1;
xl = zeros(5, 1);
xu = ones(5, 1);
x0 = rand(5, 1);
[x, y] = fmincon(@fun, x0, A, b, Aeq, beq, xl, xu);
function f = fun(x)
q = [0; 0.025; 0.015; 0.055; 0.026];
f = max(q.*x);
end

将V看做一个新的变量xn+1代入目标函数与约束条件,可转化为线性规划问题

clear
clc

r = [0.05 0.28 0.21 0.23 0.25];
q = [0 0.025 0.015 0.055 0.026];
p = [0 0.01 0.02 0.045 0.065];

f = [0; 0; 0; 0; 0; 1];
A = [-(r-p) 0; diag(q) -ones(5, 1)];
b = [0.2 0 0 0 0 0];
Aeq = [ones(1, 5)-p 0];
beq  = 1;
xl = zeros(6, 1);
xu = ones(6, 1);
[x, y] = linprog(f, A, b, Aeq, beq, xl, xu);

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值