作業要求:
**點遊戲簡單介紹
假設有m個人參與**點遊戲,每輪遊戲每個人提兩個(0, 100)間的有理數,共2m個數,求這2m個數的平均數再將這個平均數乘以0.618得到這一輪的**點,提出離**點最近的數的人得2m分(同樣近的人一起得分),離**點最遠的人扣兩分。
在本次實驗中,我們需要寫乙個bot來在每輪遊戲中自動提出兩個數,每次遊戲前,bot能拿到之前所有輪次遊戲的每個人提的兩個數和**點,每場遊戲共進行400輪,共有上半場和下半場兩場遊戲,累計得分最高的bot獲勝。
我們的策略介紹
我們放棄了**每乙個對手的輸出和使用強化學習等複雜演算法的方案。相反,我們使用簡單的統計策略,利用前n局的**點的資訊,對當前**點進行**。我們採用乙個佇列,對前n局的**點資訊進行統計,並且根據一定的劃分和更新策略,我們可以得到m(\(m \leq n\))個**點,然後我們根據佇列中概率最大的兩個**點進行輸出。
psp**記錄預估時間
我們的專案開始時,並沒有考慮利用psp**預估時間,在後面的實驗中,我們會改善此方面。
介面設計
由於我們的bot僅僅只需要乙個前n個**點的統計佇列,以及待選**點的更新列表,所以我們預打算乙個函式實現所有功能,根據當前history資訊,返回插入和更新後的待****點列表和近50輪的統計佇列。主函式根據返回的資訊進行輸出。
介面實現
我們的程式功能十分簡單,只有兩個函式,沒有class,所以並不需要流程圖的表示。另外在設計的過程中,我們的演算法考慮到了存在少數人搗亂的情況,可以去**兩個**點的極限值。另外對於大家更改策略的行為,我們的佇列也能夠很快的得以適應。
uml圖
僅有2個函式,沒有類,沒有實體,所有並不需要uml圖的表示。
design by contract
我們方法中的體現
我們在這次程式設計的任務中,由於任務比較簡單,關於介面的交流較少,所以並沒有採用這種設計方式。
結對共識
我們分工合作,在程式設計之前就已經互相商量了應該傳入的引數和返回的結果,採用簡單的注釋,我們便達到了共識。在程式設計中沒有遇到異常。
ui模組
我們並沒有ui模組,所以並沒有ui模組的設計和其他模組之間的對接部分。
結對過程
我們的結對過程非常的愉快,在合作中我們互相學習,共同的進步。
下面是我們正在討論的過程。。。
結對小夥伴
我們在結對過程中,採取的是駕駛員和領航員靈活的合作方式。通過指導監督和執行的交替合作,我們獲得了更好的合作體驗。
合作夥伴的評價
實際花費時間
這個在我們的實際過程中並沒有記錄,所以無法進行對比。
其他收穫
在這次的比賽中,我們的方法比較簡單,主要是我們擔心複雜的演算法會花費我們較大的時間精力,最後結果也不是很好。所以了,一分耕耘一分收穫,沒有付出,就沒有回報。在以後的作業中,我們會認真的對待。
軟體工程第二週作業
機器學習相比邏輯推理知識工程等傳統技術,是基於概率論中的模型 策略和演算法發展起來的。在經過演算法和算力等的發展下,深度學習越來越成熟了,在影象識別,語言處理等方面都有著廣泛的應用。但深度學習也並非無所不能的,它也有一些缺點,如演算法輸出不穩定,容易被攻擊 模型複雜度高,難以糾錯和除錯 模型層級復合...
現代軟體工程作業二
天津大學軟體學院 聶學成 2012218007 盧思洋 2012218006 開發團隊的不足之處 不足一 缺少實際使用者的參與。在軟體開發過程中,使用者對於需求的確定起著很大的作用。在這個專案的整個開發流程中,雖然最初確定了典型使用者,但這之後根本沒有讓使用者參與進來,需求的提出和確定都是開發人員來...
軟體工程第二週開篇部落格
第二週開篇部落格 1.介紹自己 我是乙個很平凡的普通人,但是有著不平凡的一顆心。我的性格屬於那種可能初看覺得很高冷,但是慢慢熟悉之後發現原來事實是乙個逗比 玩的不錯的朋友的評價 我可能是屬於那種慢慢熟的一種人。我個人喜歡一些體育專案,我在初中的時候打過桌球,為了能在台上多打一會,努力並且付出實踐了一...