日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

线性/非线性规划问题求解

發(fā)布時(shí)間:2023/12/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线性/非线性规划问题求解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、用Excel完成線性規(guī)劃問(wèn)題的求解

1.建立數(shù)據(jù)源

2.寫(xiě)出資源配置三要素


3.在excel中設(shè)置目標(biāo)函數(shù)
根據(jù)前面的分析可知,目標(biāo)函數(shù)為E2,E6與F2, F6區(qū)域兩列數(shù)組對(duì)應(yīng)元素的乘積之和,在C10單元格中輸入=SUMPRODUCT (E2:E6,F2:F6)

4.在excel中設(shè)置約束條件

5.加載excel規(guī)劃求解模塊
選擇“文件”→“選項(xiàng)”→“加載項(xiàng)"→“轉(zhuǎn)到”,勾選“規(guī)劃求解加載項(xiàng)”。單擊“確定"按鈕。在“數(shù)據(jù)”菜單下就出現(xiàn)了“規(guī)劃求解”模塊

6.設(shè)置決策變量和目標(biāo)函數(shù)

7.設(shè)置約束條件
約束條件1

約束條件2

約束條件3

約束條件4

約束條件5

約束條件6

約束條件7

最終添加結(jié)果

8.點(diǎn)擊求解,得到最終結(jié)果

二、用python完成線性規(guī)劃問(wèn)題的求解

1.設(shè)置約束條件

2.使用scipy庫(kù)對(duì)線性規(guī)劃的最優(yōu)解、最大值進(jìn)行求解

# 導(dǎo)入包 from scipy import optimize import numpy as np #創(chuàng)建矩陣,c為目標(biāo)函數(shù)的矩陣,A_ub為約束條件的左邊構(gòu)成的矩陣,B_ub為約束條件的右邊 c=np.array([600,800,500,400,300]) A_ub=np.array([[1000,2000,0,0,0],[-1,-1,0,0,0],[1000,2000,400,1000,100],[-2000,-4000,-3000,-5000,-600],[1,0,0,0,0],[0,1,0,0,0],[0,0,1,0,0],[0,0,0,1,0],[0,0,0,0,1]]) B_ub=np.array([30000,-20,40000,-100000,14,8,40,5,50]) # 求解 res=optimize.linprog(-c,A_ub,B_ub) print(res)

3.得到結(jié)果

三、用拉格朗日方法求解

求解問(wèn)題

1.手工求解
求函數(shù)f(x,y,z)在條件φ(x,y,z)=0下的極值。 方法(步驟)是:
1.做拉格朗日函數(shù)L=f(x,y,z)+λφ(x,y,z),λ稱拉格朗日乘數(shù);
2.求L分別對(duì)x,y,z,λ求偏導(dǎo),得方程組,求出駐點(diǎn)P(x,y,z); 如果這個(gè)實(shí)際問(wèn)題的最大或最小值存在,一般說(shuō)來(lái)駐點(diǎn)只有一個(gè),于是最值可求

2.利用python編程求解

# 導(dǎo)入包 from sympy import * # 設(shè)置變量 x,y,z,k = symbols('x,y,z,k') a,b,c=symbols('a,b,c') f = 8*x*y*z g = x**2/a**2+y**2/b**2+z**2/c**2-1 #構(gòu)造拉格朗日函數(shù) L=f+k*g #求導(dǎo) dx = diff(L, x) # 對(duì)x求偏導(dǎo) print("dx=",dx) dy = diff(L,y) #對(duì)y求偏導(dǎo) print("dy=",dy) dz = diff(L,z) #對(duì)z求偏導(dǎo) print("dz=",dz) dk = diff(L,k) #對(duì)k求偏導(dǎo) print("dk=",dk) dx= 8*y*z + 2*k*x/a**2 dy= 8*x*z + 2*k*y/b**2 dz= 8*x*y + 2*k*z/c**2 dk= -1 + z**2/c**2 + y**2/b**2 + x**2/a**2 #求出個(gè)變量解 m= solve([dx,dy,dz,dk],[x,y,z,k]) print(m) #變量賦值 x=sqrt(3)*a/3 y=sqrt(3)*b/3 z=sqrt(3)*c/3 k=-4*sqrt(3)*a*b*c/3 #計(jì)算方程的值 f = 8*x*y*z print("方程的最大值為:",f)

3.得到結(jié)果

總結(jié)

以上是生活随笔為你收集整理的线性/非线性规划问题求解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。