国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Matlab和Lingo的線性規(guī)劃問題求解過程對(duì)比分析

2019-08-07 02:02:36義欣
科技視界 2019年17期
關(guān)鍵詞:數(shù)學(xué)建模

義欣

【摘 要】在日常生活中,為了取得最大化的利益,經(jīng)常會(huì)需要利用現(xiàn)有的資源條件進(jìn)行科學(xué)適當(dāng)?shù)陌才?,這就離不開數(shù)學(xué)規(guī)劃,即從基礎(chǔ)的應(yīng)用數(shù)學(xué)角度進(jìn)行分析問題,依據(jù)數(shù)字來判斷最佳方案。其中最重要的就是數(shù)學(xué)建模,是屬優(yōu)化管理模型的一種,最為常見的就是利用線性規(guī)劃的手段進(jìn)行構(gòu)建,而Matlab和Lingo同作為可用于數(shù)值計(jì)算分析的軟件,在進(jìn)行線性規(guī)劃問題求解時(shí)都有著重要的應(yīng)用。本文主要就線性規(guī)劃與非線性規(guī)劃問題進(jìn)行分析討論,并利用Matlab和Lingo進(jìn)行求解,分析兩款軟件的計(jì)算過程,并做出總結(jié)。

【關(guān)鍵詞】數(shù)學(xué)建模;非線性規(guī)劃;Matlab;Lingo

中圖分類號(hào): G642;O141.4-4 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 2095-2457(2019)17-0094-003

DOI:10.19694/j.cnki.issn2095-2457.2019.17.045

Analysis and Comparison of Solving Process of Linear Programming Based on Matlab and Lingo

YI Xin

(Northeastern University at Qinhuangdao, Qinhuangdao Hebei 066004, China)

【Abstract】In daily life, in order to maximize the benefits, often need to use the existing resource conditions for scientific and appropriate arrangements, which is inseparable from mathematical programming, namely from the basic applied mathematics perspective to analyze the problem, according to the number to judge the best plan.Among them, the most important one is mathematical modeling, which is a kind of optimal management model. The most common one is to construct by means of linear programming. Matlab and Lingo, both of which can be used for numerical calculation and analysis, have important applications in solving linear programming problems.This paper mainly analyzes and discusses the problems of linear programming and nonlinear programming, and USES Matlab and Lingo to solve them, analyzes the calculation process of the two software, and makes a summary.

【Key words】Mathematical modeling; Nonlinear programming; Matlab; Lingo

1 緒論

對(duì)于普通的數(shù)學(xué)規(guī)劃問題,其基本理論已經(jīng)較為完善,可以使用多種手段進(jìn)行最佳方案的求解,其中利用計(jì)算機(jī)進(jìn)行則最為簡(jiǎn)便,在保證準(zhǔn)確率的同時(shí),可以將人力解放出來,而Matlab和Lingo作為用于數(shù)學(xué)分析計(jì)算的專業(yè)軟件,在進(jìn)行線性規(guī)劃問題求解時(shí),都極為簡(jiǎn)潔方便,在現(xiàn)代社會(huì)已經(jīng)都被廣泛用于工程建設(shè)、金融預(yù)算、智慧城市、信號(hào)處理、教育等等領(lǐng)域[1-2],就線性規(guī)劃問題,將進(jìn)行詳細(xì)的分析比。

1.1 線性規(guī)劃問題

線性規(guī)劃問題是目標(biāo)函數(shù)和約束條件均為線性函數(shù)的問題,利用線性規(guī)劃可以解決很多問題。如:在不違反一定資源限制下,組織安排生產(chǎn),獲得最好的經(jīng)濟(jì)效益(產(chǎn)量最多、利潤(rùn)最大、效用最高);也可以在滿足一定需求條件下,進(jìn)行合理配置,使成本最小。同時(shí)還可以在任務(wù)或目標(biāo)確定后,統(tǒng)籌兼顧,合理安排,用最少的資源(如資金、設(shè)備、原材料、人工、時(shí)間等)去完成任務(wù)[3]。

1.2 結(jié)構(gòu)安排

本文主要研究是對(duì)兩款軟件Matlab和Lingo就線性規(guī)劃問題求解過程進(jìn)行分析對(duì)比,結(jié)構(gòu)安排如下:

第一部分為緒論,主要包括線性規(guī)劃問題簡(jiǎn)介,應(yīng)用計(jì)算機(jī)軟件進(jìn)行處理的優(yōu)勢(shì)和應(yīng)用。

第二部分為利用Matlab和Lingo進(jìn)行求解的分析對(duì)比。

第三部分為結(jié)論,就此次使用Matlab和Lingo解決線性規(guī)劃問題的進(jìn)行總結(jié),以及對(duì)兩款軟件應(yīng)用優(yōu)勢(shì)領(lǐng)域進(jìn)行延伸分析。

2 線性規(guī)劃問題求解

一般的線性規(guī)劃問題標(biāo)準(zhǔn)式為:

max(min)f=cTX

s.t.AX≤baeqX≤beqlb≤X≤ub

線性規(guī)劃關(guān)于解可能存在四種情況:

(1)無解,即不存在滿足條件的解;

(2)有唯一解,即在眾多的可行解中有唯一的最優(yōu)解;

(3)無窮解,即在可行解中的無窮解都可以作為最優(yōu)解;

(4)有解,有可行解,但由于值無界所以沒有最優(yōu)解。

一般的求解思路是先求一個(gè)可行解,然后檢驗(yàn),如若不是,則用迭代的方法找到更優(yōu)解,反復(fù)有限次迭代,直至找到最優(yōu)解或者判定無解[4]。

2.1 求線性規(guī)劃最小最優(yōu)解

例如求

minf=5x1+9x2-3x3+8x4-7x5;

s.t.-5x1-4x2-6x3-x5≥-6-2x1+3x2-x3+x4-3x5≤70≤xi≤21

2.1.1 基于Matlab求線性規(guī)劃最優(yōu)解

在Matlab中求線性規(guī)劃問題,可直接調(diào)用linprog函數(shù),其原理即為簡(jiǎn)單的迭代檢驗(yàn),偽代碼格式如下:

[x,fval]=linprog(f,A,b,aeq,beq,lb,ub)

[x,fval]=linprog(f,A,b,aeq,beq,lb,ub,x0)

A:約束條件矩陣b:目標(biāo)函數(shù)的系數(shù)向量c:約束條件最右邊的數(shù)值向量

lb、ub:解向量的下、上界 ?x0:初始解向量

可在Matlab中輸入代碼:

>>f=[5 9 -3 8 -7];

>>A=[-2 3 -1 1 -3;5 4 6 0 1];

>>b=[7 6];

>>lb=[0 0 0 0 0];

>>ub=[21 21 21 21 21];

>>[x,fval]=linprog(f , A, b, [ ], [ ], lb, ub)

Optimization terminated.

則會(huì)輸出結(jié)果為:

x=0.0000

0.0000

0.0000

0.0000

6.0000

fval==-42.0000

即在該規(guī)劃問題上x1=x2=x3=x4=0,x5=6時(shí)符合取值要求,且取最小值-42.

2.1.2 基于Lingo求線性規(guī)劃最優(yōu)解

Lingo的原理也是迭代取值檢驗(yàn)法,在Lingo軟件中需要先輸入一個(gè)模型[5],以MIN開始,按線性規(guī)劃問題的自然形式輸入即可,在模型窗口輸入以下代碼:

min=5*x1+9*x2-3*x3+8*x4-7*x5;

5*x1+4*x2+6*x3+x5<=6;

-2*x1+3*x2-x3-x4-3*x5<=7;

@bnd(0,x,21);

代碼中:@bnd指的是x的取值范圍。

點(diǎn)擊Solve即可得到代碼運(yùn)行結(jié)果如圖1。

其中很明顯看到當(dāng)x1=x2=x3=x4=0,x5=6時(shí)可以取得最優(yōu)值-42,同時(shí)可以看到一些其它的變量值,得到總變量為6,非線性變量為0,也可以看到松弛或盈余量等等[5]。

2.2 求線性規(guī)劃最大最優(yōu)解

例如:max f=3x1+3x2

2.2.1 基于Matlab求線性規(guī)劃最優(yōu)解

在Matlab中沒有求最大值函數(shù),因此需要先將目標(biāo)轉(zhuǎn)化為最小值問題:

然后進(jìn)行轉(zhuǎn)換即可。

Matlab中代碼設(shè)計(jì)如下:

>>f=[-3,-7];

>>A=[1,0;0,1;1,2];

>>b=[7,6,17];

>>lb=[0,0];

>>[x,fval]=linprog(f, A, b,[ ],[ ], lb)

Optimization terminated.

可得到x=5.0000 ? ? ?fval=-57.0000

6.0000

可以發(fā)現(xiàn)x1和x2取值都符合要求,即maxf=fval*(-1),則maxf=57.0000。

2.2.2 基于Lingo求線性規(guī)劃最優(yōu)解

在Lingo中先輸入模型,然后以max輸入即可,在模型窗口中設(shè)計(jì)的代碼如下:

max=3*x1+7*x2;

x1<=7;

x2<=6;

x1+2*x2<=17;

其代碼運(yùn)行結(jié)果如圖2。

可以得到最優(yōu)解值結(jié)果當(dāng)x1=5;x2=6時(shí)取得最優(yōu)值(最大值)為57。

在圖中其中可以得到總變量為2,非線性變量為0,還有經(jīng)過迭代后松弛或盈余的量。

3 結(jié)論

通過以上的基于兩種軟件的求最優(yōu)值的過程對(duì)比可以得出,不管是使用Matlab還是Lingo,兩種方法一樣,但求解的程序形式有著較大的差異。

Matlab中,需要用到數(shù)組(矩陣)的知識(shí)點(diǎn),所以可能需要前期的學(xué)習(xí)過程作為鋪墊。同時(shí),也可以明顯知道,Matlab中的程序接口是已經(jīng)寫好的,即linprog的使用格式是固定的,就線性規(guī)劃而言,在日常生活中,需要使用的整數(shù)性的線性規(guī)劃時(shí)就會(huì)受到一定的限制,一般的情況下,整數(shù)情況可能較少,所以關(guān)于小數(shù)化整數(shù)的過程需要自己進(jìn)行編譯,因此,這一過程可能對(duì)初學(xué)者很不友善,受到一定的制約。但Matlab在進(jìn)行規(guī)模龐大的變量運(yùn)算時(shí)具有很大的優(yōu)勢(shì),在非線性規(guī)劃時(shí)較為方便,同時(shí)它在數(shù)據(jù)可視化方面也有很大應(yīng)用,也支持其他的如C、JAVA等語(yǔ)言。

相比較而言,利用Lingo進(jìn)行線性規(guī)劃整體使用體驗(yàn)較為流暢,中間不涉及其他的知識(shí)框架,可以直接按照原始的書寫習(xí)慣進(jìn)行,符合大部分人的習(xí)慣,較為容易掌握,實(shí)用性比較強(qiáng),且在使用中可以與excel表格進(jìn)行對(duì)接調(diào)用,但整個(gè)框架較為嚴(yán)格,大于等于與大于以及小于等于與小于等價(jià),忽略掉了邊界的影響,同時(shí)在程序中每個(gè)變量、約束條件都要輸入,由此當(dāng)變量很多是就會(huì)造成一定難度。

拿本文的規(guī)劃問題求解的過程來說,Matlab需要將最大值的求解轉(zhuǎn)變?yōu)樽钚≈抵笤偾蠼?,而Lingo則不需要,可以直接求,這一方面Lingo比Matlab方便且易懂。

綜上所述,Matlab在各自領(lǐng)域都有一定優(yōu)勢(shì),對(duì)于初學(xué)者而言,比較推崇使用Lingo進(jìn)行線性規(guī)劃,而入門后,關(guān)于各種問題的求解Matlab是更好選擇。

【參考文獻(xiàn)】

[1]燕浩.淺談高中數(shù)學(xué)線性規(guī)劃問題的軟件實(shí)現(xiàn)——以Lingo環(huán)境下多決策變量為例[J].數(shù)學(xué)學(xué)習(xí)與研究:教研版, 2015(23):143-144.

[2]盛仲飆.基于Matlab的線性規(guī)劃問題求解[J].計(jì)算機(jī)與數(shù)字工程,2012,40(10).

[3]揭逸飛.運(yùn)用MATLAB軟件求解高中數(shù)學(xué)中的線性和非線性規(guī)劃問題[J].科技視界,2016(21):164-164.

[4]龍松.大學(xué)數(shù)學(xué)MATLAB應(yīng)用教程[M].武漢:武漢大學(xué)出版社,2014.7.

[5]吳拿達(dá).基于Lingo軟件的“線性規(guī)劃”應(yīng)用性教學(xué)[J]. 科教文匯,2017(32).

猜你喜歡
數(shù)學(xué)建模
概率論和數(shù)理統(tǒng)計(jì)的數(shù)學(xué)建模研究
基于常微分方程的數(shù)學(xué)建模問題的求解
數(shù)學(xué)建模競(jìng)賽促進(jìn)大學(xué)生數(shù)學(xué)素養(yǎng)和自主學(xué)習(xí)能力的提高
東方教育(2016年16期)2016-11-25 01:07:56
高職院校將數(shù)學(xué)建模思想融入高等數(shù)學(xué)教學(xué)必要性研究
應(yīng)用型人才培養(yǎng)模式下數(shù)學(xué)建模課程教學(xué)改革
數(shù)學(xué)建模過程中的模型優(yōu)化算法
在數(shù)學(xué)建模中培養(yǎng)學(xué)生的提問能力
考試周刊(2016年84期)2016-11-11 22:54:07
數(shù)學(xué)建模中創(chuàng)造性思維的培養(yǎng)
考試周刊(2016年84期)2016-11-11 22:46:15
談數(shù)學(xué)建模時(shí)的問題分析步驟
考試周刊(2016年85期)2016-11-11 01:06:38
樹立建模意識(shí) 培養(yǎng)學(xué)生創(chuàng)新思維
新安县| 三明市| 红河县| 安西县| 浦县| 长兴县| 青铜峡市| 泗水县| 五峰| 锡林郭勒盟| 疏附县| 逊克县| 罗江县| 安国市| 阳信县| 蓝山县| 镇远县| 曲麻莱县| 集安市| 彩票| 开江县| 武隆县| 临高县| 名山县| 栖霞市| 新建县| 涿州市| 乌鲁木齐县| 同江市| 莎车县| 汤阴县| 武威市| 济南市| 洛浦县| 定日县| 垣曲县| 富宁县| 满城县| 定州市| 北宁市| 庄河市|