0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

scipy.optimize.linprog函數(shù)參數(shù)最全詳解

微云疏影 ? 來(lái)源:佐佑思維 ? 作者:佐佑思維 ? 2022-08-09 10:42 ? 次閱讀

1 線性規(guī)劃概念

定義:在線性等式和不等式約束下,最小化線性目標(biāo)函數(shù)。

2 輸入格式

scipy.optimize.linprog(c,A_ub=None,b_ub=None,A_eq=None,b_eq=None,bounds=None,method=‘interior-point’,callback=None,options=None,x0=None)

3 參數(shù)設(shè)置

‘’‘

c:線性目標(biāo)函數(shù)的系數(shù); 數(shù)據(jù)類型:一維數(shù)組

A_ub(可選參數(shù)):不等式約束矩陣, A_{ub} 的每一行指定 x 上的線性不等式約束的系數(shù);數(shù)據(jù)類型:二維數(shù)組

b_ub(可選參數(shù)):不等式約束向量,每個(gè)元素代表 A_{ub}x 的上限;數(shù)據(jù)類型:一維數(shù)組

A_eq(可選參數(shù)):等式約束矩陣, A_{eq}的每一行指定 x 上的線性等式約束的系數(shù);數(shù)據(jù)類型:二維數(shù)組

b_eq(可選參數(shù)):等式約束向量,A_{eq}x 的每個(gè)元素必須等于 b_{eq} 的對(duì)應(yīng)元素;數(shù)據(jù)類型:一維數(shù)組

bounds(可選參數(shù)):定義決策變量 x 的最小值和最大值;數(shù)據(jù)類型:(min, max)序列對(duì)

None:使用None表示沒(méi)有界限,默認(rèn)情況下,界限為(0,None)(所有決策變量均為非負(fù)數(shù))

如果提供一個(gè)元組(min, max),則最小值和最大值將用作所有決策變量的界限。

method(可選參數(shù)):算法,{‘interior-point’, ‘revised simplex’, ‘simplex’}以上三種算法可選;數(shù)據(jù)類型:輸入如上三種字符串

callback(可選參數(shù)):調(diào)用回調(diào)函數(shù),我的理解是等待被調(diào)用的參數(shù) ,如果提供了回調(diào)函數(shù),則算法的每次迭代將至少調(diào)用一次。回調(diào)函數(shù)必須接受單個(gè) scipy.optimize.OptimizeResult由以下字段組成:

x:當(dāng)前解向量; 數(shù)據(jù)類型:一維數(shù)組

fun:目標(biāo)函數(shù)的當(dāng)前值(c^Tx); 數(shù)據(jù)類型:浮點(diǎn)數(shù)

success:當(dāng)算法成功完成時(shí)為 True;數(shù)據(jù)類型:布爾值

slack:不等式約束的松弛值(名義上為正值) b_{ub} ? A_{ub}x; 數(shù)據(jù)類型:一維數(shù)組

con:等式約束的殘差(名義上為零) b_{eq} ? A_{eq}x;數(shù)據(jù)類型:一維數(shù)組

phase:正在執(zhí)行算法的階段; 數(shù)據(jù)類型:整數(shù)

status:表示算法退出狀態(tài)的整數(shù); 數(shù)據(jù)類型:整數(shù)

0 : 優(yōu)化按名義進(jìn)行

1 : 達(dá)到了迭代限制

2 : 問(wèn)題似乎不可行

3 : 問(wèn)題似乎是不收斂

4 : 遇到數(shù)值困難

nit:當(dāng)前的迭代次數(shù); 數(shù)據(jù)類型:整數(shù)

message:算法狀態(tài)的字符串描述符; 數(shù)據(jù)類型:字符串

options(可選參數(shù))——求解器選項(xiàng)字典,所有方法都接受以下選項(xiàng):

數(shù)據(jù)類型:字典

maxiter:整數(shù),要執(zhí)行的最大迭代次數(shù)

disp:布爾值,設(shè)置為T(mén)rue以打印收斂消息,默認(rèn)值:False

autoscale:布爾值,設(shè)置為T(mén)rue以自動(dòng)執(zhí)行平衡,如果約束中的數(shù)值分開(kāi)幾個(gè)數(shù)量級(jí),請(qǐng)考慮使用此選項(xiàng),默認(rèn)值:False

presolve:布爾值,設(shè)置為False可禁用自動(dòng)預(yù)解析,默認(rèn)值:True

rr:布爾值,設(shè)置為False可禁用自動(dòng)移除冗余,默認(rèn)值:True

x0(可選參數(shù)):猜測(cè)決策變量的值,將通過(guò)優(yōu)化算法進(jìn)行優(yōu)化。當(dāng)前僅由’ revised simplex’ 方法使用此參數(shù),并且僅當(dāng) x0 表示基本可行的解決方案時(shí)才可以使用此參數(shù)。 數(shù)據(jù)類型:一維數(shù)組

’‘’

4 輸出格式

‘’‘

x:在滿足約束的情況下將目標(biāo)函數(shù)最小化的決策變量的值;數(shù)據(jù)類型:一維數(shù)組

fun:目標(biāo)函數(shù)的最佳值(c^Tx);數(shù)據(jù)類型:浮點(diǎn)數(shù)

slack:不等式約束的松弛值(名義上為正值) b_{ub}-A_{ub}x;數(shù)據(jù)類型:一維數(shù)組

con:等式約束的殘差(名義上為零)b_{eq}-A_{eq}x;數(shù)據(jù)類型:一維數(shù)組

success:當(dāng)算法成功找到最佳解決方案時(shí)為 True;數(shù)據(jù)類型:布爾值

status:表示算法退出狀態(tài)的整數(shù);數(shù)據(jù)類型:整數(shù)

0 : 優(yōu)化成功終止

1 : 達(dá)到了迭代限制

2 : 問(wèn)題似乎不可行

3 : 問(wèn)題似乎是不收斂

4 : 遇到數(shù)值困難

nit:在所有階段中執(zhí)行的迭代總數(shù);數(shù)據(jù)類型:整數(shù)

message:算法退出狀態(tài)的字符串描述符;數(shù)據(jù)類型:字符串 ’‘’

5 例子

import scipy

from scipy import optimize

import numpy

c = numpy.a(chǎn)rray([2,3]) #最值等式未知數(shù)系數(shù)矩陣

A_ub = numpy.a(chǎn)rray([[-1,1],[2,-2]]) #《=不等式左側(cè)未知數(shù)系數(shù)矩陣

B_ub = numpy.a(chǎn)rray([1,1]) #《=不等式右側(cè)常數(shù)矩陣

#A_eq = numpy.a(chǎn)rray() 等式左側(cè)未知數(shù)系數(shù)矩陣

#B_eq = numpy.a(chǎn)rray() 等式右側(cè)常數(shù)矩陣

x = (None,1) #未知數(shù)取值范圍

y = (None,None) #未知數(shù)取值范圍

res = scipy.optimize.linprog(c,A_ub,B_ub,bounds = (x,y)) #默認(rèn)求解最小值,求解最大值使用-c并取結(jié)果相反數(shù)

print(res)

#結(jié)果:無(wú)解情況

con: array([], dtype=float64)

fun: -8782091626.64441

message: ‘The algorithm terminated successfully and determined that the problem is unbounded.’#算法成功終止,確定問(wèn)題是無(wú)界的

nit: 3

slack: array([0.89897776, 1.20204449])

status: 3

success: False

x: array([-1.75641833e+09, -1.75641833e+09])

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4612

    瀏覽量

    92901
  • 矩陣
    +關(guān)注

    關(guān)注

    0

    文章

    423

    瀏覽量

    34548
  • 數(shù)據(jù)類型
    +關(guān)注

    關(guān)注

    0

    文章

    236

    瀏覽量

    13624
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Optimize 屬性范例 (VB)

    Optimize 屬性范例 (VB)本范例演示 Field 對(duì)象的動(dòng)態(tài) Optimize 屬性。Pubs 數(shù)據(jù)庫(kù)的 Authors 表的 Zip 字段未被索引。將 zip 字段的 Optimize
    發(fā)表于 01-08 10:23

    線性規(guī)劃函數(shù) linprog exitflag -4

    \private\lipsol at 697In linprog at 272In DEA_environment at 76 Exiting: cannot converge because
    發(fā)表于 09-07 06:45

    最全的晶體管參數(shù)查詢軟件

    本帖最后由 太子的空間 于 2016-11-29 21:07 編輯 最全的晶體管參數(shù)查詢軟件
    發(fā)表于 11-21 20:57

    最全的C語(yǔ)言庫(kù)函數(shù)

    最全的C語(yǔ)言庫(kù)函數(shù),希望大家多多下載。
    發(fā)表于 04-01 02:24

    在 MaxCompute UDF 中運(yùn)行 Scipy

    摘要: 新版 MaxCompute Isolation Session 支持 Python UDF。也就是說(shuō),Python UDF 中已經(jīng)可以跑二進(jìn)制包。剛才以 Scipy 為例踩了一下坑,把相關(guān)
    發(fā)表于 05-17 19:30

    在PyODPS DataFrame自定義函數(shù)中使用pandas、scipy和scikit-learn

    的,MaxCompute 的 Python 環(huán)境只包含了 numpy 這一個(gè)第三方包,用戶常常問(wèn)的問(wèn)題是,如何在自定義函數(shù)里使用 pandas、scipy 或者 scikit-learn 這樣的包含c
    發(fā)表于 05-17 19:48

    PICC庫(kù)函數(shù)詳解

    PICC庫(kù)函數(shù)詳解
    發(fā)表于 04-18 20:13 ?132次下載

    Android開(kāi)發(fā)手冊(cè)—API函數(shù)詳解

    Android開(kāi)發(fā)手冊(cè)—API函數(shù)詳解
    發(fā)表于 10-17 09:01 ?13次下載
    Android開(kāi)發(fā)手冊(cè)—API<b class='flag-5'>函數(shù)</b><b class='flag-5'>詳解</b>

    基于Android開(kāi)發(fā)手冊(cè)—API函數(shù)詳解

    基于Android開(kāi)發(fā)手冊(cè)—API函數(shù)詳解
    發(fā)表于 10-24 09:06 ?18次下載
    基于Android開(kāi)發(fā)手冊(cè)—API<b class='flag-5'>函數(shù)</b><b class='flag-5'>詳解</b>

    SCipy and NUMPY的電子書(shū)免費(fèi)下載

    SciPy是面向數(shù)學(xué)、科學(xué)和工程的開(kāi)源軟件。SciPy庫(kù)是為使用NumPy數(shù)組而構(gòu)建的,它提供了許多用戶友好且高效的數(shù)值例程。它們結(jié)合在一起很容易使用,但強(qiáng)大到足以被一些世界領(lǐng)先的科學(xué)家和工程師所依賴。
    發(fā)表于 01-02 08:00 ?7次下載

    Linux內(nèi)核GPIO操作函數(shù)詳解分析

    本文檔的主要內(nèi)容詳細(xì)介紹的是Linux內(nèi)核GPIO操作函數(shù)詳解分析免費(fèi)下載。
    發(fā)表于 01-22 16:58 ?28次下載

    Scipy-lecture-notes Python在科學(xué)計(jì)算的資料和指南

    scipy-lecture-notes.zip
    發(fā)表于 04-19 11:37 ?0次下載
    <b class='flag-5'>Scipy</b>-lecture-notes Python在科學(xué)計(jì)算的資料和指南

    scipy.optimize.linprog函數(shù)參數(shù)最全詳解

     callback(可選參數(shù)):調(diào)用回調(diào)函數(shù),我的理解是等待被調(diào)用的參數(shù) ,如果提供了回調(diào)函數(shù),則算法的每次迭代將至少調(diào)用一次。回調(diào)函數(shù)必須
    的頭像 發(fā)表于 12-07 10:26 ?1621次閱讀
    <b class='flag-5'>scipy.optimize.linprog</b><b class='flag-5'>函數(shù)</b><b class='flag-5'>參數(shù)</b><b class='flag-5'>最全</b><b class='flag-5'>詳解</b>

    Scipy是什么?Scipy子模塊有哪些呢?

    `Scipy`庫(kù)是`Python`生態(tài)系統(tǒng)中一個(gè)隱藏的 **「高手」** ,實(shí)力強(qiáng)大,歷史悠久,卻不那么為人熟知。
    的頭像 發(fā)表于 08-09 15:58 ?2933次閱讀
    <b class='flag-5'>Scipy</b>是什么?<b class='flag-5'>Scipy</b>子模塊有哪些呢?

    STM32庫(kù)函數(shù)SystemInit()詳解

    STM32庫(kù)函數(shù)SystemInit()詳解
    的頭像 發(fā)表于 09-18 15:45 ?4059次閱讀
    STM32庫(kù)<b class='flag-5'>函數(shù)</b>SystemInit()<b class='flag-5'>詳解</b>