使用linprog()函数前需要化为标准型
说人话就是
目标函数改成求最小
不等式改成小于等于
如果是原本是求最大的,想要换成求最小值你就把目标函数右边乘以一个 -1 ,(负数最小的时候绝对值最大),具体到matlab上,就是f写成 -f,最后把返回的x带入到原目标函数即可,即x*f
下面是样例,我们后面开始逐一讲解
下面的x统一返回的是目标函数取最优时的坐标,并且是列向量
x=linprog(f,A,b)(最简单形式)
不相同的不等式的系数用分号间隔(回车也行)
b在这里是不等式对应小于等于的常数,依次顺下来的
目标函数
最后使用linprog(目标函数,不等式系数矩阵,不等式常数向量)
x=linprog(f,A,b,Aeq,beq)(含有等式)
在上面的代码基础上,加上下面这两段代码
x=linprog(f,A,b,Aeq,beq,lb,ub)(同时含有上下限)
lb是下限向量lower bounds
ub是上限向量upper bounds
[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,X0)(较常用形式)
x是取最优值对应的坐标
fval是最优值
X0是决策变量的初始值
如果有以下初始值
则加上最后一句