麻烦您帮我看一下这段matlab程序,整数线性规划的,我运行了之后和实际不符,不知道是哪里出错了,主要是实现min -a*x1-b*x2s.t a*x1+b*x2=a+b则循环min -a*x1-b*x2s.t a*x1+b*x2=a+b是否成立,成立的话继续循环

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 10:11:29

麻烦您帮我看一下这段matlab程序,整数线性规划的,我运行了之后和实际不符,不知道是哪里出错了,主要是实现min -a*x1-b*x2s.t a*x1+b*x2=a+b则循环min -a*x1-b*x2s.t a*x1+b*x2=a+b是否成立,成立的话继续循环
麻烦您帮我看一下这段matlab程序,整数线性规划的,我运行了之后和实际不符,不知道是哪里出错了,
主要是实现min -a*x1-b*x2
s.t a*x1+b*x2=a+b
则循环min -a*x1-b*x2
s.t a*x1+b*x2=a+b是否成立,成立的话继续循环,算出最终的m
c=[-0.3;-0.2];
A=[0.3 0.2];
b=1.1;
[x,fval]=linprog(c,A,b,[],[],zeros(2,1));
m=x(1)+x(2);
l=1.1-2*x(2)*0.2;
while l>=0.5
c=[-0.3;-0.2];
A=[0.3 0.2];
b=l;
[x,fval]=linprog(c,A,b,[],[],zeros(2,1));
m=m+x(1)+x(2)
l=1.1-2*x(2)*0.2;
end
程序里a和b我已经赋值为0.3和0.2了

麻烦您帮我看一下这段matlab程序,整数线性规划的,我运行了之后和实际不符,不知道是哪里出错了,主要是实现min -a*x1-b*x2s.t a*x1+b*x2=a+b则循环min -a*x1-b*x2s.t a*x1+b*x2=a+b是否成立,成立的话继续循环
clear all
clc
a=0.3;b=0.2;
c = [-a;-b];
A=[a b];
b=[1.1];
Aeq=[];
beq=[];
[x,fval] = linprog(c,A,b,Aeq,beq);
m=x(1)+x(2);
I=1.1-2*b*x(2)-(a+b);
while I>=0
c = [-a;-b];
A=[a b];
b=[1.1];
Aeq=[];
beq=[];
[x,fval] = linprog(c,A,b,Aeq,beq);
m=x(1)+x(2);
I=1.1-2*b*x(2)-(a+b);
end
x(1)
x(2)
x3=ceil(x(1));
x4=ceil(x(2));
x5=floor(x(1));
x6=floor(x(2));
min1=-a*x3-b*x4;
min2=-a*x3-b*x6;
min3=-a*x5-b*x4;
min4=-a*x5-b*x6;
V=[ min1 x3 x4;
min2 x3 x6;
min3 x5 x4;
min4 x5 x6];
[C0,I0] =min(V(:,1));
C0
V(I0,2)
V(I0,3)
本问题应还有一个约束条件:x1、x2取整数.故它是一个整数线性规划问题.这里把它当成一个线性规划来解,求得其最优解刚好是整数则是该整数规划的最优解.若用线性规划解法求得的最优解不是整数,将其取整后不一定是相应整数规划的最优解,这样的整数规划应用专门的方法求解.故自己考量是不是最优解.