Перейти к содержимому
artem211

"ГеоКопатель" или "Стань миллионером"

Рекомендуемые сообщения

К словам о куче вызовов require, граждане, я просто перестраховываюсь и делаю все крупные переменные локальными, чтоб не забивать память роботу. Это сильно замедляет работу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть ведь некоторые переменные, которые нужны для каждой функции или для дольшинства, их стоит вынести за пределы функций.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

К словам о куче вызовов require, граждане, я просто перестраховываюсь и делаю все крупные переменные локальными, чтоб не забивать память роботу. Это сильно замедляет работу?

 

После мучений, я стал пользоваться именно вашей программой, потому что только в ней я не встречал ошибок препятствия, робот всегда доходит до бедрока, прям всегда, и самое главное, он не жалуется на недостаток энергии, и в отличии от тех копалок, он выкапывает всё что находится в заданном чанке. (проверял при помощи x-ray) Так что огромная благодарность вам за замечательную программу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

После мучений, я стал пользоваться именно вашей программой, потому что только в ней я не встречал ошибок препятствия, робот всегда доходит до бедрока, прям всегда, и самое главное, он не жалуется на недостаток энергии, и в отличии от тех копалок, он выкапывает всё что находится в заданном чанке. (проверял при помощи x-ray) Так что огромная благодарность вам за замечательную программу.

Ну чтож рад, дыр правда в ней уж очень дофига )

Есть ведь некоторые переменные, которые нужны для каждой функции или для дольшинства, их стоит вынести за пределы функций.

Чтоб они все время сидели в памяти?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чтоб они все время сидели в памяти?

Ну после подключения библиотеки сидят в памяти до рестарта.

Даже если подключены были в другой программе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну после подключения библиотеки сидят в памяти до рестарта.

Даже если подключены были в другой программе.

О привет ) значит можно от реквайра и уйти действительно, я вообще профан в ОС

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Особо переписывать ничего не надо, чуть-чуть поправить алгоритм сканирования. Зато теперь будет очень удобно работать с самим сканером

Конечно, приятно, что сканер теперь позволяет не сканировать лишние блоки. Но и сканирование сразу нескольких чанков теперь тоже потеряло актуальность. С текущими настройками на IT максимальная площадь адекватного сканирования – 11x11 с геосканером в центре. С расстояния 5x5 еще возможно отличить свинец от камня, но уже на расстоянии 6x6 будут случаться сбои.

тройное сканирование дальних областей даст нормальное приближение к реальной плотности блока. Конечно, энергии уходит больше, но под землей куча угля, его ведь можно прям в роботе жечь.

Усреднение результатов нескольких сканирований, не смотря на кратное увеличение энергозатрат, не обеспечит 100% гарантии точного определения плотности блока, переводя проблему в плоскость вероятностей. Это значит, что чисто выбрать руду всё равно не удастся. А тройное сканирование принципиально вообще ничего не изменит. Полезнее будет разбить весь участок на столбы 11x11 и менее. Заодно и требования к объему памяти снизятся.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@eu_tomat, чем писать тонны текста, лучше бы что-нибудь полезное продемонстрировал. Я лично все изучаю, поэтому уверен, что говорю об этом не с потолка. Я перепробовал кучу подходов к геокопалкам и с уверенностью могу заявить, что это просто трата времени и ресурсов, т. к. есть способы копать без геосканера намного эффективней, чем с ним.

На расстоянии 32 блока от сканера, через 3 сканирования, даже с грубым округлением можно найти и свинец и сундуки и все остальное (это стандартный конфиг)

Благодаря новым возможностям геосканера, сейчас можно пользоваться интересным алгоритмом - сканировать перед роботом квадрат 7x7, т. е. добывать слой за слоем (можно прямой линией, змейкой, спиралью, не важно), мне кажется, что это самый лучший подход, надо будет тщательно проработать, тут много плюсов - шумов мало, роботу меньше приходится бегать туда-сюда, лишней энергии не тратится и т. д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@eu_tomat, чем писать тонны текста, лучше бы что-нибудь полезное продемонстрировал. Я лично все изучаю, поэтому уверен, что говорю об этом не с потолка. Я перепробовал кучу подходов к геокопалкам и с уверенностью могу заявить, что это просто трата времени и ресурсов, т. к. есть способы копать без геосканера намного эффективней, чем с ним.

На расстоянии 32 блока от сканера, через 3 сканирования, даже с грубым округлением можно найти и свинец и сундуки и все остальное (это стандартный конфиг)

Благодаря новым возможностям геосканера, сейчас можно пользоваться интересным алгоритмом - сканировать перед роботом квадрат 7x7, т. е. добывать слой за слоем (можно прямой линией, змейкой, спиралью, не важно), мне кажется, что это самый лучший подход, надо будет тщательно проработать, тут много плюсов - шумов мало, роботу меньше приходится бегать туда-сюда, лишней энергии не тратится и т. д.

Я не понял твою позицию из последнего поста: то ли открылись новые возможности геосканера, то ли он бесполезен, то ли полезен но с 3-х кратным сканированием.

Но мне наиболее интересен последний пункт.

 

И раз даже тонны текста тебя уже не убеждают, то вот тебе полезная демонстрация:

Этот код выполняет серию простых сканирований камня на высоте 32 от геосканера, а затем вычисляет минимум и максимум в серии усредненных значений для X-кратного сканирования.

post-13296-0-11150000-1458764585_thumb.png

Видно, как сужается диапазон при увеличении кратности сканирования. Но также видно, что это всего лишь вопрос вероятностей, т.к. при увеличении количества кратных измерений ничто не помешает расширению диапазона.

Выводы:

1) Троекратное сканирование взято с потолка и его недостаточно для различения камня от свинца.

2) Более-менее удовлетворительный результат даёт 30-кратное сканирование, но он также ненадежен.

 

Upd: Ах, да! Забыл, что кроме усреднения можно пользоваться фильтрацией. Тогда количество сканирований можно уменьшить. Иногда достаточно одного сканирования, а иногда недостаточно и тридцати - это тоже вопрос вероятностей. Тоже нужна демонстрация?

Изменено пользователем eu_tomat

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мда, с чем боролись, на то и напоролись... Камень мне нафиг не нужен, у него плотность = 1, у свинца = 2, через три сканирования я отсекаю все, что меньше 2 и добываю. Попадается камень? Никто не мешает выкинуть. Пропускаю свинец? Пфф.. Не велика потеря, что-то все-равно добывается.

Но! На каждый блок улетает 10 единиц энергии, намного рациональней прокатиться лишний раз на этих 10 единицах и выкопать лишние блоки.

 

В конце я предложил такой подход, чтобы сканировать максимум на 4 блока, зачем мне тогда смотреть на 32 блока от сканера, когда у меня максимальная дальность 12 блоков?

 

Я как-то хотел приспособить робота для автоматического поиска и опустошения сундуков, изначально поставил 120 сканов каждого столба... сундуки он определял отлично, но для автогрифера 9 часов это как-то круто (и это без учета энергии). Поставил 5 сканов - сундуки находит более-менее, какие-то пропускает, но результат есть, хоть и времени уходит больше 70 минут. Поэтому я хорошо понимаю, что сканер это всего-лишь игрушка, хотя можно снизить расход энергии и время получения результата, но это не практично.

 

Если кому-то ради спорта хочется сканировать доски и свинец в горе булыжника - это его дело, пусть даже энергия халявная, но это будет только видимость полезной работы, т. к. тупая змейка или карьер намного эффективней.

Изменено пользователем Doob

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Камень мне нафиг не нужен, у него плотность = 1, у свинца = 2, через три сканирования я отсекаю все, что меньше 2 и добываю. Попадается камень? Никто не мешает выкинуть. Пропускаю свинец? Пфф.. Не велика потеря, что-то все-равно добывается.

... 

Если кому-то ради спорта хочется сканировать доски и свинец в горе булыжника - это его дело, пусть даже энергия халявная, но это будет только видимость полезной работы, т. к. тупая змейка или карьер намного эффективней.

Спорт не в многократном сканировании, а в поиске алгоритма.

Я все это время полагал, что мы в качестве эталона подразумеваем изначальный алгоритм artem211 с ограничением высоты сканирования в +/-7 блоков (или сколько там было), и абсолютным определением плотности блоков. Поэтому и удивился использованию троекратного сканирования, в то время как недостаточно и 33-кратного.

Твой же подход оказался совсем иным, допуская потерю 50% свинца. Вопросов больше нет, спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Прошу помощи, загрузил pastebin get -f vApEBQdf mine.lua, а при запуске ошибкаpost-14604-0-90941900-1459254718_thumb.jpg

 

Если использовать модификацию от Doob, то робот копает и возвращается с ошибкой обнаружено препятствие. Запускал в разных местах и с разными параметрами. Подскажите что не так делаю?

 

  

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

Если использовать модификацию от Doob, то робот копает и возвращается с ошибкой обнаружено препятствие. Запускал в разных местах и с разными параметрами. Подскажите что не так делаю?
  

 

Собственно те же проблемы, что и у меня, подразумеваю версию от Doob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Помогите пожалуйста!!! Я не умею программировать, но такая проблема. Я включаю программу мне пишет, что для использования надо набрать mine длина и ширина. Когда я набираю мне пишет. (см. на скриншоте)

post-18820-0-47091600-1464104437_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Помогите пожалуйста!!! Я не умею программировать, но такая проблема. Я включаю программу мне пишет, что для использования надо набрать mine длина и ширина. Когда я набираю мне пишет. (см. на скриншоте)

 

На скриншоте ты вызываешь программу, которая называется launcher.

Она отвечает тебе как ее надо использовать, предполагая, что она называется mine.

Попробуй написать launcher 10 10.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Она отвечает тебе как ее надо использовать, предполагая, что она называется mine.

называется, захардкодили хелп жестко в прогу, чем обеспечили даже невозможность запуска копалки некоторыми пользователями, "помогли", называется.

Разраб четко и упорно требует ввести магическое слово mine  :giggle:

 

П.С. кстати, в КК была функция гетРанингПрогКакой-тоИлиКакЕёТам(), которая возвращала имя запущенной проги. В ОС такого нет? 

Или на худой конец написать Использование:  имя_программы  

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

П.С. кстати, в КК была функция гетРанингПрогКакой-тоИлиКакЕёТам(), которая возвращала имя запущенной проги. В ОС такого нет?  Или на худой конец написать Использование:  имя_программы  <ширина> <длина>

 

 

 

  • process.running([level: number]): string, table, string

Возвращает путь к текущей запущенной программе (т.е. последней, которая была запущена функцией process.load).

Параметр level по желанию может использоваться для доступа к родительскому процессу. По умолчанию этот параметр равен 1 (текущая программа). Значение 2 будет означать родителя текущей программы (т.е. ту программу, которая вызвалаprocess.load, чтобы запустить текущую) и т.д.

Второе возвращаемое значение — окружение процесса.

Третье возвращаемое значение — это название процесса (т.е. параметр name функцииprocess.load). Для программ запущенных шеллом, это будет команда которая ее запустила.

Например: для программы запущенной командой ls -l, первое полученное значение будет ls, а третье — ls -l.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ребят, не получается. Видимо я идиот.

Попробовал launcher 10 10 та же ошибка.

Сделал все заново по инструкции. См. скриншот.

Как вариант в самом сервере проблема....

post-18820-0-02364700-1464207450_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ту версию никто не обновлял, даже смотреть никто не будет, в чем там проблема.
В первом же посте ссылка http://computercraft.ru/topic/1031-geokopatel-ili-stan-millionerom/page-3?do=findComment&comment=20949
Хотя, там тоже какие-то танцы с бубном у некоторых игроков, я особо не вникал.

Изменено пользователем Doob

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Версия 0.7.6 http://pastebin.com/bT21Huzi

Инструкция

 

 

Установите робота в левом верхнем углу карьера. За спиной робота — сундук. Слева — зарядник IC2(для зарядки инструмента). Сверху — зарядник OC(для зарядки робота). Можно слева можно поставить зарядник OC. Он будет заряжать и робота и инструмент. Зарядник OC должен быть включён. Для запуска копалки укажите размеры карьера:
kopalka [опции] размер_вперёд размер_вправо [размер_вниз]
Если размер_вниз не указан робот будет копать до бедрока. Если толщина слоя бедрока в мире не равна 5 блокам, укажите её опцией --bedrock-width=толщина_слоя_бедрока. Если бедрок плоский добавьте опцию -f (толщину в этом случае указывать не нужно).
При сканировании робот будет искать блоки, плотность которых находится в интервале (a, b); a — определяется опцией --min-hardness, b — определяется опцией --max-hardness. Значение по умолчанию (2.05, 40).
Для выкапывания всех блоков в указанной области(выкапывание ямы) добавьте опцию -q.
С помощью опции --scan-radius можно изменить радиус сканирования. Добавляйте её только если вы изменили значение geolyzerNoice в конфиге OC (geolyzerNoice=2 — --scan-radius=5; geolyzerNoice=1 — --scan-radius=10).
С помощью опции --estart задаётся уровень заряда аккумулятора необходимый для запуска робота. Если уровень заряда акк. опустится ниже --egen — будет включён генератор робота. Если уровень заряда акк. опустится ниже --ereturn — робот вернётся для подзарядки в точку старта. Уровни задаются в процентах от емкости акк. робота. Значения по умолчанию: --estart=99 --egen=50 --ereturn=20. Если емкость акк. больше или равна 1000000, то значения по умолчанию: --estart=20 --egen=10 --ereturn=2.
Если добавить опцию --dont-drop-scrap робот не будет выбрасывать мусор. С помощью опции --test-bedrock можно протестировать высоту бедрока в точке старта.
Блоки которые робот будет считать мусором задаются в переменной scrap (строка 16). Инструмент — в переменной  mining_tools_list (строка 39). Топливо для генератора — в переменной fuel_list (строка 31). Периодичность запуска проверки состояния робота (заряд акк., заполненность инвентаря, целостность инструмента) в действиях (действием ситается удар, перемещение, сканирование колонны блоков) — в переменной chkPeriod (строка 14). В строках 6-12 задаются дефолтные значения для опций --egen, --ereturn, --estart, --min-hardness, --max-hardness, --scan-radius.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...