プログラミング技術を定量化する - 数学的な最適解

ABC インポートABCMeta、AbstractMethod
 インポートシックス・
 インポートNP AS numpyの
 インポートPANDAS AS PD
 インポートPLTのAS matplotlib.pyplot 

#のみんな平均寿命は75年、約75 * 365 = 27375日です 
K_INIT_LIVING_DAYS = 27375 クラスパーソン(オブジェクト):
     "" " 
        人間"、 "" DEF __init__ (セルフ):
        平均的な人が住むことができる初期化する生活 
        self.living = K_INIT_LIVING_DAYS
         幸福指数の初期化 
        self.happiness = 0
         #は富の値を初期化 
        self.wealth = 0
        


    

     初期化名声権 
        = self.fame 0
         最初の数日間で生き 
        self.living_day = 0 

    DEFのlive_one_dayは(セルフシーク):
         「」 " 
        一日が求める、求めることができるが、あなたが与えることを今日求めるかを決定します何
        BaseSeekDay所属のタイプが書か追求する
        のparam求める:: 
        ::リターン
        「」 " 
        #のコールdo_seek_dayそれぞれ独自のBaseSeekDayクラスが今日の収穫を達成するために実装されます 
        consume_livingを、幸福、富、名声= (seek.do_seek_dayを)
         毎日の生活のマイナス消費量を、いくつかは、以前の生活の増加を図ってまいります 
        self.livingを- = consume_living
         幸福指数累積取得しよう 
        + = self.happiness 幸福を
        富の蓄積によるシーク 
        self.wealth + = #を電源の名声の蓄積を取得シーク 
        self.fame + = 名声
         #は、この日の後に生きて 
        self.living_day + = 1 クラスBaseSeekDay(six.with_metaclass(ABCMeta、オブジェクト)):
     DEFの__init__ (セルフ):
        生活の一定の追求の各毎日消費 
        self.living_consume = 0 幸福の毎日指数定数を追求 
        self.happiness_base = 0 富の蓄積定数追求する毎日 
        self.wealth_base = 0
         各追求を蓄積一定の毎日は、名声の主張 
        self.fame_base = 0 #を


 

        

        

        人生の毎日消費変動要因シーケンスの追求 
        self.living_factor = [0] 

        幸福指数変動要因シーケンス追求する日々 
        = self.happiness_factor [0] 

        富の蓄積変数を追求する毎日は、順序 
        、自己を= .wealth_factor [0]
        請求名声の日あたりの追求変数列 
        self.fame_factor = [0] 

        この生命の日数を追求 
        self.do_seek_day_cnt = 0
         #が設定定数と変数シーケンスサブクラス
        自己を._init_self()

    @abstractmethod 
    DEF _init_self(セルフ、* argsを、** kwargsから):
        サブクラスは、実装する彼の人生の一定の消費量を設定し、一定の設定幸福指数定数必要があります
        パスが

    @abstractmethod 
    DEF_gen_living_days(セルフ、* argsを、** kwargsから):
        サブクラスが実装しなければならない、セットアップ独自の変数シーケンス
        パス

    DEFのdo_seek_day(自己):
         「」「
        追求毎日、特にシーク
        :リターン:
        」「」
        #の生活の消費量= living_consume:一定の消費* happiness_factor:可変配列
        IF self.do_seek_day_cnt> = LEN(self.living_factor):
            LEN(self.living_factor)を超え、それは[-1]最後のliving_factorを取る 
            consume_living = \ 
                self.living_factorの[ - 1] * self.living_consume
         各クラスのカスタムは、この一定の消費の生活だけでなく、living_factorを追求する、のような
            負シーケンスliving_factorから健康値のHealthSeekDay追求、すなわち、 - >値
            各サブクラスliving_factorはそれぞれ、その結果、独自の配列特徴の速度及び長さを変える
            #1 からの変化数の追求と消費生活の追求 
            consume_living = self.living_factor [self.do_seek_day_cnt] \
                              * self.living_consume
         #の幸福指数= happiness_base:まあ定数* happiness_factor:可変配列
        IF self.do_seek_day_cnt> = LEN(self.happiness_factor):
            は、LEN(self.happiness_factor)を超え、最後に、それはとり
            #を値happiness_factorので:N-> 0そうhappiness_factor [-1] = 0 
            すなわち、事の追求の数は幸福の後に過剰にならないよう 
            幸福= self.happiness_factor [
                             * -1]self.happiness_base
         一定の幸福指数の追求をカスタマイズするには、各クラスを、そしてhappiness_factorの
            #が高いから、一般的にhappiness_factorサブクラスを定義する- >低い変動の 
            幸福= self.happiness_factor [ 
                            self.do_seek_day_cnt] * self.happiness_baseの
         #の富蓄積= wealth_base:累積定数* wealth_factor:可変配列
        IF self.do_seek_day_cnt> = LEN(self.wealth_factor):
            最終取るために、LEN(self.wealth_factor)を超え 
            ウェルス・self.wealth_factor = [-1] * 自己を。 wealth_base
         各クラスには、富の指数定数、およびwealth_factorの追求をカスタマイズします
            =富self.wealth_factor [ 
                         self.do_seek_day_cnt] * self.wealth_base
         #1 項蓄積= fame_base:蓄積定数* fame_factor:可変配列
        IF self.do_seek_day_cnt> = LEN(self.fame_factor):は、LEN(self.fame_factor)を超え、最後に、それは取る 
            [-1] * =名声self.fame_factor self.fame_base
         各カスタムクラスインデックスは、名声、この一定の追求を主張し、そしてfame_factorの 
            名声= self.fame_factor [ 
                       self.do_seek_day_cnt] * self.fame_baseの
         この生活+ 1の日数の追求
        + = 1つのself.do_seek_day_cntの#がする幸福、富、名声の権利を取得するには、人生のこの日の消費量の追求を返す返さconsume_living、幸福、富、名声DEFのregular_mm(グループ):
    最小-最大標準化リターン(グループ-グループ。分())/(group.max() - group.min())クラスHealthSeekDay(BaseSeekDay):
     "" " 
        HealthSeekDayは、一日の健康と長寿を追求:
        何かやってに興味フィットネス、旅行、娯楽、:のイメージ。
        抽象的に:健康と長寿の追求。 「」" DEF _init_self(セルフ):
        定数消費の日常生活= 1、1日表し 
        self.living_consume = 1 幸せな一日の指数定数= 1 
        self.happiness_base = 1つのセット変数をシーケンス
        
        
        
        

    



    

    
        
        
        self._gen_living_days()

    DEFの_gen_living_days(セルフ):
        happiness_factorの1-> 0によって値以下の一連のため、のみ12,000のシーケンスを生成
        それは単に生命を消費しますよりも12,000倍の追求は、幸福指数を増加させない
        すなわちより多くの場合、それは完全に幸福の経験されていないまで幸せが、下の方になっ、一つのことをやってよう 
        日= np.arange(1、12000 基本的な機能選択SQRTを、配列の変化の速度が影響を与える 
        = living_days NPを。 SQRT(日)

        「」 " 
            人生の追求の始まりは、可変因子配列-1-> 1、つまりによって生活消費値、
            数は人生の追求に成長していると、マイナス成長で消費されると寿命を延ばします消費がプラスに転じた
            人でもエクササイズ毎日場合は、毎日の栄養補助食品を食べて、まだその自然死持っているので、番号を
            1日
        「」 "。 
        目的* 2-1:regular_mm 0-1間、HealthSeekDay結果に-1,1の間
        = regular_mm self.living_factor(living_days)* 2つの--1 #1 [:: --1] 1-0との間の結果:0-> 1> 0 1-に変換 
        self.happiness_factor = regular_mmを(日)[:: - 1 ] #は、私にあなたの人生の物語を初期化:HealthSeekDay 
私は= 人()
は、健康と長寿の追求を幸せに初期化 
seek_health = HealthSeekDay()
 のwhile > me.living :0
     長い彼が住んでいるとして、健康と長寿の幸せの追求    me.live_one_day(seek_healthを)を印刷' 幸福の追求だけが長く、健康的な生活を{}年生きるために、幸福指数{} {}富の蓄積、名声力を{} ' .format 
      (ラウンド(me.living_day / 365、2)、ラウンド(me.happiness、 2 )、
       me.wealth、me.fame))
        
        
        




       
       
plt.plot(seek_health.living_factor * seek_health.living_consume)
plt.plot(seek_health.happiness_factor * seek_health.happiness_base)
plt.legend([ ' living_factor '' happiness_factor ' ]、LOC = ' 最高'

 

おすすめ

転載: www.cnblogs.com/fangbei/p/11521580.html