用LINGO软件求解“非线性规划”问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
场的选取,即料场选取在 P( p1 , p2 ) = P(3.254883, 5.652332)与 Q(q1, q2 ) = Q(7.250000, 7.750000)比较好。注意:程序中的P(1)对应数学式中的 p1 ,但程序中 的P(2)对应的是数学式中的 q1 而不是 p2 。
LINGO总程序:
sets:
demand/1..6/ : a, b, d; supply/1..2/ : p, q, e; link(supply, demand) : c;
! 3个6维向量; ! 3个2维向量; ! 1个2×6调度矩阵;
endsets
data:
a = 1.25, 8.75, 0.5, 5.75, 3, 7.25;
i(程序j)
M1
M2
M3
M4
M5
M6
工地坐标
ai (程序a(j)) bi (程序b(j))
1.25 8.75 0.5 5.75 3 7.25
1.25 0.75 4.75 5
6.5 7.75
需求
d (t) (程序d(j))
3
5
4
7
6
11
demand
假设:(1) P( p1 , p2 ) 、 Q(q1, q2 ) 为料场;
用 LINGO 软件求解“非线性规划”问题
丁老师(超盾博客) 一. 选址问题(选取位置,使总运量最小)
例 某工程,6个工地同时开工,每个工地的位置 M i (ai , bi ) ,距离值(单位:km)、水泥日
需求量 d (t) (单位:吨)由下表给出:
Mi
M1
M2
M3
M4
M5
M6
ai
1.25 8.75 0.5 5.75
⎪⎩c21
+ +
c12 c22
+ +
c13 c23
+ c14 + c24
+ c15 + c16 ≤ 20 ⎫ + c25 + c26 ≤ 20⎭⎬

6
cij ≤ ei
j =1
( j = 1, ..., 6) (i = 1, 2)
用LINGO9.0求解,首先分析此问题中的向量和矩阵,有: (1) 3 个 6 维向量:a, b, d; (2) 3 个 2 维向量:p, q, e,其中 p 和 q 表示题目中给出的最初暂定的两个料场的坐标; (3) 1 个 2×6 调度矩阵:c.
! 先变j后变i;
@for( supply(i) : [supply_con]@sum( demand(j) : c(i, j) ) <= e(i); );
@for( supply(i) : @free(x); @free(y); ); ! 所有变量可取负值;
end
点击保存后,按“Ctrl + S”运行得到结果: Objective value: 85.26604 (即:总运输量为85.26604吨·公里)
Variable
Value
Reduced Cost
P( 1)
3.254883
0.000000
P( 2)
7.250000
0.8084079E-07
Q( 1)
5.652332
0.000000
Q( 2)
7.750000
0.2675276E-06
P(1)、P(2)、Q(1)、Q(2)的值即为对初始点(题给最初临时料场)优化迭代后得到的料
b = 1.25, 0.75, 4.75, 5, 6.5, 7.75;
d = 3, 5, 4, 7, 6, 11;
e = 20, 20;
enddata
init:
! 迭代初始点;
p = 5, 2;
q = 1, 7;
endinit
! link(i, j) : c(i, j) 表示 2×6 调度矩阵; ! [obj] 表示在结果中标注目标函数所在行代码;
3
7.25
bi
1.25 0.75 4.75 5
6.5 7.75
d (t) 3
5
4
7
6
11
目前暂定2个临时料场位于P(5,1)、Q(2,7)用于存储水泥,日储量20吨。假设从料场到工地之 间均可开通直线道路相连。试寻找更好的料场位置,使得总运输量(吨·公里)更小。 解 将题目和表格进行整理得到:
6个工地
(2) 从P调 c1 j 吨水泥到 M j ,从Q调 c2 j 吨水泥到 M j (1表示P,2表示Q),j = 1, … ,6.
∑ “总吨·公里”的表示方法:“总: ; 吨:c; 公里:两点间距”,目标函数是“非
线性”的,根据上述“总吨·公里”的表示方法得到“非线性”规划模型:
min f = c11 ( p1 − 1.25)2 + ( p2 −1.25)2 + c12 ( p1 − 8.75)2 + ( p2 − 0.75)2 + c13 ( p1 − 0.5)2 + ( p2 − 4.75)2 + c14 ( p1 −1.25.75)2 + ( p2 − 5)2 + c15 ( p1 − 3)2 + ( p2 − 6.5)2 + c16 ( p1 − 7.25)2 + ( p2 − 7.75)2 + c21 (q1 −1.25)2 + (q2 − 1.25)2 + c22 (q1 − 8.75)2 + (q2 − 0.75)2 + c23 (q1 − 0.5)2 + (q2 − 4.75)2 + c24 (q1 − 5.75)2 + (q2 − 5)2 + c25 (q1 − 3)2 + (q2 − 6.5)2 + c26 (q1 − 7.25)2 + (q2 − 7.75)2

⎪⎪cij ≥ 0
⎪⎪c11 ⎪c12 s.t.⎪⎪⎪⎨cc1143
+ + + +
c21 c22 c23 c24
=3 =ห้องสมุดไป่ตู้ =4 =7
⎫ ⎪ ⎪ ⎪⎪ ⎬ ⎪

c1 j + c2 j
= dj
2
∑ ⇒ cij = d j
i=1
⎪⎪c15
+
c25
=
6
⎪ ⎪
⎪c16 + c26 = 11⎪⎭
∑ ⎪⎪c11
[obj]min = @sum( link(i, j) : c(i, j) * ( ( p(i) - a(j) )^2 + ( q(i)
- b(j) )^2 )^(1/2) );
! 先变i后变j;
@for( demand(j) : [demand_con]@sum( supply(i) : c(i, j) ) = d(j); );
相关文档
最新文档