for循环中遍历小数(i取0.1、0.2等)

for i in range(1,5,2):
    print(i)
 
>>> 1 3

上述普通for循环中,i是[1,5)中每隔一个数取一个数(每两个数取一个)

而尝试使用 for i in range(0.1,0.5,0.2): 就会报错,是因为range中只能用整数

------------------解决方法-------------------

import numpy as np

for i in np.arange(0.1,0.5,0.2):
    print(i)

>>> 0.1 0.3

import sympy as sp Ps=56 P1=4 P2=18 P3=6, c1=[2,2,2,1,8,2] c2=[3,3,3,1,1,3] c3=[3,3,3,2,2,3] c4=[5,5,5,5,5,40] c5=[6,6,30,30,10,10] p1=[0.1,0.2,0.1,0.2,0.1,0.05] p2=[0.1,0.2,0.1,0.2,0.2,0.05] p3=[0.1,0.2,0.1,0.2,0.1,0.05] N1=N2=Nt=1 #N3=sp.symbols('N3') #M3=sp.symbols('M3') #NYY_YNY情况 def NYY_YNY(p1,p2,p3,c1,c2,c3,c4,c5,P1=4,P2=18,P3=6,Ps=56,Nt=1): N3=Nt*(1-p2) M3=N3*(1-(1-p1)*(1-p3)) income=N3*(1-p1)*(1-p3)*Ps cost=Nt*(c2+P1+P2)+N3*(P3+c3) #拆分后的收支 pos=(Nt-Nt*max(p1,p2))-(N3-M3) cost_d=M3*(c4+c1) income_d=pos*Ps #迭代部分 while pos>0: cost_d=cost_d+pos*(P3+c3)+pos*p3*c4 pos=pos*p3 cost_total=cost_d+cost income_total=income+income_d probit=income_total-cost_total return cost_total,income_total,probit #NYN_YNN情况 def NYN_YNN(p1,p2,p3,c1,c2,c3,c4,c5,P1=4,P2=18,P3=6,Ps=56,Nt=1): N3=Nt*(1-p2) M3=N3*(1-(1-p1)*(1-p3)) income=N3*(1-p1)*(1-p3)*Ps cost=Nt*(c2+P1+P2)+N3*(P3+c5) #拆分后的收支 pos=(Nt-Nt*max(p1,p2))-(N3-M3) cost_d=M3*(c4+c1) income_d=pos*Ps #迭代部分 while pos>0: cost_d=cost_d+pos*P3+pos*p3*(c4+c5) pos=pos*p3 cost_total=cost_d+cost income_total=income+income_d probit=income_total-cost_total return cost_total,income_total,probit #YNY_NYY情况 def YNY_NYY(p1,p2,p3,c1,c2,c3,c4,c5,P1=4,P2=18,P3=6,Ps=56,Nt=1): N3=Nt*(1-p1) M3=N3*(1-(1-p2)*(1-p3)) income=N3*(1-p2)*(1-p3)*Ps cost=Nt*(c1+P1+P2)+N3*(P3+c3) #拆分后的收支 pos=(Nt-Nt*max(p1,p2))-(N3-M3) cost_d=M3*(c4+c2) income_d=pos*Ps #迭代部分 while pos>0: cost_d=cost_d+pos*(P3+c3)+pos*p3*c4 pos=pos*p3 cost_total=cost_d+cost income_total=income+income_d probit=income_total-cost_total return cost_total,income_total,probit #NNN_YYN情况 def NNN_YYN(p1,p2,p3,c1,c2,c3,c4,c5,P1=4,P2=18,P3=6,Ps=56,Nt=1): N3=Nt M3=Nt*(1-(1-p1)*(1-p2)*(1-p3)) income=N3*(1-p1)*(1-p2)*(1-p3)*Ps cost=Nt*(P3+P1+P2)+M3*c5 #拆分后的收支 pos=M3-Nt*max(p1,p2) cost_d=M3*(c4+c2+c1) income_d=pos*Ps #迭代部分 while pos>0: cost_d=cost_d+pos*P3+pos*p3*(c4+c5) pos=pos*p3 cost_total=cost_d+cost income_total=income+income_d probit=income_total-cost_total return cost_total,income_total,probit #YYY_NNY情况 def YYY_NNY(p1,p2,p3,c1,c2,c3,c4,c5,P1=4,P2=18,P3=6,Ps=56,Nt=1): N3=Nt*(1-max(p1,p2)) M3=Nt*p3 income=N3*(1-p3)*Ps cost=Nt*(c1+P1+P2+c2)+N3*(P3+c3) #拆分后的收支 pos=N3*p3 cost_d=pos*c4 income_d=pos*Ps #迭代部分 while pos>0: cost_d=cost_d+pos*(P3+c3)+pos*p3*c4 pos=pos*p3 cost_total=cost_d+cost income_total=income+income_d probit=income_total-cost_total return cost_total,income_total,probit #YNN_NYN情况 def YNN_NYN(p1,p2,p3,c1,c2,c3,c4,c5,P1=4,P2=18,P3=6,Ps=56,Nt=1): N3=Nt*(1-p1) M3=N3*(1-(1-p2)*(1-p3)) income=N3*(1-p2)*(1-p3)*Ps cost=Nt*(c1+P1+P2)+N3*P3+M3*c5 #拆分后的收支 pos=(Nt-Nt*max(p1,p2))-(N3-M3) cost_d=M3*(c4+c2) income_d=pos*Ps #迭代部分 while pos>0: cost_d=cost_d+pos*P3+pos*p3*(c4+c5) pos=pos*p3 cost_total=cost_d+cost income_total=income+income_d probit=income_total-cost_total return cost_total,income_total,probit #YYN_NNN情况 def YYN_NNN(p1,p2,p3,c1,c2,c3,c4,c5,P1=4,P2=18,P3=6,Ps=56,Nt=1): N3=Nt*(1-max(p1,p2)) M3=Nt*p3 income=N3*(1-p3)*Ps cost=Nt*(c1+P1+P2+c2)+N3*(P3+c5) #拆分后的收支 pos=N3*p3 cost_d=M3*c4 income_d=pos*Ps #迭代部分 while pos>0: cost_d=cost_d+pos*P3+pos*p3*(c4+c5) pos=pos*p3 cost_total=cost_d+cost income_total=income+income_d probit=income_total-cost_total return cost_total,income_total,probit #NNY_YYY情况 def NNY_YYY(p1,p2,p3,c1,c2,c3,c4,c5,P1=4,P2=18,P3=6,Ps=56,Nt=1): N3=Nt M3=Nt*(1-(1-p1)*(1-p2)*(1-p3)) income=N3*(1-p1)*(1-p2)*(1-p3)*Ps cost=Nt*(P1+P2+P3+c3) #拆分后的收支 pos=(Nt-Nt*max(p1,p2))-(N3-M3) cost_d=M3*(c4+c1+c2) income_d=pos*Ps #迭代部分 while pos>0: cost_d=cost_d+pos*(P3+c3)+pos*p3*c4 pos=pos*p3 cost_total=cost_d+cost income_total=income+income_d probit=income_total-cost_total return cost_total,income_total,probit #NNN情况 def NNN(p1,p2,p3,c1,c2,c3,c4,c5,P1=4,P2=18,P3=6,Ps=56,Nt=1): N3=Nt M3=Nt*(1-(1-p1)*(1-p2)*(1-p3)) income=N3*(1-p1)*(1-p2)*(1-p3)*Ps cost=Nt*(P3+P1+P2)+M3*c5 probit=income-cost return cost,income,probit #循环求解 f=[NYY_YNY,NYN_YNN,YNY_NYY,YNN_NYN,YYN_NNN,NNY_YYY,YYY_NNY,NNN_YYN,NNN] for i in range(6): max_cost=0 max_income=0 max_probit=0 for j in range(9): cost_total,income_total,probit=f[j](p1[i],p2[i],p3[i],c1[i],c2[i],c3[i],c4[i],c5[i]) if max_probit<probit: max_cost=cost_total max_income=income_total max_probit=probit fy=f[j] else: continue print('第{:}个情况的最优方法为{:},期望成本为{:<20},期望利润为{:}'.format(i,str(fy),max_cost,max_probit)) 实现代码表高亮
最新发布
07-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值