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

Программа "Очень много электричества"

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

1 час назад, whiskas сказал:

Теоретичиски с нейтронами может получится больше.

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

 

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

 

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

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


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

Прошу прощения за некропостинг, но у меня только сейчас дошли руки описать и рассказать о работе программ.

1,5 года назад её использовал на сервере с низким тпс, всё работало вполне нормально, но иногда реактор всё же бахал, как и почему не понятно, просто он исчезал из защитной коробки, но за часов 100 работы с загруженным чанком он бахнул всего 3 раза. Это без защитной схемы, ибо не было нуклеарконтрола, восстанавливал конденсаторы я не роботом, а другим способом.

 

Сейчас я на другой сборке, и мне необходимо использовать автокрафт на роботе. Если для восстановления конденсаторов использовать обычный лазурит, а не блоки(их нельзя использовать в крафте), они восстанавливаются не полностью, думаю стоит добавить проверку прочности и перекрафт в случае, если прочность ниже 90%. Так же я нашел баг, Майнкрафт-1.12.2, OC-1.7.5.192, робот по какой то причине не выкладывает скрафченый конденсатор назад в сундук, из за чего ругается на ошибку в крафте, вот видео .

 

Так же я проверил как лучше снимать энергию, нужен 5-ый энергоуровень что бы ничего не бахало, так же снимать лучше напрямую с реактора,через стекловолокно съём в 2 раза медленнее. Не важно, ставить хранилище к 2-ум стенкам, или к 1-ой, оно набирает энергию одинаково.

 

Хранилище набирает 50 миллионов рф за минуту и двадцать секунд, это 625к за секунду, это 31к РФ/тик, или же 7750 ЕУ/тик, реактор вырабатывает 17440 ЕУ/тик, моё хранилище точно может принять гораздо больше, 100 миллионов за 20 секунд с творческого блока, так что очевидно что где то есть ограничение. (Как нибудь потестирую на чистом майне с индастриалом и ОС). И тут я заметил странность, по какой то причине, через стекловолокно, которое пропускает 8192 ЕУ/тик, проходит только половина от 7750 ЕУ/тик. Если что, на видео выше я показал хранилища через волокно и напрямую, там видно что в разница набранной энергии в 2 раза.

 

Ну и раз уж программа есть, и она работает, может создать тему с ней в ветке Разное? Прога всё же очень полезна, такой способ выработки сильно дешевле других(при условии наличия бесконечности лазурита), особенно на хардкорных сборках

 

 

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

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


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

@yura0138 здаров, робот это конечно лампово и атмосферно, но для автоматизации лучше использовать МЕ

Скрытый текст

CuJM87L.png

программу для робота я посмотрю, но не факт что получится отловить баг

 

ps не используй блок управления редстоуном, он не отключает сигнал если комп помер,

используй плату редстоуна первого уровня

 

кстати, в сборке есть мод OpenPeripheral ?

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

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


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

@serafim Приветствую.

Тоже верно, вот только АЕ2 на предыдущем проекте отказывался востанавливать конденсаторы, а другие автокрафтеры были запрещены, так что робот точно пригодится

 

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

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


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

откатил прогу на предыдущую версию https://pastebin.com/WgcCKBFn

Скрытый текст

9b7zf9c.gif

напишешь, работает, нет

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

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


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, serafim сказал:

ps не используй блок управления редстоуном, он не отключает сигнал если комп помер,

Так вот почему бахал реактор, и удивительно что так мало, думаю стоит это добавить в пост с программами 

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

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


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

Выкладываю свой вариант программы под eeprom. 

 

local function clear_screen() gpu.fill(1, 1, 50, 16, " ") end

local function proxy(c)
    local ad = component.list(c)()
    if ad then
        return component.proxy(ad)
    else
       error(string.format("Component: %s, is not found!", c))
    end
end

gpu = proxy("gpu")
gpu.bind(component.list("screen")(), true)
gpu.setResolution(50, 16)
clear_screen()

--------------- Константы ----------------
local chamber_component = proxy("reactor_chamber")
local redstone_component = proxy("redstone")
local me_interface = proxy("me_interface")
local temperature_controll = true
local max_heat_reactor = 9500
local soft_sleep = 0.1
local redstone_side_output = 1
local reactor_enable_status = true
computer.addUser("nickname")

local reactor_scheme = {
    ["rod_slots"] = { 1, 3, 4, 6, 7, 8, 10, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 24, 25, 26, 29, 30, 31, 32 ,34 ,35 , 36, 37,38, 40, 41 ,42 ,43, 45,47,48,49,51,52,54  },
    ["LZH_slots"] = { 2, 5, 9, 11, 16, 22, 27, 28, 33, 39, 44, 46, 50, 53 }
}
--------------- Константы ----------------

local function redstone_toggle(enable_status)
    redstone_component.setOutput(redstone_side_output, enable_status == "OFF" and 0 or 15)
end

local function sleep(timeout)
    local deadline = computer.uptime() + (timeout or math.huge)
    repeat
        computer.pullSignal(deadline - computer.uptime())
    until computer.uptime() >=
        deadline
end

function error_handle(text)
    clear_screen()
    gpu.set(1, 8, text)
    while true do
        computer.beep(500, 1)
        if reactor_enable_status or chamber_component.isActive() then
            redstone_toggle("OFF")
            reactor_enable_status = false
        end
        while true do
            sleep(0.2)
            computer.beep(1000, 1)
            local s = { computer.pullSignal(0) }
            if s and s[3] == 57 then
                break
            end
        end
    end
end

local function draw_status(msg)
    gpu.fill(1, 1, 50, 15, "*")
    gpu.set(1, 8, msg)
end
local function replace_item(chamber_slots, slots_scheme, take_slot, dmg, id)
    
    for _, i in pairs(slots_scheme) do
        if not chamber_slots[i] or chamber_slots[i].dmg >= dmg and chamber_slots[i].id == id then
            if reactor_enable_status  then redstone_toggle("OFF") reactor_enable_status = false
            -- продвинутый сон
            while chamber_component.isActive() do sleep(0.1) end          
             end
            if not me_interface.pullItem("DOWN", i) and chamber_slots[i] then
                error_handle("ME is FULL")
            else
                ::try_again::
                local s, e = pcall(me_interface.pushItemIntoSlot, "DOWN", take_slot, 1, i)
                if not s then
                    error_handle(e)
                elseif type(e) == "number" and e == 0 and not chamber_component.getStackInSlot(i) then
                    draw_status("ITEM ENDED, try_again")
                    computer.beep(500, 0.1)
                    goto try_again
                else
                    draw_status("REPLACE ITEMS")
                end
            end
        end
    end
    if not reactor_enable_status then redstone_toggle("ON") reactor_enable_status = true draw_status("RK WORK") end
end

do
    computer.beep(666, 0.2)
    while true do
        sleep(soft_sleep)
        local s = { computer.pullSignal(0) }
        if s and s[3] == 48 then
            redstone_toggle("OFF")
            clear_screen()
            gpu.set(1, 8, "RK OFF")
            while true do
                sleep(0.2)
                computer.beep(1000, 1)
                local s = { computer.pullSignal(0) }
                if s and s[3] == 57 then
                    draw_status("RK WORK")
                    redstone_toggle("ON")
                    break
                end
            end
        end

        if chamber_component.getHeat() > max_heat_reactor and temperature_controll then
            error_handle("REACTOR TEMP OVERHEAT")
        end
        local s, chamber_slots = pcall(chamber_component.getAllStacks, false)
        if not s then error_handle(chamber_slots) end
        replace_item(chamber_slots, reactor_scheme["LZH_slots"], 4, 8700, "IC2:reactorCondensatorLap")
        replace_item(chamber_slots, reactor_scheme["rod_slots"], 3, 0, "IC2:reactorUraniumQuaddepleted")
    end
end

 

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

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


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

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

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

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

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

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

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

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

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


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