怎样用python解决规划求解的问题( 二 )

a = 0for x in range(125, 401): y = (2000 - 4 * x) / 5 #這就不用解釋了吧…… p = 6 * x + 5 * y a = max(a, p)兩層for變成一層for了是不是。再然後,你那第二遍循環腦洞也不小啊,在第一次循環中,取得最大利潤時,記錄此時的x和y,不就完了。maxProfit, xBest, yBest = 0, 0, 0for x in range(125, 401): y = (2000 - 4 * x) / 5 profit = ***** # 6 * x + 5 * y OR x ** 6 * y ** 5 OR whatever you like... if profit \u0026gt; maxProfit: maxProfit, xBest, yBest = profit, x, yprint xBest, yBest於是,一個單層for循環取代了你的兩個雙層————————————————好吧題主又更新描述了研究生階段有專門一門課,就叫最優化,可惜我沒有上過。要說“解決所有最優解”,那恐怕學問就深了,我肯定差太遠了。我也不知道這個問題還能generalize到什麼程度,但還是那句話,至少消耗光一種資源。應該沒錯吧…………………………反正我是想不出反例的0.8*x+y\u0026lt;=400這個約束條件就算是換成三元十次不等式,思想還是一樣,枚舉一個變量,計算(而不是第二層枚舉)另一個變量,變\u0026lt;=為=,取不到等號,就取最接近的。只要x = x0, y = y0,(z = z0……)符合約束,那麽任何x \u0026lt; x0, y \u0026lt; y0,(z \u0026lt; z0……)的取值必然沒有意義。————————————————怎样用python解决规划求解的问题

看好,這是你最初的版本,print出來是90232,你說是102000。 【怎样用python解决规划求解的问题】 怎样用python解决规划求解的问题

這是你在評論裏的版本,print出來是120702,你說是12702。你一個勁兒說我算錯算錯,你倒是說說102000和12702怎麼來的。我最初隨口說了個“120000”是我不嚴謹,這我承認。但我重點是想說明,你最初的程序是O(n^2)的,n達到10的5次方時,你的程序是很費時的。不是想跟你擡槓。還有,python初始化是這麽寫的:list = , (還有dict = {}, tuple = ()),寫成list = 的話,那個0是沒有用的。怎麼說呢,多一個元素倒不影響性能,但是會觸發別人的強迫症的。
■网友
就是解方程嘛,列好方程,翻译成代码,完事


推荐阅读