품질작을 본격적으로 해보려고 하는데,


위키를 보던 중 Optimal module usage에 나와 있는 내용과 본인이 계산한 수치가 서로 사맛디 아니할새 질문을 남김


Quality - Factorio WikiQuality - Factorio Wikiwiki.factorio.com


표에 의하면 희귀 품질 모듈을 사용하면 Max module 2에서 crafts가 891개 필요하다고 명시 돼 있는데

본인이 계산한 바에 의하면 1019개가 필요한 것으로 보임


영어 실력이 딸려서 그러는데 여기서 crafts는 갈갈하기 전의 일반 품질 완성품(products)이 아니라 재료(ingredients) 세트겠지?

만약 완성품이라면 차이가 더 크게 나타남... 대략 1732개 정도


위키 글 아래쪽에 P = 50%, Q = 25%로 예시 들어 놓은 거는 내가 계산한 거랑 일치하는데
어느 과정에서 틀렸는지 모르겠음...

이상적으로 계산해볼 때 위키 글처럼 Transition matrix 짜고 무한(충분히 큰 숫자) 제곱 한 다음에
완성품나 재료에 해당하는 성분에다 역수 취하면 필요한 완성품이나 재료 숫자 아닌가?

이게 대충 필요한 개수만 틀린 게 아니라, 위키에 나와 있는 품질 vs 생산 모듈 최적 개수 해에서도 틀린 게 나와서
(ex. 희귀 품질, Base prod. 50%일 때 Max module 4에서 품질 4개가 최적이라고 명시 돼있는데, 본인 계산에는 품질 3개가 최적이라고 나옴)
어디서 틀렸는지 봐봐야 할 것 같아...

맨 아랫쪽에 대충 짠 매트랩 코드를 달아봤어... 디버깅 "해줘"

추가적으로 전설 품질의 품질 모듈3은 6.25%가 아니라 6.2%가 맞는 거지?
4개 달면 25%가 아니라 24.8%가 맞는 거지?
지금 당장 확인이 불가능한 상황이라서... 집에 가서 확인해봐야지... ㅎㅎ


========================

clear; clc; close all;
upgrades_further = 0;
n = 3; % number of quality modules
m = 1; % number of productivity modules
p3s = [0.1, 0.13, 0.16, 0.19, 0.25];
q3s = [0.025, 0.032, 0.04, 0.047, 0.062];
b = 0.5; % productivity of base
p = p3s(3); % productivity of each module
q = q3s(3); % probability for upgrading quality of each module
T = zeros(10);
if upgrades_further == 0
qq = 0.1;
else
qq = n*q;
end
T(6, 1) = (1 + m*p + b)*(1 - n*q);
T(7, 1) = (1 + m*p + b)*n*q*(1 - qq);
T(8, 1) = (1 + m*p + b)*n*q*qq*(1 - qq);
T(9, 1) = (1 + m*p + b)*n*q*qq^2*(1 - qq);
T(10, 1) = (1 + m*p + b)*n*q*qq^3;
T(7, 2) = (1 + m*p + b)*(1 - n*q);
T(8, 2) = (1 + m*p + b)*n*q*(1 - qq);
T(9, 2) = (1 + m*p + b)*n*q*qq*(1 - qq);
T(10, 2) = (1 + m*p + b)*n*q*qq^2;
T(8, 3) = (1 + m*p + b)*(1 - n*q);
T(9, 3) = (1 + m*p + b)*n*q*(1 - qq);
T(10, 3) = (1 + m*p + b)*n*q*qq;
T(9, 4) = (1 + m*p + b)*(1 - n*q);
T(10, 4) = (1 + m*p + b)*n*q;
T(10, 5) = (1 + m*p + b);
T(1, 6) = 0.25*(1 - 4*q);
T(2, 6) = 0.25*4*q*(1 - qq);
T(3, 6) = 0.25*4*q*qq*(1 - qq);
T(4, 6) = 0.25*4*q*qq^2*(1 - qq);
T(5, 6) = 0.25*4*q*qq^3;
T(2, 7) = 0.25*(1 - 4*q);
T(3, 7) = 0.25*4*q*(1 - qq);
T(4, 7) = 0.25*4*q*qq*(1 - qq);
T(5, 7) = 0.25*4*q*qq^2;
T(3, 8) = 0.25*(1 - 4*q);
T(4, 8) = 0.25*4*q*(1 - qq);
T(5, 8) = 0.25*4*q*qq;
T(4, 9) = 0.25*(1 - 4*q);
T(5, 9) = 0.25*4*q;
T(10, 10) = 1;
fprintf('Expected number of normal ingredients : %f\n', 1/([zeros(1, 9), 1]*(T^200)*[1, zeros(1, 9)]'));
fprintf('Expected number of normal products : %f\n', 1/([zeros(1, 9), 1]*(T^200)*[zeros(1, 5), 1, zeros(1, 4)]'));