반응형

Computational Intelligence 23

C언어 문자의 표현

프로그래밍을 하다보면 변수형 때문에 고민을 하게 되는데, Colored By Color Scripter™1234567891011#include int main(int argc, const char * argv[]){ // insert code here... int number = 48; char number_1 = '0'; printf("%c, %c\n",number,number_1); printf("%d, %d\n",number,number_1); return 0;} 위와 같이 해보면 아래와 같이 출력된다. 요점은 모든 문자는 숫자로 표현된다. 단지 서식문자를 이용하면, 컴퓨터가 그 숫자에 해당하는 문자를 아스키 코드 표에서 찾아 출력 할 뿐이다.

[기초] C언어를 이용한 평균, 편차, 표준편차, 불편분산

10개의 데이터의 평균, 편차, 표준편차, 불편분산을 구하는 방법에 대한 소스. 데이터를 추가하거나 삭제하여도, 데이터가 몇개인지 찾아내서 계산하므로 이용하기에 문제가 없음. 일본어로 계속 공부를 하니, 한국어로 자료 바꿀라니 어색하네... Colored By Color Scripter™1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include #include int num,sta,var;int ave[]={15,22,31,44,75,26,47,18,49,70}; int main(int argc, const char * argv[]){ int i,plus,result_ave,result_var; ..

배낭문제 (Knapsack problem)를 유전자 알고리즘 (Genetic algorithm)으로 풀기

배낭문제는 한정된 배낭속에 최대한 값어치 나가게 물건을 담는 경우를 찾아내는 문제이다.여기서 기술할 문제는 총 무게가 한정되어있을때 얼마나 비싼 값어치를 담아낼수 있느냐의 문제를 해결한다.사용할 알고리즘은 유전자 알고리즘으로, 교차와 돌연변이를 이용하였다. 배낭문제에 대한 자세한 설명은 위키백과 참조... 배낭문제 (위키백과) 아래는 참고용 베타 소스코드. Mac 10.8.5에서 Xcode Version 5.0.1로 작성한 소스이다.윈도우에서도 실행은 안해봤지만 기본적으로 C언어를 이용하였으니 크게 문제가 없을듯...적당히 프로그래밍 한거라서, 여기저기 오류가 있을수도 있고 수정이 필요할듯 하지만 값은 확인가능 함. 최대허용중량이 1000 일때의 계산결과는 아래와 같더라. Weight 960 Best f..

K-means

지난일에 공부한걸 여기다 정리해 두려고... K-means란?1) 비계층적 클러스터링 수법의 하나2) 자율학습법의 일종 3) 클러스터 수 K를 미리 정해두고, K개의 그룹으로 분류하는 수법4) 각각의 클러스터의 중심점을 기준으로 표현된다. Step 1 초기상태 각 점에 렌덤하게 클러스터를 할당한다.(여기서 K=2, 노드수=10) Step 2 각 그룹의 중심을 계산한다. 클러스타당 중심을 구한다. Step 3 제일 가까운 중심의 속성으로 노드의 속성을 변경한다. 각각의 중심점에 대한 속성으로 변경됨 Step 4 재계산 중심점 및 속성의 변화가 없어질때까지 Step 2와 3을 반복 하여 계산한다.

Genetic Algorithm

머리 정리 좀 하자.. 유전적 알고리즘 : 어떤 문제에 관한 최적해를 찾기 위한 일련의 수법, 복수의 해를 유전적으로 변화 시키면서 더 좋은해를 구하는 방법. 코딩 : 유전자 알고리즘에서 계산을 하기 위해 룰을 결정해서 유전자를 결정하는 것을 코딩이라 한다. 일차방정식 y= ax+b를 풀위해 x에 대한 y의 값이 최적이 되기위해 a,b를 조절하는 것. 여기서 a,b는 표현형으로 a=7, b=10 일때 a=0111 ,b=1010 이라고 표현한다. GA의 계산순서로는 아래와 같이 나타낼수 있다. ① 초기 모집단 생성 → 해의 집단 (개체군), 일반적으로 난수를 이용해서 생성되나, 다양성이 있는 패턴으로 시도하는 것이 중요함. ② 평가 → GA가 종료되기위한 조건으로 일정 조건을 만족시키면 종료된다. 평가항목..

0~1까지의 난수의 생성

include double random_number(){return ((double)(rand()%RAND_MAX)/(double)RAND_MAX);// return (double)rand()/(double)RAND_MAX 을 해도 같은 결과가 나옴.} rand() : 0에서 RAND_MAX까지의 자연수를 랜덤하게 불러낸다. stdlib.h를 include로 불러낼 필요가 있음.RAND_MAX: Xcode에서 불러내본 결과 2147483647이 나왔다. int로 선언될 수 있는 최대값인데 시스템 마다 다를수도? ・srand(time(NULL)); //난수의 초기화난수의 생성이란 컴퓨터에 있는 난수표를 불러내는 것이기 때문에 난수표를 매번 다른것을 불러내지 않으면 고정된 값이 나올수가 있다. 따라서 현재 ..

호너법(Horner's Method)의 C프로그래밍

호너법에 대한 위키백과 간단한 다항식 계산에 대한 프로그래밍이다.f(x)=5x^4+4x^3+3x^2+2x+1 에 대한 계산을 c언어로 해주려면 아래와 같이... x=5*(x*x*x*x)+4*(x*x*x)+3*(x*x)+2*x+1 로 해 주어도 되나, 프로그래밍을 할 경우 효율이 상당히 떨어진다.f(x)는 아래와 같이, 이므로 곱셈과 덧셈이 반복되는 계산식으로 바꿔줄 수 있으므로, 이걸 이용하면 f(x)를 아래와 같이 간단한 소스코드로 작성이 가능하다. f=(f*x)+a[i]; 여담으로 [조립제법]이란 단어가 [組立除法]이라고 똑같은 단어가 일본어 교과서에 있더라.한자권에서 원래 있던 단어인지, 일본어를 그대로 들여온건지 확실한건 잘 모르겠지만,영어도 그렇고 수학도 그렇고 일본의 영향을 많이 받은듯하다. ..

Secant Method법에 관한 C언어 정리

Secant Method 위키백과 링크 앞서 설명했던 뉴턴법은 미분을 이용하는 방법으로,미분이 간단하게 계산이 되지 않을 경우에 문제가 발생하므로,미분형태를 [ f'(x) = f(x1)-f(x1-1) / x1-x0 ] 라는 근이식으로 바꿔서 계산하는 방법이 Secant 방법이다.f'(x) = f(x1)-f(x1-1) / x1-x0 를 앞서 뉴턴법에서 본 x1 = x0 - f(x0)/f'(x0) 식에 대입하면,x2 = x1 - (f(x1)*(x1-x0) / f(x1)-f(x0)) 라는 식이 나온다.(과정생략) 초기 추정값 x0, x1를 선택해서 대입하면 루프안에서 계산된다. 여기서 사용한건 y=x^2-2 식 이므로, 해가 두개가 나오도록 초기 추정값을 설정할 경우무한루프에 빠져드므로 주의. Colored ..

반응형