一、线性规划
(一)模型理论
1.线性规划的基础表达式
其中c,x,bep,b,lb,ub均为列向量,A与bep则为矩阵。
上部分为目标函数(在该表达式中求的是最小值,而因为matlab的函数只能求解最小值,因此我们可以将其视为标准函数)
下半部分为约束条件,用s.t.表示,包括了三个部分:
为线性不等式约束,
为线性等式约束,
为决策函数的上界向量与下界向量。
这三个部分不会同时存在。
2.线性规划举例
这里我们给出基础表达式中列向量和矩阵在该例题中的值。
c = [-2, -3, 5]
x = [x1, x2, x3]
Aeq = [[1 , 1 , 1]]
bep = [7]
A = [ [1, 3 , 1] , [-2 , 5 , -1]]
b = [12 , -10]
lb = [0 ,0 ,0]
3.线性回归matlab代码
此处我们使用1.2中给出的例题举例:
c = [-2;-3;5];
A = [1,3,1;-2,5,-1];
b = [12;-10];
Aep = [1,1,1];
bep = [7];
lb = [0;0;0];
[x,y] = linprog(c,A,b,Aep,bep,lb);
x,y=-y
运行结果为:
注:在某些时候,不满足非基础表达式的问题是可以转化为基础表达式的线性回归模型。
(二)案例
1. 准备建模:
准备建模阶段需要了解已知部分中各个变量的含义和交易过程。
最开始时拥有M的资金,投资到n个项目中,假设每个项目中得到的资金为xi,并且需要qi的手续费,因此满足:。本题为多目标规划问题,需要满足利润最高与风险最小两个问题。我们可以将该问题通过限制系数的方法转换为线性归化问题。
2.模型建立:
多目标规划模型:
其中第一个目标方程为最大利润、第二个方程为最大风险的最小值。
线性规划模型
与多目标规划不同的是,模型一我们假设最大风险的最小值为一个定值,这里由于最大风险是会随M的变化而变化且呈现线性关系的,因此我们不妨设存在为风险系数,始终小于定值a。
同理,我们建立模型求解最小利润为k的情况下的最大风险的最小值。
3.模型的求解
我们以模型一为例,我们可以求解a不同的情况下,最大利润是多少。
(代码略,有时间来补)
我们这里引用b站数学建模老哥的结果
二、整数规划
注意:整数规划不能直接通过线性规划最优解四舍五入获得。
(一)理论模型
1.整数规划的基础表达式
整数规划与线性规划的本质上是一样的,整数规划仅仅比线性规划多了一个整数的约束条件,如:
2.整数规划的求解
(1)分支定界法
分支定界法的核心是将整数规划修改为线性回归问题。
基本步骤:①求解整数规划模型对应的松弛规划模型
②取松弛规划模型的一个x,对其向下取整表示为[x]
③先后将x<=[x]与下>=[x]+1带入到松弛模型中,若其解均为整数则保留,若不为整数 则重复②③重新选取一个x
④将所有整数解带入到目标函数中,求最大(或最小)值。
例:
解:解决该方程的松弛方程为
选取作为第一个x,则约束条件分别增加了两个:
①当增加了
可以求解得
可以看到结果中存在分数不全是整数,因此需要新增约束条件,这个我们放到后面讨论。
②当增加
可以求解得
可以看到结果全部为整数,因此这组解是可行解
现在我们进一步讨论第一种情况,同理可以将约束条件分为两个:
①当增加了
可以解得
可以看到这组解也是可行解。
②当增加
可以解得
综上所述,可行解有两个,Z的最大值为14。