没有合适的资源?快使用搜索试试~ 我知道了~
整数规划和多目标规划模型.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 42 浏览量
2021-10-12
14:37:45
上传
评论
收藏 250KB DOCX 举报
温馨提示
试读
20页
。。。
资源推荐
资源详情
资源评论
1 整数规划的 MATLAB 求解方法
(一) 用 MATLAB 求解一般混合整数规划问题
由于 MATLAB 优化工具箱中并未提供求解纯整数规划和混合整数规划的
函数,因而需要自行根据需要和设定相关的算法来实现。现在有许多用户发布的
工具箱可以解决该类问题。这里我们给出开罗大学的
Sherif 和 Tawfik 在
MATLAB Central 上发布的一个用于求解一般混合整数规划的程序,在此命名
为 intprog,在原程序的基础上做了简单的修改,将其选择分枝变量的算法由自
然序改造成分枝变量选择原则中的一种,即:选择与整数值相差最大的非整数
变量首先进行分枝。intprog 函数的调用格式如下:
[x,fval,exitflag]=intprog(c,A,b,Aeq,beq,lb,ub,M,TolXInteger)
该函数解决的整数规划问题为:
f c x
min
T
s.t. Ax b
A x b
eq
eq
lb x ub
�
x 0 (i 1, 2, ,n)
i
x
取整数(j M)
j
在上述标准问题中,假设 x 为 n 维设计变量,且问题具有不等式约束
m
个,
1
等式约束 m 个,那么:c 、 x 均为 n 维列向量,
b
为 m 维列向量,
b
为 m 维列向
2
1
eq
2
量,
A
为 m n 维矩阵,
A
为 m n 维矩阵。
1
eq
2
在该函数中,输入参数有 c,A,b,Aeq,beq,lb,ub,M 和 TolXInteger。其中
c 为目标函数所对应设计变量的系数,A 为不等式约束条件方程组构成的系数矩
阵,b 为不等式约束条件方程组右边的值构成的向量.Aeq 为等式约束方程组构
成的系数矩阵,beq 为等式约束条件方程组右边的值构成的向量。lb 和 ub 为设
计变量对应的上界和下界。M 为具有整数约束条件限制的设计变量的序号,例
如问题中设计变量为 x , x ,�, x ,要求 x , x 和
x
为整数,则 M=[2;3;6];若
1
2
6
2
3
6
要求全为整数,则 M=1:6,或者 M=[1;2;3;4;5;6]。TolXInteger 为判定整数
的误差限,即若某数 x 和最邻近整数相差小于该误差限,则认为 x 即为该整数。
在该函数中,输出参数有 x, fval 和 exitflag。其中 x 为整数规划问题的最
优解向量,fval 为整数规划问题的目标函数在最优解向量 x 处的函数值,exitflag
为函数计算终止时的状态指示变量.
例 1 求解整数规划问题:
max
f x x
1
2
s.t.
4x 2x 1
1
2
4x 2x 11
1
2
2x 1
2
, 0,且取整数值
x x
1
2
算法:
c=[—1;—1];
A=[—4 2;4 2;0 -2];
b=[—1;11;-1];
lb=[0;0];
M=[1;2];
%均要求为整数变量
Tol=1e—8;
%判断是否整数的误差限
[x,fval]=linprog(c,A,b,[],[],lb,[])
%求解原问题松弛线性
规划
[x1,fval1]=intprog(c,A,b,[],[],lb,[],M,Tol) %求最优解整数解
结果:
x =
%松弛线性规划问题的最优解
1.5000
2.5000
fval =
-4。0000
x1 =
%整数规划的最优解
2
1
fval2 =
—3.0000
(二) 用 MATLAB 求解 0-1 规划问题
在 MATLAB 优化工具箱中,提供了专门用于求解 0-1 规划问题的函数
bintprog,其算法基础即为分枝界定法,在 MATLAB 中调用 bintprog 函数求解
0-1 规划时,需要遵循 MATLAB 中对 0—1 规划标准性的要求。
0—1 规划问题的 MATLAB 标准型
min
f c x
T
b
s.t. Ax
A x b
eq
x 0,1
eq
在上述模型中,目标函数 f 需要极小化,以及需要满足的约束条件,不等式
约束一定要化为形式为“ ”。
假设 x 为 n 维设计变量,且问题具有不等式约束 m 个,等式约束 m 个,那么:
1
2
c 、 x 均为 n 维列向量,
b
为 m 维列向量,
b
为 m 维列向量,
A
为 m n 维矩阵,
1
eq
2
1
A
为 m n 维矩阵。
eq
2
如果不满足标准型的要求,则需要对原问题进行转化,化为标准型之后才能
使用相关函数,标准化的方法和线性规划中的类似。
0—1 规划问题的 MATLAB 求解函数
MATLAB 优化工具箱中求解 0—1 规划问题的命令为 bintprog
bintprog 的调用格式
x = bintprog(f)
x = bintprog(f,A,b)
x = bintprog(f,A,b,Aeq,beq)
x = bintprog(f,A,b,Aeq,beq,x0)
x = bintprog(f,A,b,Aeq,Beq,x0,options)
[x,fval] = bintprog(.。.)
[x,fval,exitflag] = bintprog(。.。)
[x,fval,exitflag,output] = bintprog(..。)
命令详解
1)x = bintprog(f)
该函数调用格式求解如下形式的 0-1 规划问题
f cTx
min
s.t. x 0,1
2)x = bintprog(c,A,b)
该函数调用格式求解如下形式的 0—1 规划问题
min
f cTx
b
s.t. Ax
x 0 ,1
3)x = bintprog (c,A,b,Aeq,beq)
该函数调用格式求解如下形式的 0—1 规划问题:
min
f c x
T
b
s.t. Ax
A x b
eq
x 0,1
eq
4)x = bintprog (c,A,b,Aeq,beq,x0)
该函数调用格式求解如下形式的 0—1 规划问题
min
f c x
T
b
s.t. Ax
A x b
eq
x 0,1
eq
在前一个调用格式的基础上同时设置求解算法的初始解为 x0,如果初始解
x0 不在 0—1 规划问题的可行域中,算法将采用默认的初始解
5)x = bintprog (c,A,b,Aeq,beq,x0,options)
用 options 指定的优化参数进行最小化.可以使用 optimset 来设置这些参
数
上面的函数调用格式仅设置了最优解这一输出参数 ,如果需要更多的输出参
数,则可以参照下面的调用格式:
[x,fval] = bintprog(。。.)
在优化计算结束之时返回整数规划问题在解 x 处的目标函数值 fval
剩余19页未读,继续阅读
资源评论
苦茶子12138
- 粉丝: 1w+
- 资源: 6万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功