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

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

Рубрика Менеджмент и трудовые отношения
Вид дипломная работа
Язык русский
Дата добавления 08.07.2014
Размер файла 2,9 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

import core. Item;

import core. Packer;

import core. Store;

import core. Packer. ALGORYTHM;

class ResultViewer {

private class Resume {

private String algNameReport;

private String effectivityReport;

private String restReport;

private String packedReport;

private DecimalFormat format;

public Resume () {

DecimalFormatSymbols f = new DecimalFormatSymbols ();

f. setDecimalSeparator ('. ');

format = new DecimalFormat ("#,##0.00", f);

}

/**

* @param algNameReport the algNameReport to set

*/

public void setAlgNameReport (String algNameReport) {

this. algNameReport = "<h2><font color='RED'>Алгоритм: " + algNameReport + "</text></h2><p>";

}

/**

* @param effectivityReport the effectivityReport to set

*/

public void setEffectivityReport (SortedMap<Container, List<Item>> map) {

String header = "<h3><font color='RED'>Эффективность алгоритма</font></h3>";

double occupiedSpacePercent = 0;

double loadPercent = 0;

double volumeAccumulator = 0;

double weightAccumulator = 0;

double iVolumeAccumulator = 0;

double cargoAccumulator = 0;

for (Container c: map. keySet ()) {

for (Item i: map. get (c)) {

iVolumeAccumulator += i. getVolume ();

weightAccumulator += i. getWeight ();

}

volumeAccumulator += c. getVolume ();

cargoAccumulator += c. getCargo ();

}

occupiedSpacePercent = (iVolumeAccumulator / volumeAccumulator) * 100;

loadPercent = (weightAccumulator / cargoAccumulator) * 100;

String occupiedSpacePercentString = getFormattedPair ("Процент заполнения пространства контейнеров", occupiedSpacePercent);

String loadPercentString = getFormattedPair ("Процент загрузки контейнеров", loadPercent);

String loadedItemsMass = getFormattedPair ("Общая масса упакованных объектов", weightAccumulator);

String loadedItemsVolume = getFormattedPair ("Общий объём упакованных объектов", iVolumeAccumulator);

String effectivityReport = occupiedSpacePercentString + loadPercentString + loadedItemsVolume + loadedItemsMass;

this. effectivityReport = header + effectivityReport;

}

/**

* @param restReport the restReport to set

*/

public void setRestReport (Store store) {

String header = "<h3><font color='RED'>Остаток на складе</font></h3>";

double volumeAccumulator = 0;

double weightAccumulator = 0;

for (Item i: store. getRest ()) {

volumeAccumulator += i. getVolume ();

weightAccumulator += i. getWeight ();

}

String restVolume = getFormattedPair ("Общий объём оставшихся объектов", volumeAccumulator);

String restWeight = getFormattedPair ("Общий вес оставшихся объектов", weightAccumulator);

this. restReport = header + restVolume + restWeight;

}

/**

* @param packedReport the packedReport to set

*/

public void setPackedReport (SortedMap<Container, List<Item>> map) {

String packedReport = "<h3><font color='RED'>Упакованные объекты</font></h3>";

for (Container c: map. keySet ()) {

String containerID = "Контейнер ";

String itemsID = "Объекты: ";

String freeSpace = "Свободное место в контейнере: ";

String freeCargo = "Неиспользованная грузоподъёмность: ";

double iVolumeAccumulator = 0;

double iWeightAccumulator = 0;

containerID += c. getId () + "<br>";

for (Item i: map. get (c)) {

itemsID += " " + i. getId ();

iVolumeAccumulator += i. getVolume ();

iWeightAccumulator += i. getWeight ();

}

itemsID += "<br>";

freeSpace += (c. getVolume () - iVolumeAccumulator) + "<br>";

freeCargo += (c. getCargo () - iWeightAccumulator) + "<br>";

packedReport += containerID + itemsID + freeSpace + freeCargo + "<br>";

}

this. packedReport = packedReport;

}

/**

* @return the algNameReport

*/

public String getAlgNameReport () {

return algNameReport;

}

/**

* @return the effectivityReport

*/

public String getEffectivityReport () {

return effectivityReport;

}

/**

* @return the restReport

*/

public String getRestReport () {

return restReport;

}

/**

* @return the packedReport

*/

public String getPackedReport () {

return packedReport;

}

private String getFormattedPair (String string, double value) {

return "<font color='BLUE'>" + string + ": " +

"<font color='GREEN'><b>" + format. format (value) + "</b></font></font><br>";

}

}

private class ConsoleLogTextPane extends JTextPane {

/**

*

*/

private static final long serialVersionUID = - 5691372469851601341L;

private String TEMPLATE = "<html><title></title><body></body></html>";

private String buffer;

private int breakIndex;

public ConsoleLogTextPane () {

setText (TEMPLATE);

setContentType ("text/html");

breakIndex = 0;

}

public void addString (String str) {

buffer = this. getText ();

breakIndex = buffer. lastIndexOf ("</body>");

buffer = buffer. substring (0, breakIndex) + str + buffer. substring (breakIndex);

this. setText (buffer);

}

public void clearConsole () {

this. setText (TEMPLATE);

}

}

class AlgorythmsComboBoxModel implements ComboBoxModel<String> {

private Set<ListDataListener> listeners;

private List<String> elements;

private String selected;

public AlgorythmsComboBoxModel (String. strings) {

listeners = new HashSet<ListDataListener> ();

elements = new ArrayList<String> ();

selected = "";

for (String s: strings) {

elements. add (s);

}

}

@Override

public void addListDataListener (ListDataListener l) {

listeners. add (l);

}

@Override

public String getElementAt (int index) {

return elements. get (index);

}

@Override

public int getSize () {

return elements. size ();

}

@Override

public void removeListDataListener (ListDataListener l) {

listeners. remove (l);

}

@Override

public Object getSelectedItem () {

return selected;

}

@Override

public void setSelectedItem (Object anItem) {

selected = (String) anItem;

}

}

class ResultTreeCellRenderer implements TreeCellRenderer {

private JLabel label = new JLabel ();

@Override

public Component getTreeCellRendererComponent (JTree tree, Object value,

boolean selected, boolean expanded, boolean leaf, int row,

boolean hasFocus) {

if ( (value! = null) && (value instanceof DefaultMutableTreeNode)) {

ImageIcon icon = null;

DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;

Object userObject = node. getUserObject ();

if (userObject instanceof Container) {

icon = new ImageIcon (ResultViewer. class. getResource ("images/Container. png"));

label. setText ("Контейнер, ID: " + ( (Container) userObject). getId ());

} else if (userObject instanceof Item) {

icon = new ImageIcon (ResultViewer. class. getResource ("images/Item. png"));

label. setText ("Объект, ID: " + ( (Item) userObject). getId ());

} else if (userObject instanceof String) {

if (node. getParent () == null ||

node. getParent () == value) {

icon = new ImageIcon (ResultViewer. class. getResource ("images/Containers. png"));

} else {

icon = new ImageIcon (ResultViewer. class. getResource ("images/Field. png"));

}

label. setText ( (String) node. getUserObject ());

}

label. setOpaque (true);

if (selected) {

label. setBackground (new DefaultTreeCellRenderer (). getBackgroundSelectionColor ());

} else {

label. setBackground (new DefaultTreeCellRenderer (). getBackgroundNonSelectionColor ());

}

label. setIcon (icon);

}

return label;

}

}

private JPanel viewer;

private JTree tree;

private JPanel treePanel;

private JPanel cBoxPanel;

private JButton packButton;

private JButton clearConsoleButton;

private ConsoleLogTextPane resumeLoggerPane;

private JSplitPane splitPane;

private JComboBox<String> algorythmsBox;

private Hashtable<String, Packer. ALGORYTHM> table;

private final String NO_ALGORYTHM_CHOSEN = "Выберите алгоритм";

private final String FIRST = "В первый подходящий";

private final String BEST = "В лучший из подходящих";

private Resume resume;

public ResultViewer (final GUI gui, final Store store, final Packer packer, final Boss boss) {

resumeLoggerPane = new ConsoleLogTextPane ();

resumeLoggerPane. setEditable (false);

resume = new Resume ();

DefaultMutableTreeNode top = new DefaultMutableTreeNode (" [пусто] ");

table = new Hashtable<String, Packer. ALGORYTHM> ();

table. put (FIRST, ALGORYTHM. FIRST);

table. put (BEST, ALGORYTHM. BEST);

algorythmsBox = new JComboBox<String> (new AlgorythmsComboBoxModel (NO_ALGORYTHM_CHOSEN, FIRST, BEST));

algorythmsBox. setSelectedIndex (0);

algorythmsBox. addItemListener (new ItemListener () {

@SuppressWarnings ("unchecked")

@Override

public void itemStateChanged (ItemEvent arg0) {

packButton. setEnabled ( ( (JComboBox<String>) arg0. getSource ()). getModel (). getSelectedItem ()! = NO_ALGORYTHM_CHOSEN &&

store. getParetoSetInstance ()! = null &&

! store. getParetoSetInstance (). isEmpty ());

}

});

packButton = new JButton ("Упаковать");

packButton. setEnabled (false);

packButton. addActionListener (new ActionListener () {

@Override

public void actionPerformed (ActionEvent arg0) {

if (store! = null) {

store. getRest (). clear ();

if (store. getParetoSetInstance ()! = null) {

List<List<Integer>> templates = store. getTemplates ();

double maxUtilityRate = 0;

int maxUtilityIndex = 0;

SortedMap<Container, List<Item>> map = null;

for (int i = 0; i < templates. size (); i++) {

map = store. getMapClone (i);

for (List<Item> paretoLayer: store. getParetoSetClone ()) {

packer. pack (map, paretoLayer, table. get (algorythmsBox. getSelectedItem ()));

}

double utilityRate = boss. getPackUtility (map);

if (maxUtilityRate < utilityRate) {

maxUtilityRate = utilityRate;

maxUtilityIndex = i;

}

store. getRest (). clear ();

}

map = store. getMapClone (maxUtilityIndex);

for (List<Item> paretoLayer: store. getParetoSetClone ()) {

packer. pack (map, paretoLayer, table. get (algorythmsBox. getSelectedItem ()));

}

refreshTree (map); resume. setAlgNameReport ( (String) ResultViewer. this. algorythmsBox. getSelectedItem ());

resume. setEffectivityReport (map);

resume. setRestReport (store);

resume. setPackedReport (map);

resumeLoggerPane. addString (resume. getAlgNameReport ());

resumeLoggerPane. addString (resume. getEffectivityReport ());

resumeLoggerPane. addString (resume. getRestReport ());

resumeLoggerPane. addString (resume. getPackedReport ());

}

}

}

});

clearConsoleButton = new JButton ("Очистить");

clearConsoleButton. addActionListener (new ActionListener () {

@Override

public void actionPerformed (ActionEvent arg0) {

ResultViewer. this. resumeLoggerPane. clearConsole ();

}

});

viewer = new JPanel (new GridBagLayout ());

tree = new JTree (top);

tree. setCellRenderer (new ResultTreeCellRenderer ());

treePanel = new JPanel (new GridBagLayout ());

treePanel. add (new JScrollPane (tree), new GridBagConstraints (0, 0, 1, 1, 1, 1, GridBagConstraints. NORTHWEST, GridBagConstraints. BOTH, new Insets (0, 0, 0, 0), 0, 0));

cBoxPanel = new JPanel (new GridBagLayout ());

splitPane = new JSplitPane (JSplitPane. HORIZONTAL_SPLIT, treePanel, cBoxPanel);

splitPane. setOneTouchExpandable (true);

splitPane. setDividerLocation (350);

cBoxPanel. add (new JScrollPane (resumeLoggerPane), new GridBagConstraints (0, 0, 2, 1, 1, 1, GridBagConstraints. NORTHEAST, GridBagConstraints. BOTH, new Insets (0, 0, 0, 0), 0, 0));

cBoxPanel. add (algorythmsBox, new GridBagConstraints (0, 1, 1, 1, 0, 0, GridBagConstraints. NORTHEAST, GridBagConstraints. NONE, new Insets (0, 0, 0, 0), 0, 0));

cBoxPanel. add (packButton, new GridBagConstraints (1, 1, 1, 1, 0, 0, GridBagConstraints. NORTHWEST, GridBagConstraints. NONE, new Insets (0, 0, 0, 0), 0, 0));

cBoxPanel. add (clearConsoleButton, new GridBagConstraints (1, 1, 1, 1, 0, 0, GridBagConstraints. NORTHEAST, GridBagConstraints. NONE, new Insets (0, 0, 0, 0), 0, 0));

viewer. add (splitPane, new GridBagConstraints (0, 0, 1, 1, 1, 1, GridBagConstraints. NORTHWEST, GridBagConstraints. BOTH, new Insets (5, 5, 5,5), 0, 0));

}

public void refreshTree (SortedMap<Container, List<Item>> map) {

DefaultMutableTreeNode root = new DefaultMutableTreeNode ("Упакованные объекты", true);

createTree (root, map);

}

private void createTree (DefaultMutableTreeNode root, SortedMap<Container, List<Item>> map) {

( (DefaultMutableTreeNode) ( (DefaultTreeModel) tree. getModel ()). getRoot ()). removeAllChildren ();

( (DefaultTreeModel) tree. getModel ()). setRoot (root);

DefaultMutableTreeNode container = null;

DefaultMutableTreeNode item = null;

DefaultMutableTreeNode containerField = null;

DefaultMutableTreeNode itemField = null;

Set<Container> containers = map. keySet ();

for (Container c: containers) {

container = new DefaultMutableTreeNode (c, true);

List<Item> items = map. get (c);

containerField = new DefaultMutableTreeNode ("ID: " + c. getId (), false);

container. add (containerField);

containerField = new DefaultMutableTreeNode ("Объём: " + c. getVolume (), false);

container. add (containerField);

containerField = new DefaultMutableTreeNode ("Грузоподъёмность: " + c. getCargo (), false);

container. add (containerField);

for (Item i: items) {

item = new DefaultMutableTreeNode (i, true);

itemField = new DefaultMutableTreeNode ("ID: " + i. getId (), false);

item. add (itemField);

itemField = new DefaultMutableTreeNode ("Объём: " + i. getVolume (), false);

item. add (itemField);

itemField = new DefaultMutableTreeNode ("Вес: " + i. getWeight (), false);

item. add (itemField);

itemField = new DefaultMutableTreeNode ("Кр.1: " + i. getRate1 (), false);

item. add (itemField);

itemField = new DefaultMutableTreeNode ("Кр.2: " + i. getRate2 (), false);

item. add (itemField);

itemField = new DefaultMutableTreeNode ("Кр.3: " + i. getRate3 (), false);

item. add (itemField);

itemField = new DefaultMutableTreeNode ("Кр.4: " + i. getRate4 (), false);

item. add (itemField);

itemField = new DefaultMutableTreeNode ("Кр.5: " + i. getRate5 (), false);

item. add (itemField);

if (i. hasPair ()) {

itemField = new DefaultMutableTreeNode ("ID парного объекта: " + i. getPair (). getId ());

item. add (itemField);

}

container. add (item);

}

root. add (container);

}

tree. expandPath (new TreePath ( ( (DefaultMutableTreeNode) ( (DefaultMutableTreeNode) root. getChildAt (0)). getChildAt (3)). getPath ()));

}

/**

* @return the viewer

*/

public JPanel getViewer () {

return viewer;

}

}

Пакет launcher.

LayouterLauncher. java

package launcher;

import gui. GUI;

import util. ContainerTemplate;

import util. IntegerDiapason;

import util. ItemTemplate;

import core. Boss;

import core. Packer;

import core. Store;

public class LayouterLauncher {

/**

* @param args

*/

public static void main (String [] args) {

// Задаём ограничения на предельные значения параметров объектов и контейнеров.

ContainerTemplate ct = new ContainerTemplate (new IntegerDiapason (25, 40), new IntegerDiapason (25, 40));

ItemTemplate it = new ItemTemplate (new IntegerDiapason (1, 20),

new IntegerDiapason (1, 20),

new IntegerDiapason (1,5),

new IntegerDiapason (1,5),

new IntegerDiapason (1,5),

new IntegerDiapason (1,5),

new IntegerDiapason (1,5)

);

// Создаём склад.

Store store = new Store ();

// Создаём ЛПР

Boss boss = new Boss ();

// Создаём упаковщика.

Packer packer = new Packer (store, boss);

new GUI (store, packer, boss, ct, it);

}

}

Размещено на Allbest.ru


Подобные документы

  • Понятия, связанные с принятием решений в различных условиях. Примеры принятия решений в условиях определенности, риска и неопределенности. Модели и методы принятия решений. Страховой, валютный, кредитный риск. Интуитивное и рациональное решение.

    реферат [90,4 K], добавлен 16.01.2011

  • Назначение и краткая характеристика систем поддержки принятия решений. Концепции и принципы теории принятия решений. Получение информации, критерии принятия решений и их шкалы. Схема классификации возможных источников и способов получения информации.

    курсовая работа [132,5 K], добавлен 14.02.2011

  • Выбор планшетного ПК. Методы решения задач принятия решений в условиях неопределенности. Разработка математического обеспечения поддержки принятия решений на основе реализации стандартных и модифицированных алгоритмов теории исследования операций.

    курсовая работа [5,9 M], добавлен 22.01.2016

  • Оценка и выбор многокритериальных решений в условиях определенности и ранжирование исходного множества альтернатив (без учета выполнения ограничений). Принятие решений в условиях риска и неопределенности. Вычисление минимаксного критерия Севиджа.

    курсовая работа [128,2 K], добавлен 22.01.2015

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

    курсовая работа [2,0 M], добавлен 24.12.2014

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

    курсовая работа [105,4 K], добавлен 01.04.2014

  • Подход к управлению как к науке и искусству. Общие сведения о теории принятия решений. Постулаты теории принятия оптимального решения. Классы утверждений психологической теории решений. Методы психологических исследований процессов принятия решений.

    реферат [26,2 K], добавлен 07.12.2010

  • Исследование роли управленческих решений, их классификация. Модели и этапы принятия управленческих решений. Особенности разделения труда в процессе принятия решений. Оценка среды принятия решений и рисков, методы прогнозирования для принятия решений.

    курсовая работа [233,1 K], добавлен 15.05.2019

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

    курсовая работа [123,6 K], добавлен 30.03.2015

  • Анализ и принятие управленческих решений в условиях определенности, в условиях риска, в условиях неопределенности. Общие модели и методы принятия решений в условиях определенности, неопределенности и риска. Эффективность работы персонала.

    реферат [34,0 K], добавлен 15.12.2006

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.