管理经济学-使用Python和Z3求解本量利分析

使用Python和Z3库求解本量利分析

此代码几乎可以完全解决本量利分析的各项参数,也可以适用于其他各种类似的分析题,只要满足z3的求解条件即可。python版本为python3,使用的z3库为4.8.6,下载和安装请直接查看网上的教程。

Z3用于多项式的非线性分析,用于本量利分析不要太好,废话不多说,直接铺代码

以下为本量利分析的基本公式及变量值,如有需求可自行添加。基本不需要再做改动,但是要理解每个变量的含义

from z3 import *

s = Solver()

Price = Real('Price')
Quant = Real('Quant')   #All sale mount
Base = Real('Varied')
Profit = Real ('Profit')    #before tax
FC = Real('FC')     #Fixed Cost
CM = Real('CM')     #Contribution Margin
TCM = Real("TCM")   #Total Contribution
CMR = Real("CMR")   #Contribution Rate
BR = Real('BR') #Base Rate
EQ = Real('EQ') #Edge Quant
ET = Real('ET') #Edge Total
ST = Real('ST') #Sale Total
SER = Real('SER') #Safe Edge Rate
#完整公式
s.add(Profit == (Price-Base)*Quant - FC,CM == Price -Base,TCM == CM*Quant,CMR == CM/Price,BR == Base/Price,EQ == FC/CM,ET == EQ * Price,ST == Quant * Price,SER == EQ/Quant)

接下来是根据不同的题目的不同的环境输入条件值,condition通常是给定条件,而targetCondition用于决策分析,比如部分变量的改动额,以及目标额(通常是利润)。稍微解释下push和pop,pop会将与这个pop匹配的push之间的add操作全部删除。用于在主公式不变的情况下,分析个参数的影响值。

condition ={Price:10,Base:5,FC:150000,Quant:80000*0.5}
targetConditon = {Profit:80000}

#条件分析
s.push()
for key in condition:
    s.add(key == condition[key])
#s.add(Price == 350,Base == 28+188+52,FC == 45000+2000*12+2*1500*12+3*1000*12,Quant == 3600)
if( sat == s.check()):
    m = s.model()
    print(m)
else:
    print("No solve")
s.pop()


#决策分析
for key1 in condition:
    print("########",key1," Start","##########################")
    s.push()
    for key2 in condition:
        if(key2 == key1):
            for keyTarget in targetConditon:
                s.add(keyTarget == targetConditon[keyTarget])
        else:
            s.add(key2 == condition[key2])
    if( sat == s.check()):
        m = s.model()
        print(m)
    else:
        print("No solve")
    s.pop()
    print("########",key1," End","##########################")        

代码已经全部贴完,接下来看看效果,冰淇淋厂本量利分析题
各项参数如何计算不再赘述(实际意义不大),根据题目修改conditon和TargetCondition后,直接运行

condition ={Price:350,Base:268,FC:141000,Quant:3600}
targetConditon = {Profit:180000}

得到结果(结果没有排版,交给有需要的人),盈利值154200与答案一致,边界值等用分数表示请自行转换。
[FC = 141000, Varied = 268, ET = 24675000/41, ST = 1260000, Profit = 154200, SER = 235/492, EQ = 70500/41, BR = 134/175, CM = 82, Price = 350, Quant = 3600, TCM = 295200, CMR = 41/175]

决策分析结果
FC : 115200,Quant : 160500/41,Varied : 1565/6(大约是260),Price:2143/6(大约是357),表示任意一个参数达到以上的目标时,都可以达到指定的目标,盈利180000。比如固定成本降到115200,或者提价到357元/千只

以上,分析决策完毕。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值