Я пытаюсь создать простую многоагентную систему на Java.Агенты должны иметь возможность взаимодействовать с MATLAB.До сих пор я использовал класс MatlabEngine, предоставленный Mathworks, для этого интерфейса.Это прекрасно работает в одном Java-классе (агенте), но пытаться переключаться между несколькими агентами было сложно.Насколько я знаю, агенты могут общаться друг с другом только через класс ACLMessage, который позволяет отправлять сообщения.Однако сообщения могут только быть строками и никаким другим типом данных.Я хотел бы сериализовать класс MatlabEngine в строку, отправить его как сообщение другим агентам, а затем десериализовать объект.Однако мой компилятор говорит мне, что MatlabEngine не сериализуем.Это можно обойти?Или, что еще лучше, есть ли более простой способ сделать это?
Вот код, который я пытаюсь использовать для сериализации объекта MatlabEngine:
String serializedObject = "";
try {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream so = new ObjectOutputStream(bo);
so.writeObject(matlabEngineObject);
so.flush();
serializedObject = bo.toString();
} catch (Exception e) {
System.out.println(e);
}
А вот код I 'm пытается использовать для десериализации полученную строку:
try {
byte b[] = serializedObject.getBytes();
ByteArrayInputStream bi = new ByteArrayInputStream(b);
ObjectInputStream si = new ObjectInputStream(bi);
MatlabEngine matinst = (MatlabEngine) si.readObject();
} catch (Exception e) {
System.out.println(e);
}