lingo相較于matlab實(shí)現(xiàn)規(guī)劃問(wèn)題更加簡(jiǎn)潔,但無(wú)法實(shí)現(xiàn)多目標(biāo)規(guī)劃,如果不了解lingo可以去看以下視頻了解:
Lingo(1):基礎(chǔ)篇——基本界面與解方程_嗶哩嗶哩_bilibilihttps://www.bilibili.com/video/BV1CT4y177qS?spm_id_from=333.337.search-card.all.click那么廢話不多說(shuō),我在這里分享一道例題及解法:
投料問(wèn)題:
現(xiàn)有兩個(gè)臨時(shí)料場(chǎng)坐標(biāo)分別為:A(5,1),B(2,7);日儲(chǔ)量各20噸
工地位置坐標(biāo)及日需求量如下表所示:
1 | 2 | 3 | 4 | 5 | 6 | |
橫坐標(biāo) | 1.25 | 8.75 | 0.5 | 5.75 | 3 | 7.25 |
縱坐標(biāo) | 1.25 | 0.75 | 4.75 | 5 | 6.5 | 7.25 |
日需求量 | 3 | 5 | 4 | 7 | 6 | 11 |
試制定每天的供應(yīng)計(jì)劃,即從兩料場(chǎng)分別向各工地運(yùn)送多少噸水泥,使總的噸千米數(shù)最小。
?
解 設(shè)從第j個(gè)料場(chǎng)(j=1,2)送往第i(i=1,2,3...6)個(gè)工地的所需的水泥重量為xij噸,設(shè)工地的橫坐標(biāo)ai(i=1,2,3...6),縱坐標(biāo)為bi(i=1,2,3...6),料場(chǎng)的橫坐標(biāo)為xj(j=1,2),縱坐標(biāo)為yj(j=1,2)每個(gè)料場(chǎng)的日需求量為di(i=1,2,3...6)
根據(jù)題目分析需要使總的噸千米數(shù)最小,則可設(shè)目標(biāo)函數(shù)為: ??? ?
由于每個(gè)工地的日需求量都有不同,可以得約束條件1:
由于兩個(gè)料場(chǎng)的日存儲(chǔ)量都為20噸,則有約束條件2:
由于往每個(gè)料場(chǎng)運(yùn)送的噸數(shù)都為大于零的數(shù),則有約束條件3:
?lingo實(shí)現(xiàn)代碼為
model:
!生成矩陣;
sets:
factory1/1..6/:a,b,d;
factory2/1..2/:x1,y1;
coo(factory1,factory2):x;
endsets
!輸入題目中數(shù)據(jù);
data:
!a,b表示工地坐標(biāo);
a=1.25,8.75,0.5,5.75,3,7.25;
b=1.25,0.75,4.75,5,6.5,7.25;
!x,y表示料場(chǎng)坐標(biāo);
x1=5,2;
y1=1,7;
!d表示工地日需求量;
d=3,5,4,7,6,11;
enddata
!列出表達(dá)式求解;
!目標(biāo)函數(shù);
min = @sum(coo(i,j):@sqrt((a(i)-x1(j))^2+(b(i)-y1(j))^2)*x(i,j));
!約束條件1;
@for(factory1(i):@sum(factory2(j):x(i,j))=d(i));
!約束條件2;
@for(factory2(j):@sum(factory1(i):x(i,j))<=20);
end
運(yùn)行結(jié)果:
噸千米數(shù)最小為:?135.2815文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-597574.html
需要往各個(gè)工地運(yùn)送的物料如下表所示:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-597574.html
料場(chǎng)1 | 料場(chǎng)2 | |
工地1 | 3 | 0 |
工地2 | 5 | 0 |
工地3 | 0 | 4 |
工地4 | 7 | 0 |
工地5 | 0 | 6 |
工地6 | 1 | 10 |
到了這里,關(guān)于【數(shù)學(xué)建模lingo學(xué)習(xí)】lingo解決規(guī)劃問(wèn)題1:投料問(wèn)題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!