线性规划2024.1.13

利用optimproblem

prob=optimproblem("ObjectiveSense","max")%默认为min
x=optimvar("x",3,1,"LowerBound",0);%定义3行一列的变量,下限值为0
prob.Objective=%目标函数,标量
prob.Constraints.con1=x(1)+x(2)-x(3)==z;%举例等式约束
prob.Constraints.con2=c*x<=b;%举例不等式约束
[s,v]=solve(prob);%v为目标函数值
xx=s.x;%xx为对应的x值

prob=optimproblem();
x=optimvar("x",4,4,"LowerBound",0);%矩阵下标从1开始
prob.Objective=2800*(x(1,1)+x(2,1)+x(3,1)+x(4,1))+4500*(x(1,2)+x(2,2)+x(3,2))+6000*(x(1,3)+x(2,3))+7300*x(1,4);
%prob.Objective=2800*sum(x(:,1))+4500*(sum(x(1:3,2)))+6000*(sum(x(1:2,3)))+7300*x(1,4);

prob.Constraints.con1=x(1,1)+x(1,2)+x(1,3)+x(1,4)>=15;
prob.Constraints.con2=x(1,2)+x(1,3)+x(1,4)+x(2,1)+x(2,2)+x(2,3)>=10;
prob.Constraints.con3=x(1,3)+x(1,4)+x(2,2)+x(2,3)+x(3,1)+x(3,2)>=20;
prob.Constraints.con4=x(1,4)+x(2,3)+x(3,2)+x(4,1)>=12;
[s,v]=solve(prob);
xx=s.x;
disp(xx);

相关操作

sum(x);%求和,默认按列求和得行向量
sum(x,2);%按行求和
sum(x,"all");%对所有元素求和得标量

\sum_{i=1}^{n}x_{i,j}=sum(x,1)

\sum_{j=1}^{n} x_{i,j}=sum(x,2)

\sum_{i=1}^{n}\sum_{j=1}^{m} c_{i,j}\ast a_{i,j}

sum(c.*a,"all");
disp(x);%查看变量值

可以将数据保存到记事本中通过readmatrix导入,便于矩阵运算

c=readmatrix("data.txt");

还可以将结果输出到表格中保存,使用writematrix

writematrix(xx,"data1.xlsx")

对于有绝对值的转化为线性规划

\left | x \right | = u+v \ \ \ \ \ \ x=u-v                 

u=\frac{\left | x \right |-x}{2} \ \ \ \ \ \ \ \ v=\frac{\left | x \right |+x}{2}

转为求解对应的未知变量u\ v

再用x=u-vx

clc,clear
prob=optimproblem();
u=optimvar("u",4,1,"LowerBound",0);
v=optimvar("v",4,1,"LowerBound",0);
prob.Objective=[1,2,3,4]*(u+v);
prob.Constraints.con=[1,-1,-1,1;1,-1,1,-3;1,-1,-2,3;]*(u-v)<=[-2;-1;-1/2];
[s,v]=solve(prob);
x=s.u-s.v;
disp(x);

optimproblem=min\left ( max\left | \varepsilon_{i} \right | \right )

v=max\left | \varepsilon_{i} \right |

optimproblem=min \ v

s.t.\left\{\begin{matrix} x_i-y_i<=v \\ y_i-x_i<=v \end{matrix}\right.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值