查看: 127|回复: 8|关注: 0

[已答复] 如何用matlab或lingo求解多元函数的最小值

[复制链接]

新手

5 麦片

财富积分


050


1

主题

4

帖子

0

最佳答案
发表于 2020-2-12 23:07:26 | 显示全部楼层 |阅读模式
本帖最后由 wx_Wjevs7Tx 于 2020-2-14 17:15 编辑

如何用matlablingo求解多元函数的最小值?
求最优成本 minCminC=X[ ]*P[ ],价格P固定,重量X变动为整数,如无法得出整数解,有小数解也可。
X[]=[x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12]
P[]=[6900,5330,4800,6500,6270,6200,6700,6200,6700,5000,5080,5470]
sumX=x1+x2+x+x4+x5+x6+x7+x8+x9+x10+x1+x12=2000
密度M为恒量,M[ ]=[m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12]=[0.742,0.6667,0.63,0.809,0.695,0.7072,0.88,0.7072,0.88,0.63,0.8693,0.7409]

体积V[ ]=X/M=[v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12]=[x1/m1,x2/m2,x3/m3,x4/m4,x5/m5,x6/m6,x7/m7,x8/m8,x9/m9,x10/m10,x11/m11,x12/m12]
sumV= v1+v2+v3+v4+v5+v6+v7+v8+v9+v10+v11+v12
Vs=V/sumV=[v1/sumV,v2/sumV, v3/sumV, v4/sumV, v5/sumV, v6/sumV, v7/sumV, v8/sumV, v9/sumV, v10/sumV,v11/sumV, v12/sumV]

另有恒量:
B[ ]= [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]=[116,72,81,101,96,91,109,91,109,80,95,116]
C[ ]=[c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12]=[108,60,70,85,92,85,85,85,85,70,90,108]
D[ ]=[d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12]=[52,54,125,38,53,83,7,83,7,120,14,50]
E[ ]=[e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12]=[0,5.5,0,1.4,0.9,57.5,1.3,57.5,1.3,0.7,12.7,0]
F[ ]=[f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12]=[0,1,2,66,5,12,98,12,98,2,56,0]
G[ ]=[g1,g2,g3,g4,g5,g6,g7,g8,g9,g10,g11,g12]=[18,0.1,0.3,0.1,0.1,0.1,0.1,0.1,0.1,0.3,0.1,18.2]
H[ ]=[h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12]=[0,0.5,0.7,1.6,0.1,0.1,0.1,0.1,0.1,0.7,0.1.0.1]
I[ ]=[i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12]=[1,2,5,3,3,10,1,10,1,2,8,88]

约束条件:
mm=sum(M*Vs)=sum(m1*v1/sumV+m2*v2/sumV+m3*v3/sumV+m4*v4/sumV+m5*v5/sumV+m6*v6/sumV+m7*v7/sumV+m8*v8/sumV+m9*v9/sumV+m10*v10/sumV+m11*v11/sumV+m12*v12/sumV)
0.73<=mm<=0.739

bb=sum(B*Vs)=sum(b1*v1/sumV+b2*v2/sumV+b3*v3/sumV+b4*v4/sumV+b5*v5/sumV+b6*v6/sumV+b7*v7/sumV+b8*v8/sumV+b9*v9/sumV+b10*v10/sumV+b11*v11/sumV+b12*v12/sumV)
95<=bb<=96

cc=sum(C*Vs)=sum(c1*v1/sumV+c2*v2/sumV+c3*v3/sumV+c4*v4/sumV+c5*v5/sumV+c6*v6/sumV+c7*v7/sumV+c8*v8/sumV+c9*v9/sumV+c10*v10/sumV+c11*v11/sumV+c12*v12/sumV)
80<=cc<=100

dd=sum(D*Vs)=sum(d1*v1/sumV+d2*v2/sumV+d3*v3/sumV+d4*v4/sumV+d5*v5/sumV+d6*v6/sumV+d7*v7/sumV+d8*v8/sumV+d9*v9/sumV+d10*v10/sumV+d11*v11/sumV+d12*v12/sumV)
40<=dd<=55

ee=sum(E*Vs)=sum(e1*v1/sumV+e2*v2/sumV+e3*v3/sumV+e4*v4/sumV+e5*v5/sumV+e6*v6/sumV+e7*v7/sumV+e8*v8/sumV+e9*v9/sumV+e10*v10/sumV+e11*v11/sumV+e12*v12/sumV)
0<=ee<=16

ff=sum(F*Vs)=sum(f1*v1/sumV+f2*v2/sumV+f3*v3/sumV+f4*v4/sumV+f5*v5/sumV+f6*v6/sumV+f7*v7/sumV+f8*v8/sumV+f9*v9/sumV+f10*v10/sumV+f11*v11/sumV+f12*v12/sumV)
0<=ff<=32

gg=sum(G*Vs)=sum(g1*v1/sumV+g2*v2/sumV+g3*v3/sumV+g4*v4/sumV+g5*v5/sumV+g6*v6/sumV+g7*v7/sumV+g8*v8/sumV+g9*v9/sumV+g10*v10/sumV+g11*v11/sumV+g12*v12/sumV)
0<=gg<=2.6

hh=sum(H*Vs)=sum(h1*v1/sumV+h2*v2/sumV+h3*v3/sumV+h4*v4/sumV+h5*v5/sumV+h6*v6/sumV+h7*v7/sumV+h8*v8/sumV+h9*v9/sumV+h10*v10/sumV+h11*v11/sumV+h12*v12/sumV)
0<=hh<=0.7

ii=sum(I*Vs)=sum(i1*v1/sumV+i2*v2/sumV+i3*v3/sumV+i4*v4/sumV+i5*v5/sumV+i6*v6/sumV+i7*v7/sumV+i8*v8/sumV+i9*v9/sumV+i10*v10/sumV+i11*v11/sumV+i12*v12/sumV)
0<=ii<=8

附图是用EXCEL的规划求解计算使用,方便大侠理解。但EXCEL无法得出最优解,最优解会变化,可能是因为EXCEL规划求解功能没有遍历求解。

excel规划求解最小值.xls

44 KB, 下载次数: 0

excel表述

论坛优秀回答者

中级

1058 麦片

财富积分


5001500


0

主题

2591

帖子

229

最佳答案
  • 关注者: 149
发表于 7 天前 | 显示全部楼层
楼主代码中:
密度M固定,M[ ]=[m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12]=[0.742,0.6667,0.63,0.809,0.695,0.7072,0.88,0.7072,0.88,0.63,0.8693,0.7409]
sumM=m1+m2+m3+m4+m5+m6+ m7+ m8+ m9+ m10+ m11+ m12
0.73<=sumM<=0.739
上面m1, m2,...m12都已知,sumM也就已知,何来“0.73<=sumM<=0.739”?怎么满足?

新手

5 麦片

财富积分


050


1

主题

4

帖子

0

最佳答案
 楼主| 发表于 7 天前 | 显示全部楼层
写错了,不好意思,我修改一下,密度M和其他一样都是和重量相关的,按重量比例计算得出一个合计数,

论坛优秀回答者

中级

1058 麦片

财富积分


5001500


0

主题

2591

帖子

229

最佳答案
  • 关注者: 149
发表于 7 天前 | 显示全部楼层
没看出来楼主1#的描述中关于2#说的问题哪儿改动了?

新手

5 麦片

财富积分


050


1

主题

4

帖子

0

最佳答案
 楼主| 发表于 7 天前 | 显示全部楼层
本帖最后由 wx_Wjevs7Tx 于 2020-2-13 20:42 编辑

刚刚没改,现在改过了来,一楼

论坛优秀回答者

中级

1058 麦片

财富积分


5001500


0

主题

2591

帖子

229

最佳答案
  • 关注者: 149
发表于 7 天前 | 显示全部楼层
自己仔细点吧:
B[ ]= [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12]=[116,72,81,101,96,91,109,80,95,116]
后面的数据只有10个

新手

5 麦片

财富积分


050


1

主题

4

帖子

0

最佳答案
 楼主| 发表于 6 天前 | 显示全部楼层
已经改好了,不好意思

论坛优秀回答者

入门

177 麦片

财富积分


50500


0

主题

435

帖子

38

最佳答案
  • 关注者: 11
发表于 4 天前 | 显示全部楼层
解答
Local optimal solution found.
  Objective value:                             0.1126628E+08
  Objective bound:                             0.1126628E+08
  Infeasibilities:                              0.000000
  Extended solver steps:                             540
  Total solver iterations:                         10721


                                           Variable           Value
                                              X( 1)        142.0000
                                              X( 2)        3.000000
                                              X( 3)        315.0000
                                              X( 4)        0.000000
                                              X( 5)        761.0000
                                              X( 6)        0.000000
                                              X( 7)        0.000000
                                              X( 8)        0.000000
                                              X( 9)        0.000000
                                             X( 10)        9.000000
                                             X( 11)        692.0000
                                             X( 12)        78.00000

论坛优秀回答者

中级

1058 麦片

财富积分


5001500


0

主题

2591

帖子

229

最佳答案
  • 关注者: 149
发表于 3 天前 | 显示全部楼层
楼上结果似乎无法满足约束“dd<=55”和“ii<=8”。
1#也好好检查下自己给出的数据和代码是否有误?很粗心的感觉,比如:
H[ ]=[h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12]=[0,0.5,0.7,1.6,0.1,0.1,0.1,0.1,0.1,0.7,0.1.0.1]
还是出现低级错误(“0.1.0.1”应该是“0.1,0.1”)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表