校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 淺談Python數學建模之固定費用問題

淺談Python數學建模之固定費用問題

熱門標簽:梅州外呼業(yè)務系統(tǒng) 高德地圖標注是免費的嗎 北京電信外呼系統(tǒng)靠譜嗎 地圖標注視頻廣告 百度地圖標注位置怎么修改 洪澤縣地圖標注 老人電話機器人 大連crm外呼系統(tǒng) 無錫客服外呼系統(tǒng)一般多少錢

一、固定費用問題案例解析

1.1、固定費用問題(Fixed cost problem)

固定費用問題,是指求解生產成本最小問題時,總成本包括固定成本和變動成本,而選擇不同生產方式會有不同的固定成本,因此總成本與選擇的生產方式有關。

固定費用問題,實際上是互斥的目標函數問題,對于不同的生產方式具有多個互斥的目標函數,但只有一個起作用。固定費用問題不能用一般的線性規(guī)劃模型求解。

一般地,設有 m 種生產方式可供選擇,采用第 j 種方式時的固定成本為 \(K_j\)、變動成本為 \(c_j\)、產量為 \(x_j\),則采用各種生產方式的總成本分別為:

該類問題的建模方法,為了構造統(tǒng)一的目標函數,可以引入 m 個 0-1 變量 y_j 表示是否采用第 j 種生產方式:

于是可以構造新的目標函數和約束條件:

M 是一個充分大的常數。

1.2、案例問題描述

例題 1:

某服裝廠可以生產 A、B、C 三種服裝,生產不同種類服裝需要租用不同設備,設備租金、生產成本、銷售價格等指標如下表所示。

服裝種類 設備租金 材料成本 銷售價格 人工工時 設備工時 設備可用工時
單位 (元) (元/件) (元/件) (小時/件) (小時/件) (小時)
A 5000 280 400 5 3 300
B 2000 30 40 1 0.5 300
C 2000 200 300 4 2 300

如果各類服裝的市場需求都足夠大,服裝廠每月可用人工時為 2000h,那么應該如何安排生產計劃使利潤最大?

1.3、建模過程分析

首先要理解生產某種服裝就會發(fā)生設備租金,租金只與是否生產該產品有關,而與生產數量無關,這就是固定成本。因此本題屬于固定費用問題。

有些同學下意識地認為是從 3 種產品中選擇一種,但題目中并沒有限定必須或只能生產一種產品,因此決策結果可以是都不生產、選擇 1 種或 2 種產品、3 種都生產。

決策結果會是什么都不生產嗎?有可能的。

每種產品的利潤:(銷售價格 - 材料成本)× 生產數量 - 設備租金

本題中如果設備租金很高,決策結果就可能是什么都不做時利潤最大,這是利潤為 0,至少不虧。

現在可以用固定費用問題的數學模型來描述問題了:

1.4、PuLP 求解固定費用問題的編程

編程求解建立的數學模型,用標準模型的優(yōu)化算法對模型求解,得到優(yōu)化結果。

模型求解的編程步驟與之前的線性規(guī)劃、整數規(guī)劃問題并沒有什么區(qū)別,這就是 PuLP工具包的優(yōu)勢。

(0)導入 PuLP庫函數

import pulp

(1)定義一個規(guī)劃問題

FixedCostP1 = pulp.LpProblem("Fixed_cost_problem", sense=pulp.LpMaximize)  # 定義問題,求最大值

pulp.LpProblem 用來定義問題的構造函數。"FixedCostP1"是用戶定義的問題名。
參數 sense 指定問題求目標函數的最小值/最大值 。本例求最大值,選擇 “pulp.LpMaximize” 。

(2)定義決策變量

x1 = pulp.LpVariable('A', cat='Binary')  # 定義 x1,0-1變量,是否生產 A 產品
x2 = pulp.LpVariable('B', cat='Binary')  # 定義 x2,0-1變量,是否生產 B 產品
x3 = pulp.LpVariable('C', cat='Binary')  # 定義 x3,0-1變量,是否生產 C 產品
y1 = pulp.LpVariable('yieldA', lowBound=0, upBound=100, cat='Integer')  # 定義 y1,整型變量
y2 = pulp.LpVariable('yieldB', lowBound=0, upBound=600, cat='Integer')  # 定義 y2,整型變量
y3 = pulp.LpVariable('youCans', lowBound=0, upBound=150, cat='Integer')  # 定義 y3,整型變量

pulp.LpVariable 用來定義決策變量的函數。參數 cat 用來設定變量類型,' Binary ' 表示0/1變量(用于0/1規(guī)劃問題),' Integer ' 表示整數變量。'lowBound'、'upBound' 分別表示變量取值范圍的下限和上限。

(3)添加目標函數

FixedCostP1 += pulp.lpSum(-5000*x1-2000*x2-2000*x3+120*y1+10*y2+100*y3)  # 設置目標函數 f(x)

(4)添加約束條件

FixedCostP1 += (5*y1 + y2 + 4*y3 = 2000)  # 不等式約束
FixedCostP1 += (3*y1 - 300*x1 = 0)  # 不等式約束
FixedCostP1 += (0.5*y2 - 300*x2 = 0)  # 不等式約束
FixedCostP1 += (2*y3 - 300*x3 = 0)  # 不等式約束

添加約束條件使用 "問題名 += 約束條件表達式" 格式。
約束條件可以是等式約束或不等式約束,不等式約束可以是 小于等于 或 大于等于,分別使用關鍵字">="、"="和"=="。

(5)求解

FixedCostP1.solve()

solve() 是求解函數,可以對求解器、求解精度進行設置。

1.5、Python 例程:固定費用問題

import pulp      # 導入 pulp 庫

# 主程序
def main():
    # 固定費用問題(Fixed cost problem)
    print("固定費用問題(Fixed cost problem)")
    # 問題建模:
    """
        決策變量:
            y(i) = 0, 不生產第 i 種產品
            y(i) = 1, 生產第 i 種產品            
            x(i), 生產第 i 種產品的數量, i>=0 整數
            i=1,2,3
        目標函數:
            min profit = 120x1 + 10x2+ 100x3 - 5000y1 - 2000y2 - 2000y3
        約束條件:
            5x1 + x2 + 4x3 = 2000
            3x1 = 300y1
            0.5x2 = 300y2
            2x3 = 300y3
        變量取值范圍:Youcans XUPT
            0=x1=100, 0=x2=600, 0=x3=150, 整數變量
            y1, y2 ,y3 為 0/1 變量 
    """
    # 1. 固定費用問題(Fixed cost problem), 使用 PuLP 工具包求解
    # (1) 建立優(yōu)化問題 FixedCostP1: 求最大值(LpMaximize)
    FixedCostP1 = pulp.LpProblem("Fixed_cost_problem_1", sense=pulp.LpMaximize)  # 定義問題,求最大值
    # (2) 建立變量
    x1 = pulp.LpVariable('A', cat='Binary')  # 定義 x1,0-1變量,是否生產 A 產品
    x2 = pulp.LpVariable('B', cat='Binary')  # 定義 x2,0-1變量,是否生產 B 產品
    x3 = pulp.LpVariable('C', cat='Binary')  # 定義 x3,0-1變量,是否生產 C 產品
    y1 = pulp.LpVariable('yieldA', lowBound=0, upBound=100, cat='Integer')  # 定義 y1,整型變量
    y2 = pulp.LpVariable('yieldB', lowBound=0, upBound=600, cat='Integer')  # 定義 y2,整型變量
    y3 = pulp.LpVariable('yieldC', lowBound=0, upBound=150, cat='Integer')  # 定義 y3,整型變量
    # (3) 設置目標函數
    FixedCostP1 += pulp.lpSum(-5000*x1-2000*x2-2000*x3+120*y1+10*y2+100*y3)  # 設置目標函數 f(x)
    # (4) 設置約束條件
    FixedCostP1 += (5*y1 + y2 + 4*y3 = 2000)  # 不等式約束
    FixedCostP1 += (3*y1 - 300*x1 = 0)  # 不等式約束
    FixedCostP1 += (0.5*y2 - 300*x2 = 0)  # 不等式約束
    FixedCostP1 += (2*y3 - 300*x3 = 0)  # 不等式約束
    # (5) 求解 youcans
    FixedCostP1.solve()
    # (6) 打印結果
    print(FixedCostP1.name)
    if pulp.LpStatus[FixedCostP1.status] == "Optimal":  # 獲得最優(yōu)解
        for v in FixedCostP1.variables():  # youcans
            print(v.name, "=", v.varValue)  # 輸出每個變量的最優(yōu)值
        print("Youcans F(x) = ", pulp.value(FixedCostP1.objective))  # 輸出最優(yōu)解的目標函數值
    return

if __name__ == '__main__':  # Copyright 2021 YouCans, XUPT
    main()  

1.6、Python 例程運行結果

Welcome to the CBC MILP Solver 

Version: 2.9.0 

Build Date: Feb 12 2015 

Result - Optimal solution found

Fixed_cost_problem_1

A = 1.0

B = 1.0

C = 1.0

yieldA = 100.0

yieldB = 600.0

yieldC = 150.0

Max F(x) =  24000.0

從固定費用問題模型的求解結果可知,A、B、C 三種服裝都生產,產量分別為 A/100、B/600、C/150 時獲得最大利潤為:24000。

二、PuLP 求解規(guī)劃問題的快捷方法

2.1、PuLP 求解固定費用問題的編程

通過從線性規(guī)劃、整數規(guī)劃、0-1規(guī)劃到上例中的混合0-1規(guī)劃問題,我們已經充分體會到 PuLP 使用相同的步驟和參數處理不同問題所帶來的便利。

但是,如果問題非常復雜,例如變量數量很多,約束條件復雜,逐個定義變量、逐項編寫目標函數與約束條件的表達式,不僅顯得重復冗長,不方便修改對變量和參數的定義,而且在輸入過程中容易發(fā)生錯誤。因此,我們希望用字典、列表、循環(huán)等快捷方法來進行變量定義、目標函數和約束條件設置。

PuLP 提供了快捷建模的編程方案,下面我們仍以上節(jié)中的固定費用問題為例進行介紹。本例中的問題、條件和參數都與上節(jié)完全相同,以便讀者進行對照比較快捷方法的具體內容。

(0)導入 PuLP 庫函數

import pulp

(1)定義一個規(guī)劃問題

FixedCostP2 = pulp.LpProblem("Fixed_cost_problem", sense=pulp.LpMaximize)  # 定義問題,求最大值

(2)定義決策變量

types = ['A', 'B', 'C']  # 定義產品種類
status = pulp.LpVariable.dicts("生產決策", types, cat='Binary')  # 定義 0/1 變量,是否生產該產品
yields = pulp.LpVariable.dicts("生產數量", types, lowBound=0, upBound=600, cat='Integer')  # 定義整型變量

本例中的快捷方法使用列表 types 定義 0/1 變量 status 和 整型變量 yields,不論產品的品種有多少,都只有以上幾句,從而使程序大為簡化。

(3)添加目標函數

fixedCost = {'A':5000, 'B':2000, 'C':2000}  # 各產品的 固定費用
unitProfit = {'A':120, 'B':10, 'C':100}  # 各產品的 單位利潤
FixedCostP2 += pulp.lpSum([(yields[i]*unitProfit[i]- status[i]*fixedCost[i]) for i in types])

雖然看起來本例中定義目標函數的程序語句較長,但由于使用字典定義參數、使用 for 循環(huán)定義目標函數,因此程序更加清晰、簡明、便于修改參數、不容易輸入錯誤。

(4)添加約束條件

humanHours = {'A':5, 'B':1, 'C':4}  # 各產品的 單位人工工時
machineHours = {'A':3.0, 'B':0.5, 'C':2.0}  # 各產品的 單位設備工時
maxHours = {'A':300, 'B':300, 'C':300}  # 各產品的 最大設備工時
FixedCostP2 += pulp.lpSum([humanHours[i] * yields[i] for i in types]) = 2000  # 不等式約束
for i in types:
    FixedCostP2 += (yields[i]*machineHours[i] - status[i]*maxHours[i] = 0)  # 不等式約束

快捷方法對于約束條件的定義與對目標函數的定義相似,使用字典定義參數,使用循環(huán)定義約束條件,使程序簡單、結構清楚。

注意本例使用了兩種不同的循環(huán)表達方式:語句內使用 for 循環(huán)遍歷列表實現所有變量的線性組合,標準的 for 循環(huán)結構實現多組具有相似結構的約束條件。讀者可以對照數學模型及上例的例程,理解這兩種定義約束條件的快捷方法。

(5)求解和結果的輸出

# (5) 求解
FixedCostP2.solve()
# (6) 打印結果
print(FixedCostP2.name)
temple = "品種 %(type)s 的決策是:%(status)s,生產數量為:%(yields)d"
if pulp.LpStatus[FixedCostP2.status] == "Optimal":  # 獲得最優(yōu)解
    for i in types:
        output = {'type': i,
                    'status': '同意' if status[i].varValue else '否決',
                    'yields': yields[i].varValue}
        print(temple % output) # youcans@qq.com
    print("最大利潤 = ", pulp.value(FixedCostP2.objective))  # 輸出最優(yōu)解的目標函數值

由于快捷方法使用列表或字典定義變量,對求解的優(yōu)化結果也便于實現結構化的輸出。

2.2、Python 例程:PuLP 快捷方法

import pulp      # 導入 pulp 庫


# 主程序
def main():
    # 2. 問題同上,PuLP 快捷方法示例
    # (1) 建立優(yōu)化問題 FixedCostP2: 求最大值(LpMaximize)
    FixedCostP2 = pulp.LpProblem("Fixed_cost_problem_2", sense=pulp.LpMaximize)  # 定義問題,求最大值
    # (2) 建立變量
    types = ['A', 'B', 'C']  # 定義產品種類
    status = pulp.LpVariable.dicts("生產決策", types, cat='Binary')  # 定義 0/1 變量,是否生產該產品
    yields = pulp.LpVariable.dicts("生產數量", types, lowBound=0, upBound=600, cat='Integer')  # 定義整型變量
    # (3) 設置目標函數
    fixedCost = {'A':5000, 'B':2000, 'C':2000}  # 各產品的 固定費用
    unitProfit = {'A':120, 'B':10, 'C':100}  # 各產品的 單位利潤
    FixedCostP2 += pulp.lpSum([(yields[i]*unitProfit[i]- status[i]*fixedCost[i]) for i in types])
    # (4) 設置約束條件
    humanHours = {'A':5, 'B':1, 'C':4}  # 各產品的 單位人工工時
    machineHours = {'A':3.0, 'B':0.5, 'C':2.0}  # 各產品的 單位設備工時
    maxHours = {'A':300, 'B':300, 'C':300}  # 各產品的 最大設備工時
    FixedCostP2 += pulp.lpSum([humanHours[i] * yields[i] for i in types]) = 2000  # 不等式約束
    for i in types:
        FixedCostP2 += (yields[i]*machineHours[i] - status[i]*maxHours[i] = 0)  # 不等式約束
    # (5) 求解 youcans
    FixedCostP2.solve()
    # (6) 打印結果
    print(FixedCostP2.name)
    temple = "品種 %(type)s 的決策是:%(status)s,生產數量為:%(yields)d"
    if pulp.LpStatus[FixedCostP2.status] == "Optimal":  # 獲得最優(yōu)解
        for i in types:
            output = {'type': i,
                      'status': '同意' if status[i].varValue else '否決',
                      'yields': yields[i].varValue}
            print(temple % output)
        print("最大利潤 = ", pulp.value(FixedCostP2.objective))  # 輸出最優(yōu)解的目標函數值

    return

if __name__ == '__main__':  # Copyright 2021 YouCans, XUPT
    main()  

2.3、Python 例程運行結果

Welcome to the CBC MILP Solver 

Version: 2.9.0 

Build Date: Feb 12 2015 

Result - Optimal solution found

Fixed_cost_problem_2

品種 A 的決策是:同意,生產數量為:100

品種 B 的決策是:同意,生產數量為:600

品種 C 的決策是:同意,生產數量為:150

最大利潤 =  24000.0

本例的問題、條件和參數都與上節(jié)完全相同,只是采用 PuLP 提供的快捷建模的編程方案,優(yōu)化結果也與 PuLP 標準方法完全相同,但本例使用了結構化的輸出顯示,使輸出結果更為直觀。

以上就是淺談Python數學建模之固定費用問題的詳細內容,更多關于Python 數學建模 固定費用的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 淺談Python數學建模之整數規(guī)劃
  • 淺談Python數學建模之數據導入
  • 淺談Python數學建模之線性規(guī)劃
  • Python進行統(tǒng)計建模
  • 利用python實現平穩(wěn)時間序列的建模方式
  • python實現數據分析與建模

標簽:泉州 清遠 怒江 安慶 吉林 洛陽 岳陽 長春

巨人網絡通訊聲明:本文標題《淺談Python數學建模之固定費用問題》,本文關鍵詞  淺談,Python,數學建模,之,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《淺談Python數學建模之固定費用問題》相關的同類信息!
  • 本頁收集關于淺談Python數學建模之固定費用問題的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    国产精品一区二区三区99| 欧美伊人久久久久久久久影院 | 亚洲激情中文1区| 久久人人超碰精品| 欧美精品777| 欧美视频在线一区| 日本久久电影网| 99久精品国产| 国产不卡一区视频| 国产伦精品一区二区三区免费迷 | 欧美午夜精品久久久久久超碰| 99免费精品视频| 成人免费视频一区二区| 国产91精品露脸国语对白| 国产专区综合网| 国产精品夜夜爽| 高清国产一区二区| 不卡大黄网站免费看| 成人91在线观看| 91在线免费视频观看| 91丨porny丨国产入口| 色婷婷精品大在线视频| 欧美色图12p| 91精品国产综合久久婷婷香蕉| 欧美老年两性高潮| 日韩免费观看高清完整版在线观看| 精品区一区二区| 国产亚洲精品中文字幕| 中文字幕巨乱亚洲| 亚洲激情图片qvod| 日韩电影网1区2区| 国内久久精品视频| 色哟哟一区二区| 91精品国产一区二区三区蜜臀 | 日韩电影一二三区| 国产一区二区按摩在线观看| 99riav久久精品riav| 欧美精品精品一区| 久久精品水蜜桃av综合天堂| 日韩伦理av电影| 免费高清成人在线| 97超碰欧美中文字幕| 91精品婷婷国产综合久久| 久久亚洲精华国产精华液| 亚洲欧美国产三级| 久草热8精品视频在线观看| 成人av在线观| 欧美成人精品二区三区99精品| 国产精品久久毛片av大全日韩| 日韩va欧美va亚洲va久久| 波波电影院一区二区三区| 3d动漫精品啪啪一区二区竹菊| 国产欧美一区视频| 日本欧美大码aⅴ在线播放| 成人毛片在线观看| 欧美tickling挠脚心丨vk| 一区二区三区四区精品在线视频| 免费看日韩精品| 欧美色视频在线观看| 亚洲欧洲另类国产综合| 久久99精品久久久| 欧美猛男超大videosgay| 国产精品久久久久国产精品日日| 久久精品国内一区二区三区| 欧美午夜精品一区| 一区二区三区产品免费精品久久75| 国产在线不卡一卡二卡三卡四卡| 欧美电影在线免费观看| 一区二区三区在线观看欧美| 成人网在线播放| 久久久精品tv| 国产综合成人久久大片91| 精品国产精品网麻豆系列| 日韩电影在线观看一区| 欧美日韩另类国产亚洲欧美一级| 亚洲欧洲成人精品av97| 不卡的av电影| 中文字幕亚洲在| av激情综合网| 日韩毛片一二三区| 一本到不卡精品视频在线观看| 国产精品国产三级国产| 99久久久免费精品国产一区二区| 国产精品视频一区二区三区不卡| 国产一区二区美女| 国产欧美一区二区精品久导航| 国产成人在线视频网址| 国产欧美一区二区三区在线看蜜臀| 国产91丝袜在线播放九色| 国产精品国产三级国产三级人妇| 97国产精品videossex| 亚洲成人先锋电影| 欧美va亚洲va国产综合| 国产精品亚洲成人| 亚洲欧美另类图片小说| 91麻豆精品国产91久久久资源速度| 男男视频亚洲欧美| 国产欧美日韩三级| 色综合天天综合色综合av | 午夜电影网亚洲视频| 精品国产网站在线观看| 成人午夜免费电影| 亚洲国产一区二区三区| 日韩欧美自拍偷拍| 国产91富婆露脸刺激对白| 亚洲啪啪综合av一区二区三区| 欧美三级中文字幕| 国产成人8x视频一区二区 | 99re这里只有精品6| 无码av免费一区二区三区试看 | 日本不卡免费在线视频| 国产精品入口麻豆原神| 欧美日韩国产小视频| 粉嫩av一区二区三区| 日本欧美加勒比视频| 亚洲狼人国产精品| 久久久久久久久久久99999| 欧美日韩三级视频| 成人少妇影院yyyy| 老司机免费视频一区二区 | 国产精品毛片高清在线完整版| 欧美猛男男办公室激情| 99国产精品视频免费观看| 国产一区二区三区精品欧美日韩一区二区三区 | 日本大胆欧美人术艺术动态 | 中文字幕中文字幕中文字幕亚洲无线| 51午夜精品国产| 欧美午夜片在线观看| 色综合视频一区二区三区高清| 欧美日韩综合在线免费观看| 国内精品国产成人国产三级粉色 | 丁香另类激情小说| 国产一区999| 久久精品国产精品青草| 亚洲chinese男男1069| 亚洲二区在线视频| 一区二区三区高清| 亚洲欧美日韩在线| 亚洲女人小视频在线观看| 国产精品乱人伦| 国产日韩欧美精品综合| 国产午夜久久久久| 久久久美女毛片| 久久夜色精品国产噜噜av| 精品日韩在线观看| 国产亚洲综合在线| 国产无人区一区二区三区| 久久新电视剧免费观看| 26uuu久久综合| 久久久亚洲午夜电影| 久久精品人人做人人爽人人| 欧美激情综合五月色丁香| 国产亚洲欧美一级| 国产精品色哟哟网站| 亚洲乱码中文字幕| 午夜a成v人精品| 久久99精品国产.久久久久| 国模少妇一区二区三区| 成人激情开心网| 精品视频全国免费看| 日韩欧美三级在线| 中文字幕免费不卡在线| 亚洲小少妇裸体bbw| 奇米亚洲午夜久久精品| 国产91露脸合集magnet| 91国产成人在线| 欧美成人一级视频| 亚洲人成电影网站色mp4| 首页欧美精品中文字幕| 国模一区二区三区白浆| 99精品欧美一区| 91精品国产色综合久久不卡蜜臀| 2021久久国产精品不只是精品| 亚洲欧洲另类国产综合| 久久99精品久久久久久久久久久久| 国产成人在线电影| 欧美色涩在线第一页| 国产性色一区二区| 亚洲成年人网站在线观看| 懂色av噜噜一区二区三区av| 欧美日韩激情一区二区三区| 日韩av不卡在线观看| 处破女av一区二区| 欧美精品99久久久**| 中文字幕一区二区视频| 久热成人在线视频| 欧美三级电影网| 亚洲欧美日韩电影| 国产综合色在线| 91麻豆精品国产91久久久更新时间 | 欧美色成人综合| 亚洲青青青在线视频| 成人福利在线看| wwwwww.欧美系列| 老司机免费视频一区二区三区| 欧美日韩一二三区| 亚洲免费大片在线观看| 成人午夜看片网址| 国产欧美一区二区三区在线老狼 | 亚洲高清久久久|