在終端機下達指令: brew install scala
2016年5月18日 星期三
Scala IDE for Eclipse 安裝
Help->Install New Software->Add
Name: Scala IDE
Location: http://download.scala-ide.org/sdk/lithium/e44/scala211/stable/site
把 Scala IDE for Eclipse 和 Scala IDE for Eclipse Development Support兩個選項打勾
Name: Scala IDE
Location: http://download.scala-ide.org/sdk/lithium/e44/scala211/stable/site
把 Scala IDE for Eclipse 和 Scala IDE for Eclipse Development Support兩個選項打勾
然後等待一段時間下載
開一個Scala專案
輸入HolloWorld.scala 檔案
object HellWorld extends App {
println ( "hello,")
開一個Scala專案
輸入HolloWorld.scala 檔案
}
執行看看有沒有差
不能使用Application 因為
Application has been deprecated from scala 2.9, probably it has been deleted in scala 2.11 (it still exists in scala 2.10) even though at the moment I can't find proofs for that, use App instead.
執行看看有沒有差
不能使用Application 因為
Application has been deprecated from scala 2.9, probably it has been deleted in scala 2.11 (it still exists in scala 2.10) even though at the moment I can't find proofs for that, use App instead.
2016年5月8日 星期日
基因演算法運用及程式碼
碩士期間剛好有一堂是最佳演算法,講到基因演算法的運用和作業
剛好有機會記下來,與網友們一起討論使用
題目是:
6.挑選與複製方法
7.交配與交配機率
8.突變與突變機率
9.終止條件
1. 題目
Max f (x 1, x2
) = 21.5 + x1 sin(4πx1) + x2 sin(20πx2
)
−3. 0 ≤ x1 ≤ 12.1, 4.1 ≤
x2 ≤ 5.8
試以基因演算法求最大值f
2. 基因演算法(以流程圖或虛擬碼表示即可)
3. 設計編碼方式 (使用二進位編碼來代表 x1 與 x2
的值)
4. 決定群體規模 (族群數量)
5. 設計適應函數 (決定個體適應度的評估標準)
6. 決定挑選與複製方法
7. 定義交配與交配機率
8. 定義突變與突變機率
9. 決定終止條件
10. 結果與討論(含收斂過程圖)
我的解法
2.基因演算法流程圖
我的解法
2.基因演算法流程圖
3.編碼方式
假設某個數值x1=11.1
X1==11.1;
If(x1==11.1)
{
x1=(x1+3)*10;
x1_binary=Integer.toBinary (x1);
x1_binary=Integer.toBinary (x1);
}
x1_binary==10001101;
假設某個數值x1 二進位= 10001101
x1_binary==10001101;
If(x1_binary==10001101)
{
x1=Integer. valueOf(x1_binary);
x1=x1/10-3;
}
X1==11.1;
假設某個數值x1=-3.0
X1==0;
If(x1==-3.0)
{
x1=(x1+3)*10;
x1_binary=Integer.toBinary (x1);
x1_binary=Integer.toBinary (x1);
}x1_binary== 00000000;
假設某個數值x1 二進位= 00000000
x1_binary== 00000000;
If(x1_binary==00000000)
{
x1=Integer.valueOf(x1_binary);
x1=x1/10-3;
}
X1==0;
4.群體規模
(族群數量)
初始群體規模為
int groundCount=10;
經過第一次交配,以後規模擴增為
copulationCount=groundCount*2;
5.適應函數
直接代入
Max f (x1, x2 ) = 21.5 + x1 sin(4πx1) + x2 sin(20πx2 )
求f當適應函數
6.挑選與複製方法
樣本基因利用公式計算出來的各個f值
取出
前10%優秀f樣本基因、前30%優秀樣本基因、前70%優秀樣本基因、前90%優秀樣本基因(輪盤式選擇)
複製完後放入交配池(激增兩倍基因)
7.交配與交配機率
一開始隨機取出兩對基因
把第一對x1前四碼和第二對x2前四碼交配出新基因的x1
把第一對x2前四碼和第二對x1前四碼交配出新基因的x2
強制交配出特定數量
8.突變與突變機率
在交配的時候,有十分之一的機率發生突變,當發生突變的時候,隨機x1或x2發生突變,突變是隨機挑選binary的其中一個做改變。
e.gs., 10001101=>10101101(第三位發生突變)
9.終止條件
其繁延代數跑完,就是終止條件
10.結果與討論
因為我起始基因個數非常的低(設定為10組),所以我依靠演化(交配、突變)來使基因越來越好,但非常依靠繁延代數。
總而言之,每一代的基因都有往好的地方發展出去!所以繁延代數越高,基因品質越好。
以下是程式碼:
以下是程式碼:
2016年4月9日 星期六
Java- Collection 和 Map 集合物件
集合物件快速記法
Java集合主要由兩個介面衍伸出來Collection and Map
Collection的子介面有 Set, Queue, List
而分別為
Collection => 無序集合
Set => 無序集合,元素不可重複
Queue => 佇列( Fist In Fist out)
List =>有序結合,元素可以重複
Map=>每筆資料都是Key-Value組成
--------------------------------------------------------------------------------------------
所以需存取元素的話
Set => 根據元素本身來做存取( 所以不可重複)
List => 根據索引值存取( 所以有序)
Map =>根據關鍵字存取( 所以Key不可重複)
--------------------------------------------------------------------------------------------
最常使用到的集合類別
TreeSet, HashSet, ArrayDeque, LinkedList, ArrayList, HashMap, TreeMap
--------------------------------------------------------------------------------------------
Set
有些實作的類別HashSet、TreeSet、EnumSet都是執行緒不安全的,
所以需手動保證該集合的同步性,可以用Collections的synchronizeSortedSet
包裝該集合。
e.gs. ,
SortedSet sortedSet =Collections. synchronizeSortedSet ( new TreeSet( ...));
HashSet
1.順序是無序,添加時有可能順序會變化
2.非同步機制
3.集合可以是null
4.依照hashCode值,決定儲存位置
5. 判斷元素相等 => equals 和 hashCode 相等
6.存取元素是用hashcode快速尋找
LinkedHashSet
1.維護元素的插入順序(效能略低於HashSet)
TreeSet
1.SortedSet介面實作出來
2.依照實際元素的大小進行排序(除非沒自訂排序)
3.如果要自訂排序,可以參考test1、test2檔案
EnumSet
1.元素必須為enum的列舉值
2.依照enum中的排列順序依序排列
--------------------------------------------------------------------------------------------
List
1.可依靠索引值進行插入、刪除、查詢
2.可往前迭代(previous)和往後迭代(iterator)
3.推薦使用ArrayList,因Vector太古老
--------------------------------------------------------------------------------------------
Queue
1. 先進先出( Frist In Frist out)
priorityQueue
1.是用元素大小排列,並不是存放順序(並不是絕對標準的佇列實作)
Deque ( interface)
1.雙端佇列
2.實作ArrayDeque、LinkedList
ArrayDeque
1.相比Stack(較古老),推薦使用
2. push =>作為堆疊( FILO), add/offer=>作為佇列( FIFO)
3.可以參考test3檔案,看輸出狀況為[3,2,1,5,4]
--------------------------------------------------------------------------------------------
LinkedList
1.實作Deque、List介面
2.雙端佇列
3.List功能
--------------------------------------------------------------------------------------------
Map( Interface)
1.可以利用keySet返回所有key組成的set
2.實作HashMap、LinkedHashMap、SortedMap(interface)、TreeMap
EnumMap
HashMap、 Hashtable
1.Hashtable是一個古老的Map實作類別
2.Hashtable是一個執行緒安全的實作,反之HashMap是不安全(但速度較快)
3.Hashtable不允許key and value為null,反之HashMap則可以
4.與Set一樣,無法保證元素順序
5. key請勿隨意使用程式修改值,容易找不到對應的值
LinkedHashMap
1.插入時可以保持添加(put)順序(鏈結串列)
Properties
1.Hashtable的子類別
2.key、value都是字串類型
3.可用InputStream、OutputStream存取*.ini檔
4.可已把key-value對以XML檔的形式存放或載入
5.可以參考test4檔案
TreeMap
1.SortedMap介面實作出來
2.保證所有key-value處於有序狀態
WeakHashMap
1.相比於HashMap(強參照),當key所參照的物件沒被其他強參照變數所參照,
則所參照的物件有可能被垃圾回收,而WeakHashMap也會自動刪除所對應
的Key-Value
IdentityHashMap
1.處理新增進來的key-value比較特殊,當兩個key嚴格相等時(key1==key2,true)
才會認為兩個key相等(正常來說key1.equals(key2),true 和 hashCode相等就行了)
EnumMap
1.元素必須為enum的列舉值
2.依照enum中的排列順序依序排列
3.不允許key為null,但value可以
*陣列元素是連續的,且長度是固定,無法自由增加長度,但hashCode是
依照hashCode值運算其儲存位置,所以可以自由增加長度。
*一般來說,陣列(Array)是一塊連續的記憶體,所以存取時效能最好,而以鏈結
串列(Linked)來說,執行插入、刪除操作時有較好效能。
*Java先實作Map,然後通過包裝一個所有value都為null的Map集合,
實作出Set集合類別,所以Set和Map關係非常密切。
參考於細說Java 8 異常處理與圖形介面程式設計
Java集合主要由兩個介面衍伸出來Collection and Map
Collection的子介面有 Set, Queue, List
而分別為
Collection => 無序集合
Set => 無序集合,元素不可重複
Queue => 佇列
List =>有序結合,元素可以重複
Map=>每筆資料都是Key-Value組成
--------------------------------------------------------------------------------------------
所以需存取元素的話
Set => 根據元素本身來做存取
List => 根據索引值存取
Map =>根據關鍵字存取
--------------------------------------------------------------------------------------------
最常使用到的集合類別
TreeSet, HashSet, ArrayDeque, LinkedList, ArrayList, HashMap, TreeMap
--------------------------------------------------------------------------------------------
Set
有些實作的類別HashSet、TreeSet、EnumSet都是執行緒不安全的,
所以需手動保證該集合的同步性,可以用Collections的synchronizeSortedSet
包裝該集合。
HashSet
1.順序是無序,添加時有可能順序會變化
2.非同步機制
3.集合可以是null
4.依照hashCode值,決定儲存位置
5
6.存取元素是用hashcode快速尋找
1.維護元素的插入順序(效能略低於HashSet)
1.SortedSet介面實作出來
2.依照實際元素的大小進行排序(除非沒自訂排序)
3.如果要自訂排序,可以參考test1、test2檔案
1.元素必須為enum的列舉值
2.依照enum中的排列順序依序排列
--------------------------------------------------------------------------------------------
List
1.可依靠索引值進行插入、刪除、查詢
2.可往前迭代(previous)和往後迭代(iterator)
ArrayList、 Vector
1.可以動態配置陣列(可用ensureCapacity來一次配置,提高性能)
2.ArrayList執行緒安全、Vector執行緒不安全3.推薦使用ArrayList,因Vector太古老
--------------------------------------------------------------------------------------------
Queue
1
1.是用元素大小排列,並不是存放順序(並不是絕對標準的佇列實作)
1.雙端佇列
2.實作ArrayDeque、LinkedList
1.相比Stack(較古老),推薦使用
3.可以參考test3檔案,看輸出狀況為[3,2,1,5,4]
--------------------------------------------------------------------------------------------
LinkedList
1.實作Deque、List介面
2.雙端佇列
3.List功能
--------------------------------------------------------------------------------------------
Map
1.可以利用keySet返回所有key組成的set
2.實作HashMap、LinkedHashMap、SortedMap(interface)、TreeMap
HashMap
1.Hashtable是一個古老的Map實作類別
2.Hashtable是一個執行緒安全的實作,反之HashMap是不安全(但速度較快)
3.Hashtable不允許key and value為null,反之HashMap則可以
4.與Set一樣,無法保證元素順序
5. key請勿隨意使用程式修改值,容易找不到對應的值
1.插入時可以保持添加(put)順序(鏈結串列)
Properties
1.Hashtable的子類別
2.key、value都是字串類型
3.可用InputStream、OutputStream存取*.ini檔
4.可已把key-value對以XML檔的形式存放或載入
5.可以參考test4檔案
1.SortedMap介面實作出來
2.保證所有key-value處於有序狀態
1.相比於HashMap(強參照),當key所參照的物件沒被其他強參照變數所參照,
則所參照的物件有可能被垃圾回收,而WeakHashMap也會自動刪除所對應
的Key-Value
1.處理新增進來的key-value比較特殊,當兩個key嚴格相等時(key1==key2,true)
才會認為兩個key相等(正常來說key1.equals(key2),true 和 hashCode相等就行了)
1.元素必須為enum的列舉值
2.依照enum中的排列順序依序排列
3.不允許key為null,但value可以
*陣列元素是連續的,且長度是固定,無法自由增加長度,但hashCode是
依照hashCode值運算其儲存位置,所以可以自由增加長度。
*一般來說,陣列(Array)是一塊連續的記憶體,所以存取時效能最好,而以鏈結
串列(Linked)來說,執行插入、刪除操作時有較好效能。
*Java先實作Map,然後通過包裝一個所有value都為null的Map集合,
實作出Set集合類別,所以Set和Map關係非常密切。
參考於細說Java 8 異常處理與圖形介面程式設計
2016年3月18日 星期五
Android Studio 使用自定義xml在layout身上+fill,warp,match difference
使用@string/ 來獲得值
fill_parent=>強迫填滿整個視窗
warp_parent=>依照內部內容自動擴展來適應大小
match_parent =>低版本的fill_parent用法
fill_parent=>強迫填滿整個視窗
warp_parent=>依照內部內容自動擴展來適應大小
match_parent =>低版本的fill_parent用法
2016年3月11日 星期五
解決Android Studio Rendering Problems
通常有三個方法
3. File" -> "Invalidate Caches...", and select "Invalidate and Restart" option to fix this
1.改.xml執行的SDK版本
2.更改Theme的樣式
2015年12月26日 星期六
Excel繪製ASK訊號
FM 調變頻率 (Frequency Modulation)
AM 調辯振幅( Amplitude Modulation)
FS信號頻率( Fequency Signal)
AS信號振幅( Amplitude Signal)
H時間間隔
K調變靈敏度
我們先預設上面數值
FM=10 , AM=0 , FS=1 , AS=1 , H=0. 002 , K=1
共有五個計算參數
Time , Modulation , Signal , Singal_digital , ASK_Wave
Time是漸漸增加的執行時間
Time=last_Time+H;
Modulation是要讓人搭載的carrier singal
Modulation=AM+K*sin( 2*PI( ) *FM*Time)
Singal是訊息訊號
Signal=AS+sin( 2*PI( ) *FS*Time)
Signal_digital是把Singal訊號轉成數位形式,我們只是將弦波大於零的部分當1,小於零的部分當0,這樣可以快速得到一個數位信號
Signal_digital=IF( Singal>0,1,0)
ASK_Wave 是人搭載的Modulation 和 Singal_digital 相乘,可以得到一個ASK_Wave
ASK_Wave=Modulation*Signal_digital
訂閱:
文章 (Atom)


