문제

나는 꽤 몇 가지 유전자 알고리즘;그들은 작업(들은 합리적인 해결책을 찾을 빠르게).그러나 나는 이제 발견 TDD.는 방법이 있을 작성 유전자 알고리즘 (이 크게 의존에서는 무작위 숫자)TDD 방법이 있을까?

을 더 일반적으로,당신은 어떻게 테스트하는 비결정적인 방법이 있습니다.여기에 내가 무엇을 생각:

  1. 사용 특정 종자.는 도움이 되지 않으면 나는 실수는 코드에서 처음에 그를 찾는 데 도움이 됩니다 버그 때 refactoring.

  2. 사용한 잘 알려진 목록의 숫자가 있습니다.위와 유사한 수행을 통해 코드에 의해 손(는 것을 매우 지루한).

  3. 이용 상수.적어도 나는 무엇을 기대해야하는지 알고있다.그것은 좋은 것을 지키는 주사위를 항상을 읽을 때 6RandomFloat(0,1)항상 1 을 반환합니다.

  4. 이동 하려고 많은 비결정적인 코드의 GA 으로 가능합니다.하게 보이는 바보 같은 것은 그것의 핵심입니다.

링크 매우 좋은 책에서 테스트를 너무 감사하겠습니다.

도움이 되었습니까?

해결책

나에게 보인다는 유일한 방법을 테스트 일관성 로직 을 적용하는 것입 일관하는 입력,...또는 치료 각 반복 하나의 기계적이 상태의 테스트 전후에는 반복을 돌려,전반적인 비결정적인 시스템으로 가능한 구성 요소에 따라 결정적인 반복을 값입니다.

에 대한 유사/사육/특성 상속에 반복 테스트,그 값에서의 경계 각 반복하고 테스트하는 글로벌 출력의 모든 반복의 기반으로 알려진 입력/출력에서 성공적인 반복 하위 검사에서...

기 때문에 알고리즘을 반복 사용할 수 있는 유도 에서 테스트를 제대로 작동하는지 확인한 1 반복,n+1 반복을 증명해 생산됩니다 정확한 결과(에 관계 없이 데이터를 결정)를 부여 입력 범위/도메인에 대한 제약 조건에서 가능한 값을 입력합니다.

편집전략에 대한 테스트는 비결정적인 시스템 수있는 일부를 제공합니다.는 것이 도움이 될 수 있습에 대한 통계적 분석의 결과를 한 번 TDD/개발 프로세스에 증명하고 논리는 소리입니다.

다른 팁

를 테스트하는 것과 임의의 기능을 테스트하여 그들의 여부 분석 분포의 반환 값을 충족하는 통계적 기대에 부(이 포함한 일부 통계적인 기술 자).

얘기하는 경우에 TDD,나는 확실히 말해서 밖으로 시작하기 일정 번호하고 성장을 테스트합니다.나는 TDD 에서 약간 높은 수학적 문제를 가지고하는 데 도움이 몇 일정한 경우에는 당신이 알고 있는 손에 의해 작동을 실행합니다.

W/R/T4 점,이동하는 비결정적인 코드의 GA,내 생각에 이것은 아마도 접근 방식을 고려 가치가있다.당신이 분해하는 알고리즘과 별도의 비결정적인 문제,그것은 테스트를 결정론적 부분 간단합니다.만큼 당신은 신중하는 방법에 대한 당신의 이름을 것을 생각하지 않는 당신을 희생하기에 많은 여기에.지 않는 한 나는 오해를 당신을,조지아는 여전히 대리인을 이 코드는,하지만 그것은 어딘가 다른 사람.

까지의 링크 매우 좋은 책에서(개발)테스트 나의 즐겨 찾기:

방법 중 하나는 내가 단위의 테스트는 비결정적인 기능의 알고리즘은 선거를 넣어 임의의 숫자에 다른 기능의 논리를 사용 하나는 임의의 숫자입니다.

예를 들어,만약 당신이 기능하는 유전자(벡터의 무언가)및 두 개의 임의의 점의 유전자 뭔가를 그들과 함께(돌연변이 또는 무엇이든)를 넣을 수 있습니다 세대의 임의의 숫자에서 기능,그리고 그 다음 그들과 함께 유전자 다른 기능을 포함하는 논리는 것이 주어진 숫자입니다.

이 방법으로 할 수 있 TDD 논리와 기능 및 패스는 그것은 특정한 유전자와 특정 번호를 정확히 알고,논리해야에서 유전자는 주어진 숫자를 쓰는 주장에 수정된 유전자입니다.

다른 방법으로 테스트하는 세대의 임의의 숫자가 구체화하는 세대를 다른 클래스에 액세스할 수 있는 통 컨텍스트 또는에서 로드 설정 값을 사용하여 다른 하나에 대한 테스트 실행 등이 있습니다.가 있는 것 두 가지의 구현하는 클래스,하나는 생산 생성하는 실제 임의의 숫자,그리고 다른 테스트,는 방법이 있을 받아들이는 숫자가 나중에 생성됩니다.그런 다음에서 테스트를 제공할 수 있는 특정 숫자는 클래스가 공급하 테스트 코드입니다.

를 작성할 수 있습니다 중복 신경 네트워크의 결과를 분석하는 알고리즘과 출력을 기준으로 순위가 예상한 결과입니다.:)

휴식 방법은 아래로 당신의 수 있습니다.할 수 있습니다 다음 또한 단위 테스트 주위에는 임의의 일부를 확인하는 범위의 값이 있습니다.도 테스트 실행 그것은 몇 번을 보면 결과는 변경합니다.

의 모든 기능이 완전히 결정적입니다.이것이 의미 없는 기능을 테스트해야 합성 난수 함수 안에 자체입니다.를 원할 것입니다 통과하는 것에서 매개 변수로 사용할 수 있습니다.는 방법을 때 당신의 프로그램를 기반으로 의사 결정을 내리도록에 당신의 임의의 숫자를 전달할 수 있습니다 대표 번호를 테스트하는 예상된 출력하는 숫자입니다.는 유일한 것이 없다는 결정적입니다 실제 임의의 번호 생성기는,당신은 당신이 정말로 걱정할 필요가에 대해 너무 많기 때문에 당신은 할 수 없이 쓰다.당신이 할 수 있어야한다고 가정 작동하는 만큼 그것의 설립된 라이브러리입니다.

그에 대한 단위 테스트를 확인할 수 있습니다에 대한 귀하의 통합 테스트를 수행하는 경우는,당신이 볼 수 있으로 조롱의 random number generation,그것을 대체하는 알고리즘으로 반환됩니다 잘 알려진 숫자 0..n 에 대한 모든 임의의 번호는 당신이 필요가 생성합니다.

썼 C#TDD 유전자 알고리즘을 교훈적인 응용 프로그램:http://code.google.com/p/evo-lisa-clone/

자는 가장 간단한 임의의 결과 방법에서는 응용 프로그램:PointGenetics.를 만듭을 만들어 임의의 점이 주어진다.을 위해 이 방법을 사용 5 테스트,그리고 그들의 아무도에 의존하고 특정 종자:

http://code.google.com/p/evo-lisa-clone/source/browse/trunk/EvoLisaClone/EvoLisaCloneTest/PointGeneticsTest.cs

성 테스트는 간단하다:에 대한 큰 경계(많은 가능성),두 개의 연속이 생성되는 포인트가 동일하지 않습니다.나머지 테스트를 확인 다른 제약 조건이 있습니다.

잘 대부분의 테스트 가능한 부분은 피트니스 기능-모든 당신의 논리가 될 것입니다.이 될 수 있습니다 어떤 경우에는 아주 복잡하는(당신이 실행될 수 있는 모든 종류의 시뮬레이션을 기반으로 입력 매개 변수)그래서 당신은 싶어 모든 물건을 작품으로 많은 단위 테스트,그리고 이 작업에 따라 어떤 방법입니다.

과 관련하여 테스트 GA 매개변수(돌연변이 평가,십자가 전략을 통해,무엇이든)을 구현하는 경우는 물건을 수 있습니다 자신을 확실히 그것을 테스트(할 수 있습 다시 단위 테스트가 주변의 돌연변이 논리 etc.) 하지만 당신은 할 수 없을 테스트하는'fine-tuning'GA.

즉,당신이 할 수 없을 테스트하는 경우 GA 실제로 수행하는 이외에 의해 세상의 솔루션을 발견했다.

테스트는 알고리즘 당신에 대해 같은 결과 같은 입력이 당신을 도울 수 있었지만 때로는 당신이 변화를 변경하는 결과 따기의 동작을 알고리즘이 있습니다.

나의 시험이 있다는 것을 보장하는 알고리즘 당신에게 올바른 결과입니다.는 경우에는 알고리즘 당신에게 올바른 결과를 위한의 씨앗과 임의의 값 알고리즘을 작동하거나 부서지지는 변화를 통해 만들어진다.

또 다른 기회에 TDD 가능성을 평가하는 알고리즘이 있습니다.는 경우 자동으로 할 수 있는 방법을 확인 좋은 결과는 당신이 추가할 수 있는 테스트를 표시하는 변화를 하지 않은 낮은 품질의 결과물 또는 증가하는 계산 시간이 부당하다.

하려면을 테스트하는 알고리즘으로 많은 기본 씨 당신은 어쩌면하고 싶을 테스트해야복 한 벌을 실행하는 빠른 테스트에 대한 후 시작하는 모든 저장하지 않았는지 확인하거나 분과 하나는 실행에 대해 더 이상 시간이 나중에 평가

매우 좋을 찾으로 사용하는 모의 개체에 대한 단위 테스트 케이스(http://en.wikipedia.org/wiki/Mock_object).당신이 그들을 사용할 수 있습니다 모의 개를 만드는 임의로 추측하기 위해서 당신을 얻을 것으로 예상한 결과다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top