整数规划和多目标规划模型文档格式.doc
- 文档编号:14638839
- 上传时间:2022-10-23
- 格式:DOC
- 页数:20
- 大小:409KB
整数规划和多目标规划模型文档格式.doc
《整数规划和多目标规划模型文档格式.doc》由会员分享,可在线阅读,更多相关《整数规划和多目标规划模型文档格式.doc(20页珍藏版)》请在冰豆网上搜索。
4;
5;
6]。
TolXInteger为判定整数的误差限,即若某数x和最邻近整数相差小于该误差限,则认为x即为该整数。
在该函数中,输出参数有x,fval和exitflag。
其中x为整数规划问题的最优解向量,fval为整数规划问题的目标函数在最优解向量x处的函数值,exitflag为函数计算终止时的状态指示变量。
例1求解整数规划问题:
算法:
c=[-1;
-1];
A=[-42;
42;
0-2];
b=[-1;
11;
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标准型
在上述模型中,目标函数f需要极小化,以及需要满足的约束条件,不等式约束一定要化为形式为“”。
假设为维设计变量,且问题具有不等式约束个,等式约束个,那么:
如果不满足标准型的要求,则需要对原问题进行转化,化为标准型之后才能使用相关函数,标准化的方法和线性规划中的类似。
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规划问题
2)x=bintprog(c,A,b)
3)x=bintprog(c,A,b,Aeq,beq)
该函数调用格式求解如下形式的0-1规划问题:
4)x=bintprog(c,A,b,Aeq,beq,x0)
该函数调用格式求解如下形式的0-1规划问题
在前一个调用格式的基础上同时设置求解算法的初始解为x0,如果初始解x0不在0-1规划问题的可行域中,算法将采用默认的初始解
5)x=bintprog(c,A,b,Aeq,beq,x0,options)
用options指定的优化参数进行最小化。
可以使用optimset来设置这些参数
上面的函数调用格式仅设置了最优解这一输出参数,如果需要更多的输出参数,则可以参照下面的调用格式:
[x,fval]=bintprog(...)
在优化计算结束之时返回整数规划问题在解x处的目标函数值fval
[x,fval,exitflag]=bintprog(...)
在优化计算结束之时返回exitflag值,描述函数计算的退出条件。
在优化计算结束之时返回结构变量output
例2:
求解0-1规划问题
为了程序的可读性,我们用一维下标来表示设计变量,即用表示,用表示,用表示,用表示,于是约束条件和目标函数分别为:
c=[20;
12;
33;
26;
22;
15;
29;
23;
21;
13;
31;
24;
16;
32;
23];
Aeq=[1111000000000000;
0000111100000000;
0000000011110000;
0000000000001111;
1000100010001000;
0100010001000100;
0010001000100010;
0001000100010001;
];
beq=ones(1,8);
[x,fval]=bintprog(c,[],[],Aeq,beq);
B=reshape(x,4,4);
%由于x是一列元素,为了使结果更加直观,故排成与效率矩阵E相对应的形式
B'
fval
Optimizationterminated.
ans=
0100
0010
1000
0001
85
整数规划的应用——组件配套问题
某机械产品需要由三个工厂开工一起生产后组装完成。
每件机械需要4个组件1和3个组件2。
生产这两种组件需要消耗两种原材料A和B。
已知这两种原材料的供应量分别为400kg和600kg。
由于三个工厂的生产条件和拥有设备工艺条件不同,每个工厂生产组件的能力和原材料的消耗也不尽相同,且每个工厂开工一次都是配套生产一定数量的组件1和组件2,其具体的数据如表所示。
表11-2各工厂生产能力和消耗原材料的数据表
每个工厂消耗原材料的数量(公斤)
每个工厂各组件的生产能力(件数)
A材料
B材料
组件1
组件2
工厂1
工厂2
工厂3
9
6
4
7
10
8
5
现在的最优化问题是,这三个工厂应当如何安排生产,才能使该产品的配套数达到最大?
(Ⅰ)组件配套问题的建模
设和是三个工厂分别开工的次数,将其作为该问题的设计变量。
由于每个工厂开工一次都是配套生产,故每次开工消耗的原材料一定,且生产的组件数也是一定的。
在这个假设的前提之下,我们可以得出该问题的目标函数和约束条件。
因为原材料的总量是有限的,根据工厂的开工次数,可得工厂1将消耗材料,工厂2将消耗材料,工厂3将消耗材料,故有约束条件:
同理,对于材料的总量约束条件可以表达为:
然后再来分析三个工厂零件生产的情况,三个工厂生产的组件1的数量分别为和,故组件1的总数为:
同理,组件2的总数为:
下一步是分析目标函数,该问题要求的不是生产的各种组件总数最多,而是要求产品的配套数量最大,即能组成的机械数目最多。
问题中已经给出了该种机械中两种组件的配比为4:
3,故组件1所能成套的数目满足约束条件:
同理,组件2所能成套的数目满足约束条件:
因而,所能组成的成品机械的数目应该为和中的较小值,即:
那么,我们求解的目标即是使得能够尽可能大,可以看出,这种形式并不是有关设计变量的线性函数,我们需要对其进行转化,此时我们可以令一个人工设计变量等于目标函数值,则有:
在该假设下,一定满足关系式:
且
结合约束关系,对的约束可以表示为:
同理,对的约束可以表示为:
对的上述关系进行整理,可以得到关系:
同理对也可以得到不等式关系为:
上面两个式子即为由组件的配比数得到的关于组件数目的约束条件,此时问题的目标就是如何使得取到最大值,由于开工的次数一定是一个非负整数,故也是一个约束条件,决定了该问题是一个纯整数规划问题。
结合前面给出的原材料约束,可以得到如下的数学模型:
(Ⅱ)组件配套问题的求解
利用§
8.1节中给出的MATLAB函数对此问题求解,代码和运行结果如下:
%目标函数所对应的设计变量的系数,为转化为极小,故取原目标函数的相反数
f=[0;
0;
%不等式约束
A=[9640;
71090;
-8-7-94;
-6-9-53];
b=[400;
600;
%边界约束,由于无上界,故设置ub=[Inf;
Inf;
Inf];
ub=[Inf;
%所有变量均为整数变量,故将所有序号组成向量M
4];
%判定为整数的误差限
%求最优解x和目标函数值fval,并返回状态指示
[x,fval,exitflag]=intprog(f,A,b,[],[],lb,ub,M,Tol)
x= %最优解向量x
18
15
36
141
fval=%在最优解向量x处,原目标函数值的相反数
-141.000
exitflag=%算法终止指示变量,说明问题收敛到了最优解x
1
由运行结果可知,工厂1、2和3需要分别开工18、15和36次,这样所能生产出来的成套的机械为141件。
2多目标规划的MATLAB求解方法
(一)多目标规划的MATLAB求解
由于多目标规划中的求解涉及
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 整数 规划 多目标 模型