第一周:线性规划、整数规划、非线性规划、二次规划
- 线性规划函数:linprog()
线性规划的标准形式
线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是小于号也可以是大于号。为了避免这种形式多样性带来的不方便,matlab规定线性规划的标准形式为:
它有两种常用形式:
X = linprog(f,A,b,Aeq,beq,LB,UB)
[X, FVAL] = linprog(f,A,b,Aeq,beq,LB,UB)
注:x返回决策向量的取值,fval返回目标函数的最优解;为价值向量,A,b对应线性不等式约束,Aeq和beq对应线性等式约束;lb,ub分别表示下界和上界。
例题:
2.整数规划
规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中, 变量限制为整数,则称为整数线性规划。如不加特殊说明,一般指整数线性规划。
整数规划在 Matlab 上的标准形式是:
整数规划:
intlinprog() 的用法解释:
X = intlinprog(f,intcon,A,b,Aeq,beq,LB,UB) 与上面一样,但是第二个参数 intcon 是指定要限定哪一个 x 为整数,如果想要限定x2,x10 为整数,那就是 [2,10]。
例题非线性规划
如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。
线性规划与非线性规划的区别:
线性规划的最优解只能在其可行域的边界上达到;而非线性规划的最优解则可能在可行域的任意一点达到。
例题
二次规划
若某非线性规划的目标函数为自变量x的二次函数,约束条件又全是现行的,称这种规划为二次规划。
二次规划的数学模型可表示如下:
min xHx +f
x
st
Ax<=b
Aeq * x=beq
lb<=x<=ub
命令是[x,fval]=quadprog(H,f,A,b,Aeq,beq,lv,ub,x0,options)
x0是x的初始值。
注意:小心H和的写法,其他与前面类似。
参考链接:https://blog.****.net/weixin_39679367/article/details/84845953在这里插入代码片