优化模型的三要素
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Interrupt 中断求解程序 Solver
Close 关闭该窗口
图标,便得到以下运行状态窗口:
显示结果如下
•单纯行法迭代两次得到最优解
•最优目 标值
•最优解 各变量 的值
•影子价格:
表示该非基变量增 加一个单位而其他 变量不变时目标函 数减少的量(对 max型问题)
•对偶价格
•单纯行法进 行两次迭代
(1)线性规划(LP)的一般形式
常
目标函数和所有的约束条件都是变量的线性 函数。
用
n
的 min f x ci xi , i 1,2,...,n
优
i 1
化 模 型
n
s.t. i1
ai xi
bi , bi
, bi ,
形 式
xi 0,i 1,2,...,n
(2)二次规划问题
常
目标函数为二次函数,约束条件为线性约束。
自由泳 58”6
53”
59”4
57”2 1’02”4
问题分析:问题要求从5名队员中选出4人组成接
力队,每人一种泳姿,且四人的泳姿各不相同,使
接力队成绩最好。容易想到穷举法,组成接力队的
方案有5!=120中,逐一计算并做比较即可找出最优
方案。显然这不是解决问题的最好方法,随着问题
线
规模的变大,穷举法的计算量是无法接受的。
➢ Lingo9.0软件比以前的版本有了很大的改进,功能大大增强, 性能更加稳定,结果更加可靠;从基本更能上看,与Lindo相比, Lingo软件主要具备以下优点:
① 除具备Lindo饿全部功能外,还可以用于求解非线性规划问题;
4
xij 1
j 1
② 每种泳姿有且只能有1人入选,即对于员 j=1,2,3,4,
5,应该有:
5
xij 1
i 1
综上所述,这个问题的优化模型可以写作:
45
min
cij xij ;
线
j1 i1
性
4
xij 1 ,i 1, 2,3, 4,5;
规
j1
划 模
5
s.t. xij 1 , j 1, 2,3, 4; i1
⑦ Lindo中以“!”开始的是说明语句,说明语句也以“ ;” 结束。
Lingo/Lindo软件介绍 ---Lindo
➢下面我们用一个例子来说明Lindo中三个变量范围限制命令(FREE、SBU、 SLB)的作用和使用方法:
例-4 max 2x 3y 4z S.T. 4x 3y 2z 10
优化模型
优化模型的三要素
(1)决策变量,通常是某一问题需要求解的未知量,
用n维向量x= x1 ,x2 , xn T 表示,当对x赋值后它通常
称为该问题的一个解;
(2)目标函数,通常是某一问题需要优化(最大或 最小)的那个目标的数学表达式,它是决策变量x的 函数,可以 抽象的记作f ( x );
(3)约束条件,由该问题对决策变量的现实条件给 出,即x允许的取值范围为x ,称为可行域,常
性
可以用0-1变量表示一个队员是否入选接力队, 从而建立这个问题的0-1规划模型.
规
记甲、乙、丙、丁、戊分别为队员 i=1,2,3,4,5;
划
记蝶泳、仰泳、蛙泳、自由泳分别为泳姿 j=1,2,3,
模
4;记队员 i 的第 j 种泳姿的百米成绩为 cij(s),则表 一可以表示成为:
型
表二 :5名队员4中泳姿百米平均成绩
约束条件:由每天需要的人数确定。由于每人连续
工作五天,所以一周的雇员应该是周四到周一聘用的, 按照需要至少50人,于是
x1 x4 x5 x6 x7 50
类似的,有
x1 x2 x5 x6 x7 50
x1 x2 x3 x6 x7 50
线 性 规
x1 x2 x3 x4 x7 50 x1 x2 x3 x4 x5 80 x2 x3 x4 x5 x6 90
这里opt 最优化的意思,可以是min(求极大, 即minamize的缩写)或max (求极小,即minamize 的缩写)的两者之一;s.t. (即subject to)“受约 束于”之意。
优化模型基本类型
1.决策变量x的所有分量xi均为连续数值
a)f ,hi ,gi都是线性函数,则为线性规划(LP) b)f ,hi ,gi至少有一个是非线性,则为非线性规划(NLP)
➢该软件包功能强大,版本也很多,而我们 使用的只
是演示版(试用版),演示版与正式版功能基本上是
类似的,只是能够求解问题的规模受到限制,总变量数 不超过30个,这在我们目前的使用过程中,基本上是 足够。
Lingo/Lindo软件介绍 Lingo/Lindo软件求解的优化模型类型见下图:
优化模型
连续模型
整数模型
ຫໍສະໝຸດ Baidu线性规划
二次规划
Lindo
非线性规划 Lingo
Lingo/Lindo软件介绍
➢Lindo是英文Linear Interactive and Discrete
Optimizer字首的缩写,即“交互式的线性和离散优化 求解器”,可以用来求解线性规划(LP)和二次规划 (QP);
➢Lingo是英文Linear Interactive and General
3y 5y z 12
x y 5z 8
5x y z 2
0 y 20, z 30
在这个模型中,对变量x没有非负限制,对y有上限限制,对z有下限 限制;分别用FREE、SBU、SLB三个命令可以实现这些功能。具体输入 如下:
图a:例4的 输入模型
图b:例4的 输出结果
Lingo/Lindo软件介绍 ---Lingo
c) f 是二次函数,hi ,gi 都是线性,则为二次规划(QP)
2.决策变量x的的一个或多个分量xi取离散值
a) x的至少一个分量只取整数数值,则为整数规划(IP) b) x的分量限定只取整数0或1,则为0-1规划(ZOP)
3.此外,为了解决实际问题的需要,还可以分为: 单目标规划,多目标规划,动态规划,多层规划等。
Lingo/Lindo软件介绍
《
---Lindo
➢解决一个简单的线性规划(LP)问题
例-3 max z 2x 3y
4x 3y 10 s.t. 3x 5y 12
x, y 0
其Lindo程序为:
Lingo/Lindo软件介绍 ---Lindo
➢我们从这段程序可以看出Lindo模型有以下特点:
用 的
n
1n
min f
x
i 1
ci xi
2
i,
bij
j 1
xi
x
j
优 化 模 型 形 式
n
ai xi bi , bi
, bi .
s
.t
.
i 1
xi
0.
i, j 1,2,...,n.
例-1 某服务部门一周中每天需要不同数目的
雇员:周一到周四每天至少需要50人,周五
需要80人,周六和周日需要90人。现规定应
型
xij
0,1;
这是一个线性0-1 规划模型,它是一个特 殊的线性整数规划。
Lingo/Lindo软件介绍
➢ 这套软件包由美国芝加哥大学的Linus Scharge教
授于1980年前后开发,专门用于求解最优化问题,后 经不断完善和扩充,并成立LINDO公司进行商业化运 作,取得了巨大的成功。全球《财富》杂志500强的企 业中,一半以上使用该公司产品,其中前25强企业中 有23家使用该产品。
用一组关于x的等式hi( x ) 0i 1,2, m和(或)不 等式g j( x ) 0 j 1,2, n来界定,分别称为等式约
束和不等式约束。
于是,优化模型从数学上可以表述为
opt z f ( x )
(1)
s. t. h( x ) 0 i 1,2, ,m
(2)
g( x ) 0 j 1,2, ,n (3)
名称
含义
Status
显示当前求解状态:Optimal表示已经达到 最优解;其他可能的显示:Feasible, Infeasible,Unbounded
Iterations 显示迭代次数
Infeasibility 约束不满足的量;0表示这个解是可行的
Objective 显示当前解的目标函数值
Best IP
聘者需连续工作5天,试确定聘用方案,即周
线
一到周日每天聘用多少人,是5在满足需要的 前况下聘用总人数最少?
性
优化模型
规
决策变量:记周一到周日每天聘用的人数分别为X1,
划
X2,X3,X4,X5,X6 ,X7,这就是问题的决策变量。
模
目标函数:目标函数即是聘用总人数,即
型
z x1 x2 x3 x4 x5 x6 x7
显示整数规划当前解的最佳标函数值:N/A 表示无答案或无意义
IP Bound 显示整数规划的界
Branches
显示分支定界算法已经计算的分支数: N/A 表示无答案或无意义
Elapsed 显示计算所用时间:0:00说明计算太快,
Time
用时还不到0.05S
Update 显示控制和刷新本界面的时间间隔 Time
Optimizer字首的缩写,即“交互式的线性和通用优化 求解器”,它除了具有Lindo的全部功能外,还可以用 来求解非线性规划。
➢Lingo和Lindo的最大特色在于可以允许决策变量是整
数,而且执行速度很快;Lingo实际上还是一种建模语 言,即使对优化方面的专业知识了解不多的用户,也 能方便的进行输入、求解,并能快速的得到复杂优化 问题的高质量的解。
•松弛变量的值 【紧约束】
Lingo/Lindo软件介绍 ---Lindo
➢使用Lindo软件的一些注意事项:
① 变量以字母开头、不区分大小写,变量名可不超过8个字符;
② 变量不能出现在约束条件的右端,右端只能是常数;变量与系 数之间可以有空格,但绝对不能有任何运算符;
③ Lindo中不接受”()“和逗号 ”,“等任何运算符号(除非 在注释语句中);
队员
甲
乙
丙
丁
戊
蝶泳 66.8 57.2
78
70
67.4
仰泳 75.6
66
67.8
74.2
71
蛙泳
87
66.4 84.6
69.6
83.8
自由泳 58.6
53
59.4
57.2
62.4
线 性 规
·划
模 型
决策变量:引入0-1变量xij 若选择队员 i 参加泳姿 j
的比赛,记 xij=1,否则记 xij=0.这就是问题的决策变量, 共20个。
目标函数:当队员队员 i 入选泳姿 j 的比赛时,
cij xij表示他的成绩,否则cij xij=0。于是接力队的成绩
可以表示为:
45
f
cij xij
j1 i1
约束条件:根据组成接力队的要求, xij 应该满足下面
两个约束条件:
① 每人最多只能入选4种泳姿之一,即对于员 i=1,2,3,
4,应该有:
④ 模型中的表达式应当经过化,如不能出现 (X+1)2 + 2X2 + 3Y,而应该写成3X2+2X+3Y+1;
⑤ 模型中已假定所有变量非负,可在模型的 ”end“语句后面用命 令”free“取消变量的非负假定,其用法是在”free“后面跟变 量名;
⑥ 在模型的 ”end“语句后面可以用命令”SUB“设定变量的上界, 用命令”SLB“设定变量的下界;
① Lindo程序以“MAX”( 或“MIN”)表示目标是求最大
化(最小化)问题,后面直接写目标函数的表达式和约 束的表达式条件,目标函数和约束之间以“ST”分开; 程序以“END” (也可以省略)结束;
② 输入格式与数学模型表达式几乎完全一样,连系数之间
的乘号都一样省略了,而且必须省略;
③ 在Lindo模型中的书写是相当灵活的;并且Lindo中已假
定所有变量非负,也不区分大小写;约束条件中的“>=” 及“<=”可分别用“>”“<”代替;输入的多于空格和回车也 会被忽略;
④ 一行中“!”后面的文字将被认为是说明语句,不参与
模型的建立,主要目的是增加程序的可读性。
现在我们用Lindo软件来求解这个模型,单击工具栏中的
Lindo求解器运行状态窗口各项的含义
5名队员4中泳姿的百米平均成绩如下表所示,
线
问应该如何选拔队员组成接力队?
性
规
表一 :5名队员4中泳姿百米平均成绩
划
队员
甲
乙
丙
丁
戊
模
蝶泳 1’06”8 57”2 1’18” 1’10” 1’07”4
型
仰泳 1’15”6 1’06” 1’07”8 1’14”2 1’11”
蛙泳 1’27” 1’06”4 1’24”6 1’09”6 1’23”8
划
x3 x4 x5 x6 x7 90
模
显然,人数应该是正整数,所以
型
xi 0 i 1, 2, 7
问题归结为在以上约束条件下求解min z的 整数规划模型。由于目标函数和约束条件关于 决策变量都是线性函数,所以这是一个整数向 行规划模型。
例-2 某班准备从5名游泳队员中选择4人组成
接力队,参加学校的4*100混合泳接力比赛。