基础线性规划实现(matlab,lingo)
生活随笔
收集整理的這篇文章主要介紹了
基础线性规划实现(matlab,lingo)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
一、本次所需解的問題
?二、matlab解題
1)語法
2)數學思維
3)matlab解題
運行結果:
三、lingo解題
lingo解題如下:
運行結果:
最后:
一、本次所需解的問題
? ? ? 需解出下面該線性規劃問題對應的最大值z以及x1,x2,x3
?二、matlab解題
1)語法
我們使用linprog函數,這是專門解決線性規劃問題的,我們來看一看該函數的語法:
?具體含義是什么呢?似乎你還看不懂這個,因此我用中文來說一下我們主要用到的部分:
x = linprog(f,A,b) 求解 min f'*x 約束條件為 A*x ≤ b. x = linprog(f,A,b,Aeq,beq) 求解上述問題,但是增加了約束條件,即將: Aeq*x = beq. 如果沒有等式存在可以用:A = [] and b = [] x = linprog(f,A,b,Aeq,beq,lb,ub) 定義變量x的下界lb和上街ub,使得x始終在該范圍內,即lb ≤ x ≤ ub。若沒有約束條件,則設: Aeq = [] and beq = []2)數學思維
我們的數學公式拿下來看看,看著我們對比著寫代碼:
目標函數:
約束條件:
x1+x2+x3=7; 2x1-5x2+x3>=10; x1+3x2+x3<=12 x1,x2,x3>0至于從數學角度來看,emmmm,我們還是直接上代碼吧!
3)matlab解題
強調:?在這里我需要說明的是,求解max=cx在matlab中就是min=-cx,記住有個負號!
因此matlab代碼:
%打卡第一天 clear all clc c=[2 3 -5];%用系數確定目標函數 a=[-2,5,-1;1,3,1]; %第二個函數全部取反保證方向一致 b=[-10;12];%右邊的值10編程-10 aeq=[1,1,1];%等式系數單獨拎出來 beq=7;%等式只有一個,結果為7 lb=[0;0;0];%沒有下限 ub=[inf;inf;inf];%沒有上限 [x,fval]=linprog(-c,a,b,aeq,beq,lb,ub); x best=c*x%計算最優值運行結果:
?因此最優解x1 =6.4286,x2=0.5714,x3=0,最優值為14.5714
三、lingo解題
強調:?在這里我需要說明的是,求解max z=cx在lingo中就是min=cx,且lingo默認變量>=0,每次輸入一段代碼結束后需加“;”分號才可以,不然會報錯!!!
lingo解題如下:
max=2*x1+3*x2-5*x3; x1+x2+x3=7; 2*x1-5*x2+x3>=10; x1+3*x2+x3<=12;運行結果:
?Objective value(最優值): ?14.57143
最優解x1 =6.428571,x2=0.5714286,x3=0
row:為具體解題過程,我們其實并不需要看這些,只需要知道最優解,最優值是什么就好!
最后:
本次學習到此結束,如有不足之處,希望大家多多指點,感謝!!!???
總結
以上是生活随笔為你收集整理的基础线性规划实现(matlab,lingo)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R语言基础入门(6)之向量下标和子集
- 下一篇: Latex笔记(一)—— 复杂表格的制作