“Мультиагент, вычисляющий” простыми словами

Я делал что-то совсем другое: я создал класс, который вы можете использовать в нескольких местах, и благодаря тому, что Swift имеет повторную инициализацию, которая работает (в отличие от C ++), она очищается после себя:

//
//  ImageAsset.swift
//

import CloudKit
import UIKit

class ImageAsset {

    let image:UIImage

    var url:NSURL?

    var asset:CKAsset? {
        get {
            let data = UIImagePNGRepresentation(self.image)
            self.url = NSURL(fileURLWithPath: NSTemporaryDirectory()).URLByAppendingPathComponent(NSUUID().UUIDString+".dat")
            if let url = self.url {
                do {
                    try data!.writeToURL(url, options: [])
                } catch let e as NSError {
                    print("Error! \(e)")
                }
                return CKAsset(fileURL: url)
            }
            return nil
        }
    }

    init(image:UIImage){
        self.image = image
    }

    deinit {
        if let url = self.url {
            do {
                try NSFileManager.defaultManager().removeItemAtURL(url) }
            catch let e {
                print("Error deleting temp file: \(e)")
            }
        }
    }


}

Вот блок-тест, который его использует (предполагается, что в тестовой цели есть изображение с именем секундомер):

//
//  ImageExtensionTests.swift
//

import CloudKit
import XCTest
@testable import BudgetImpactEstimator

class ImageExtensionTests: XCTestCase {

    let testImageName = "stopwatch" // provide the name of an image in test bundle
    override func setUp() {
        super.setUp()
        // Put setup code here. This method is called before the invocation of each test method in the class.
    }

    override func tearDown() {
        // Put teardown code here. This method is called after the invocation of each test method in the class.
        super.tearDown()
    }

    func testConvertingImageToAsset() {
        guard let image = UIImage(named: self.testImageName) else {
            XCTFail("failed to load image")
            return
        }
        let imageAsset = ImageAsset(image: image)
        XCTAssertNotNil(imageAsset)

        guard let asset = imageAsset.asset else {
            XCTFail("failed to get asset from image")
            return
        }

        print("constructed asset: \(asset)")
    }


}

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

7
задан Grant Cavanaugh 9 December 2011 в 16:40
поделиться

8 ответов

"Агенты" являются другой абстракцией в разработке программного обеспечения.
Как сырая иерархия;
Машинный код, блок, машинно-независимые языки, подпрограммы, процедуры, абстрактные типы данных, объекты и наконец агенты.

Поскольку соединение и распределение становятся более важными в вычислениях, потребность в системах, которые могут сотрудничать и достигнуть соглашений с другими системами (с различными интересами) становится очевидной; это - то, где агенты входят. Действие независимо агенты представляет Ваши интересы в их среде.

Другие примеры агентов:

  • Управление космическим кораблем, для принятия быстрых решений, когда нет никакого времени для обмена сообщениями ремесла команды земли ремесла (например, Глубокий космос НАСА 1)
  • Управление воздушным движением (Системы переопределяющие пилоты; это существует в большинстве коммерческих полетов и спасло жизни),

Многоагентные системы связаны с;

  • Экономика
  • Теория игр
  • Логика
  • Философия
  • Общественные науки

Я не думаю, что агенты - что-то, что необходимо замять. Существует 2 миллиона хитов на ученом Google для "много агента" и больше на CiteSeer; это - быстро развивающееся ответвление информатики.

5
ответ дан 6 December 2019 в 06:38
поделиться

Проще говоря, исследование мультиагента пытается разработать систему, состоявшую из автономных агентов. Таким образом, у Вас есть набор роботов/людей/программных агентов вокруг, каждый из которых может принять свои собственные меры, но может только "видеть" материал, который является вокруг него, как действительно заставляют систему вести себя, как Вы хотите?

Пример,

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

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

Учитывая группу людей, как Вы настраиваете встречающееся время (времена), которое максимизирует их счастье? не показывая их частную информацию?

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

Исследование мультиагента смешивает методы от теории игр, Экономики, искусственного интеллекта и иногда даже Биологии для ответа на эти вопросы.

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

7
ответ дан 6 December 2019 в 06:38
поделиться

Многоагентная система является понятием, одолженным от AI. Это почти похоже на виртуальный мир, где у Вас есть агенты, которые могут наблюдать, связаться и реагировать. Для предоставления примера у Вас мог бы быть агент выделения памяти, который необходимо попросить памяти, и она решает, дать ли ее Вам. Или у Вас мог бы быть агент, который контролирует веб-сервер и перезапускает его, если он зависает. Главная цель позади многоагентных систем состоит в том, чтобы иметь более подобную Smalltalk систему связи между различными частями системы, чтобы заставить все сотрудничать, в противоположность более нисходящим директивам, которые прибывают из центральной программы.

5
ответ дан 6 December 2019 в 06:38
поделиться

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

Мультиагенты не должны быть на различных машинах, они могли как @Kyle говорить, быть несколькими процессами на однокристальной схеме или машине, но они действуют без явного централизованного направления. Они могли бы действовать на концерте, таким образом, у них есть определенные правила синхронизации - делать их работы отдельно прежде, чем объединиться для сравнения результатов, например.

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

<широкое обобщение> Является этим что-то для игнорирования? Хорошо это - действительно ничто в особенности, таким образом, это похоже на немного, "я могу проигнорировать понятие quicksort?" Если Вы не понимаете то, что quicksort затем, Вы не собираетесь не удаваться быть разработчиком, потому что большая часть Вашей жизни будет полностью незатронута. Если у Вас будет больше понимания различной архитектуры и моделей, то у Вас будет больше знания для развертывания в новых и непредсказуемых местах. <широкое обобщение>

Десять лет назад, 'многоагентные системы (MAS) были одной из тех фраз, которые появились везде в академической литературе. В эти дни это менее распространено, но некоторые идеи, которые это представляет, действительно полезны в некоторых местах. Но совершенно не нужный в других. Таким образом, я надеюсь, что это ясно ;)

4
ответ дан 6 December 2019 в 06:38
поделиться

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

Одна из "нерешенных" проблем современного производства планирует. Когда определение проблемы статично, оптимальное решение может быть найдено, но в действительности, люди не приходят к работе, производственному сбою ресурсов, компьютерный сбой и т.д. Спрос изменяется все время, различные продукты требуются (т.е. массовая настройка продукта - один произведенный автомобиль имеет кондиционер, следующий не делает...). Это все приводит к заключениям что a) производство очень сложно, b) статические подходы, как планирование заранее в течение недели, не работают. Таким образом, идея - это: почему у нас не было бы интеллектуальных программ, представляющих части систем, прокладывающих себе путь из этой путаницы самостоятельно? Эти программы называют агентами. Они должны передать и согласовать среди себя и удостовериться, что задачи сделаны в установленный срок. При помощи агентов мы хотим понизить сложность системы управления, сделать ее более управляемой, включить лучшему человеку - взаимодействие машины, сделать ее более устойчивой и менее подверженной ошибкам и очень значительно: сделайте систему управления децентрализованной.

Короче говоря: агенты являются просто понятием, но они - понятие, которое все могут интуитивно понять. Код все еще должен быть написан, но он записан по-другому, одна абстракция выше, чем ООП.

2
ответ дан 6 December 2019 в 06:38
поделиться

Вы можете найти концентрацию официальных документов, касающихся агентов здесь .

0
ответ дан 6 December 2019 в 06:38
поделиться

Было время, когда было трудно найти хороший материал по программным агентам, в первую очередь из-за восприятия маркетингового потенциала. Цвет этой розы уменьшился, поэтому соотношение сигнал / шум в Интернете улучшилось по сравнению с программными агентами.

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

2
ответ дан 6 December 2019 в 06:38
поделиться

По словам Дженнингса и Вулдриджа, которые являются двумя ведущими исследователями мулит-агентов, агент - это объект, который реагирует на окружающую среду, проактивный и социальный. То есть агент - это часть программного обеспечения, которое может реагировать на свое окружение в режиме реального времени таким образом, чтобы это соответствовало его собственной цели. Он проактивен, что означает, что он не просто всегда ждет, чтобы его попросили выполнить задачу, он делает это, если видит возможность сделать что-то, что, по его мнению, будет полезно для его целей. И то, что он является социальным, то есть что он может общаться с другими агентами, необязательно, что он никогда не должен делать что-либо из этого для достижения своих собственных целей, но он должен иметь возможность делать это, если возникнет ситуация.

2
ответ дан 6 December 2019 в 06:38
поделиться