Я хочу создать среду для искусственного интеллекта планетарных размеров. Он будет имитировать подземную жизнь в очень большом мире. Согласно Википедии, площадь поверхности планеты Земля составляет 510 072 000 км ^ 2, я хочу создать квадрат таких же пропорций, может быть, больше. Я буду хранить один метр на каждом бите, где 0 означает грязь, а 1 означает стену грязи.
Давайте сначала посчитаем, как хранить одну строку этого квадрата. Одна строка будет 510072000000m, а каждый байт может хранить 8 метров, поэтому одна строка будет 59,38 ГБ, а весь мир будет 3,44 ПБ. А хотелось бы добавить хотя бы воды и лавы на каждый квадратный метр, что бы умножить результат на 2.
Мне нужно сжать эту информацию с помощью алгоритмов сжатия данных без потерь. Сначала я попробовал очень прямой подход с 7zip и попробовал его с меньшим миром, где одна строка будет 6375B. По идее в мире должно быть 6375^2Б = 38.76Мб, но когда пробую получаю файл 155Мб, не знаю почему такая разница. Но когда я сжимаю его с помощью 7Zip, я получаю файл размером 40,1 МБ. Это огромная разница, и с таким соотношением я бы преобразовал свой файл мира размером 3,44 ПБ в файл размером 912,21 ГБ.
Моя первая мысль: почему у меня такой большой файл, когда математика говорит мне, что он должен быть меньше? Может проблема в коде, может проблема в том, что у меня были ошибки по математике. Код выглядит следующим образом:(С#)
// 510072000000m each line = 63759000000B
const long SIZE = 6375;
// Create the new, empty data file.
string fileName = tbFile.Text;
FileStream fs = new FileStream(fileName, FileMode.Create);
// Create the writer for data.
BinaryWriter w = new BinaryWriter(fs);
// Use random numbers to fill the data
Random random = new Random();
// Write data to the file.
for (int i = 0; i < SIZE; i++)
{
for (int j = 0; j < SIZE; j++)
{
w.Write(random.Next(0,256));
}
}
w.Close();
fs.Close();
И математика настолько проста, что если я сделал что-то не так, я не могу этого увидеть.
Можете ли вы дать мне какой-нибудь совет? Просто сосредоточьтесь на сжатии данных,искусственный интеллект не проблема, потому что у меня есть опыт работы с эволюционными алгоритмами, и мир не должен быть в реальном времени, он может занять столько времени, сколько ему нужно.
Спасибо всем за ваше время.