导航:首页 > 五金知识 > matlab整数规划工具箱

matlab整数规划工具箱

发布时间:2022-07-18 15:00:48

❶ 在用matlab的优化工具箱中的linprog求解器或者其他求解器求最优值时,怎么设置变量约束条件为整数

可以用分支定界法求解整数规划问题,给你源码:
function [x,fm] = IntProgFZ(f,A,b,Aeq,beq,lb,ub)
x = NaN;
fm = NaN;
NF_lb = zeros(size(lb));
NF_ub = zeros(size(ub));
NF_lb(:,1) = lb;
NF_ub(:,1) = ub;
F = inf;

while 1
sz = size(NF_lb);
k = sz(2);
opt = optimset('TolX',1e-9);
[xm,fv,exitflag] = linprog(f,A,b,Aeq,beq,NF_lb(:,1),NF_ub(:,1),[],opt);
if exitflag == -2
xm = NaN;
fv = NaN;
end
if xm == NaN
fv = inf;
end
if fv ~= inf
if fv < F
if max(abs(round(xm) - xm))<1.0e-7
F = fv;
x = xm;
tmpNF_lb = NF_lb(:,2:k);
tmpNF_ub = NF_ub(:,2:k);
NF_lb = tmpNF_lb;
NF_ub = tmpNF_ub;
if isempty(NF_lb) == 0
continue;
else
if x ~= NaN
fm = F;
return;
else
disp('不存在最优解!');
x = NaN;
fm = NaN;
return;
end
end
else
lb1 = NF_lb(:,1);
ub1 = NF_ub(:,1);
tmpNF_lb = NF_lb(:,2:k);
tmpNF_ub = NF_ub(:,2:k);
NF_lb = tmpNF_lb;
NF_ub = tmpNF_ub;
[bArr,index] = find(abs((xm - round(xm)))>=1.0e-7);
p = bArr(1);
new_lb = lb1;
new_ub = ub1;
new_lb(p) = max(floor(xm(p)) + 1,lb1(p));
new_ub(p) = min(floor(xm(p)),ub1(p));
NF_lb = [NF_lb new_lb lb1];
NF_ub = [NF_ub ub1 new_ub];
continue;
end
else
tmpNF_lb = NF_lb(:,2:k);
tmpNF_ub = NF_ub(:,2:k);
NF_lb = tmpNF_lb;
NF_ub = tmpNF_ub;
if isempty(NF_lb) == 0
continue;
else
if x ~= NaN
fm = F;
return;
else
disp('不存在最优解!');
x = NaN;
fm = NaN;
return;
end
end
end
else
tmpNF_lb = NF_lb(:,2:k);
tmpNF_ub = NF_ub(:,2:k);
NF_lb = tmpNF_lb;
NF_ub = tmpNF_ub;
if isempty(NF_lb) == 0
continue;
else
if x ~= NaN
fm = F;
return;
else
disp('不存在最优解!');
x = NaN;
fm = NaN;
return;
end
end
end
end

❷ matlab整数规划问题

clc;
Maxf=-100000;
s=0.0;
k=1;
z1=zeros(50,1);
z2=zeros(50,1);
for i=0:1:66
for j=0:1:100-i
if (2*j-i)>=0
s=98*i+277*j-i^2-0.3*i*j-2*j^2;
if (s-Maxf)==0
k=k+1;
z1(k)=i;
z2(k)=j;
else
if s>Maxf
Maxf=s;
z1(1)=i;
z2(1)=j;
k=1;
end
end
end
end
end
Str=strcat('最大值MAX为:',num2str(Maxf));
disp(Str);
x1=z1(1:k)
x2=z2(1:k)
我已经验证过了~OK的哈!

❸ MATLAB优化工具箱--线性规划问题

这个是整数规划。
你得用别的函数。
比如:ipslv_mex,这个好像得去网上载。

f=ones(7,1);
A=[1,4,0,0,3,1,2;1,0,3,0,1,2,0;1,0,0,2,0,0,1];
b=[50;30;25];
intlist=zeros(7,1); %代表专7个变属量都是整数
xmin=ones(7,1); %代表7个变量的最小值均为1
xmax=inf*ones(7,1); %代表7个变量最大值均为无穷大
ctype=ones(3,1); %代表三个方程都是Ax=b,大于等于的话为1,小于等于的话为-1
[x,how]=ipslv_mex(f,A,b,intlist,xmax,xmin,ctype)
结果为:
x =

16
1
1
4
9
1
1

❹ matlab整数规划程序

可以用YALMIP工具箱解整数规划

定义变量:
sqdvar()实型
intvar()整型
binvar()0-1型
设定目标函数 :
f=目标函数
设定限定条件:
F=set(限定条件)
多个限定条件用加号相连:
F=set(限定条件)+set(限定条件1)+set(限定条件2)……
求解: solvesdp(F,f)
这里解得是F条件下目标函数f的最小值,要求最大值f前面加个负号
求解之后查看数值 :
double(f) double(变量)

intvar(m,n):生成整数型变量;

sdpvar(m,n):生产变量;

solvesdp(F,f):求解最优解(最小值),其中F为约束条件(用set连接),f为目标函数

double:显示求解的答案

有个例子:
已知非线性整数规划为:
Max z=x1^2+x2^2+3*x3^2+4*x4^2+2*x5^2-8*x1-2*x2-3*x3-x4-2*x5
s.t.
0<=xi<=99(i=1,2,...,5)
x1+x2+x3+x4+x5<=400
x1+2*x2+2*x3+x4+6*x5<=800
2*x1+x2+6*x3<=800
x3+x4+5*x5<=200
matlab中输入
>> x=intvar(1,5);
f=[1 1 3 4 2]*(x'.^2)-[8 2 3 1 2]*x';F=set(0<=x<=99);
F=F+set([1 1 1 1 1]*x'<=400)+set([1 2 2 1 6]*x'<=800)+set(2*x(1)+x(2)+6*x(3)<=800);
F=F+set(x(3)+x(4)+5*x(5)<=200);solvesdp(F,-f);
max=double(f)
sx=double(x)
* Starting YALMIP integer branch & bound.
* Lower solver : fmincon-standard
* Upper solver : rounder
* Max iterations : 300

Warning : The relaxed problem may be nonconvex. This means
that the branching process not is guaranteed to find a
globally optimal solution, since the lower bound can be
invalid. Hence, do not trust the bound or the gap...
Node Upper Gap(%) Lower Open
1 : -8.020E+004 0.03 -8.025E+004 2
2 : -8.020E+004 0.03 -8.025E+004 1
3 : -8.020E+004 0.00 -8.020E+004 2
+ 3 Finishing. Cost: -80199

max =

80199

sx =

53 99 99 99 0

❺ MatLab求解整数规划

各种主流的方法不让用,各种主流的程序也不让用,老师到底想要你们做什么?

MATLAB的整数规划能力比较有限,早期主要就是0-1二值规划的bintprog,后来遗传算法ga可以求解不带等式约束的非线性规划,再后来还有个整数线性规划的函数intlinprog。第三方比较著名的有个个人作者编写的分支定界法函数bnb20。

❻ 整数规划该如何用MATLAB求解

整数线性规划要下载工具箱来解决,很麻烦
用LINGO吧,方便简单,下面附带一个例子:
LINGO软件用于线性或非线性规划(无论是连续规划还是整数规划),因此包含了LINDO的功能。在LINGO中,所有的函数均以“@”符号开始,如约束中@gin(x1)表示x1为整数,用bin(x1)表示x1为0-1整数。

钢管下料问题的求解
以切割后剩余的总余料量最小为目标,建立LINGO模型:
min= 3*x1+x2+3*x3+3*x4+x5+x6+3*x7;
4*x1+3*x2+2*x3+x4+x5 >=50;
x2+2*x4+x5+3*x6 >= 20;
x3+x5+2*x7 >= 15;
@gin(x1);
@gin(x2);
@gin(x3);
求解可以得到最优解如下:
OBJECTIVE FUNCTION VALUE
1) 27.00000
VARIABLE VALUE REDUCED COST
X1 0.000000 3.000000
X2 12.000000 1.000000
X3 0.000000 3.000000
X4 0.000000 3.000000
X5 15.000000 1.000000
X6 0.000000 1.000000
X7 0.000000 3.000000

❼ 如何用matlab实现线性规划的整数求解

matlab 整数规划工具箱

❽ matlab怎么实现整数线性规划或者非线性规划

intlinprog 函数,用于进行整数规划和整数非整数的混合规划
[x,y,flag]=intlinprog(f,[1,2],A,b,C,d,xm,xM)

阅读全文

与matlab整数规划工具箱相关的资料

热点内容
钢筋机械连接头个数怎么计算 浏览:730
自动供水装置设计图 浏览:785
机械手的论文提纲怎么写 浏览:970
水管阀门漏水是什么原因 浏览:96
轴承蜕皮怎么 浏览:326
x5排气阀门 浏览:491
铁桶改成工具箱 浏览:855
轴承运输多少钱 浏览:731
超声波玻璃管用什么颜色 浏览:530
进水阀门怎么包 浏览:512
混凝土试块抗压强度试验自动化装置 浏览:539
塑料筐生产设备哪里买 浏览:85
自动扣紧装置 浏览:33
捷达运动仪表怎么刷431 浏览:279
台州光谷机械有限公司怎么样 浏览:821
加装可变排气阀门有影响吗 浏览:288
注塑机机械手吸盘吸不住怎么办 浏览:11
电容隔直装置作用 浏览:512
实验器材包括什么材料吗 浏览:112
双轴式秸秆收割粉碎装置设计 浏览:600