0 / 0 / 1
Регистрация: 18.03.2014
Сообщений: 27

Задача по мат моделированию

05.12.2016, 22:04. Показов 1570. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно написать программу на Java(либо любом ООП) и любом языке типа Simula.
Задачка такая:
В школе имеется 100 компьютеров. Компьютеры периодически выходят из строя. Время нормальной работы распределено нормально с матожиданием 30 дней и дисперсией 15 дней. Время ремонта распределено равномерно от 1 до 3 дней. Сколько нужно ремонтников, для того что бы постоянно работало 90 компьютеров в будни дни.

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

Нашел что-то на питоне только
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# -*- coding: cp1251 -*-
import math
import random
 
compsPos = []
queue = {}
maxComp = 100
 
def getWorkTime():
    cv = math.floor(random.gauss(30, 15))
    if (cv < 0):
        cv = 0
    return cv
 
def addqueue(item):
    l = math.floor(random.gauss(2, 1))
    if l < 1:
        l = 1
    if l > 3:
        l = 3
    queue[item] = l
    print 'comp ',item,' added to queue for ',l,' days'
    
 
# первично заполняем массив компов их временами работы
for i in range(0, maxComp, 1):
    cv = getWorkTime()
    compsPos.append(cv)
 
print compsPos
rl = []
# дни
for i in range(365):
    print 'day ',i
    # цикл выходов из строя
    for j in range(0, maxComp, 1):
        # этот комп сейчас в ремонте
        if (j in queue.iterkeys()):
            continue
        # этот комп сломается 100%, так как ему работать 0 дней
        if (0 == compsPos[j]):
            addqueue(j)
            continue
        # иначе оцениваем вероятность поломки
        pos = 1-(1 / compsPos[j])
        # бросаем случайное числе
        # если оно больше вероятности поломки, то комп сломался
        # иначе работает
        cur = random.random()
        if (cur > pos):
            addqueue(j)
            continue
        # уменьшаем на 1 время работы компа        
        compsPos[j] = compsPos[j] - 1
    rl.append(len(queue))
    # цикл возвратов в строй
    for j in queue.keys():
        queue[j] = queue[j]-1
        # комп починен, возвращаем в строй
        if (0 == queue[j]):
            # задаём новое время работы
            cv = getWorkTime()
            compsPos[j] = cv
            print 'comp ',j,' returned with new time ',cv
            # удаляем из очереди
            del queue[j]
 
print rl
print max(rl)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.12.2016, 22:04
Ответы с готовыми решениями:

мат.задача
Господа, если кто-то сталкивался или представляет решение следующей задачи, огромная просьба, подскажите! всю голову сломала... суть...

Задание по мат. моделированию
Всем добрый день! Решая задание по мат. моделированию, в ходе решения столкнулся с проблемой. В общем : есть окружность d=10 мм в ней...

Поиск литературы по мат. моделированию
Может кто знает какой литературой можно воспользоваться, чтобы подготовится к теме &quot;Модели эволюции изолированной биологической...

2
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
06.12.2016, 13:55
с теории начни, опиши русским языком как эта хрень считается, кто-нибудь с программой поможет
0
0 / 0 / 1
Регистрация: 18.03.2014
Сообщений: 27
07.12.2016, 11:47  [ТС]
Лучший ответ Сообщение было отмечено DWfrya как решение

Решение

В общем на java написал. Кому интересно, выкладываю код.
Теперь нужно это как то на имитационный язык перевести.
Тогда в другом разделе открою тему. Задача по мат моделирвоанию
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package com.company;
 
import java.util.ArrayList;
 
public class Main {
    private long count = 0;
    private static long a = 4096;
    private static long c = 150889;
    private static long m = 714025;
    private static long seed = 23;
    static int maxComp = 100;
    static ArrayList<Comp> compList = new ArrayList<>();
    static ArrayList<Integer> repairList = new ArrayList<>();
    public static void main(String[] args) {
        for (int i = 0; i < maxComp; i++) {
            compList.add(new Comp(i, getWorkTime(), -1));
        }
        int kol[] = new int[365];
        int day=0;
        for (int i = 0; i < 365; i++) {
            System.out.println("day "+i);
            for (int j = 0; j < maxComp; j++) {
                if (compList.get(j).repairTime>0) {continue;}
                if (compList.get(j).workTime == 0 && compList.get(j).repairTime==-1) {
                    addqueue(j, compList.get(j));
                    repairList.add(compList.get(j).id);
                    continue;
                }
                if (day<5) compList.get(j).workTime--;
            }
            day++;
            kol[i]=repairList.size();
 
            for (int j = 0; j < repairList.size(); j++) {
                int idComp = repairList.get(j);
                if (compList.get(idComp).repairTime>0) compList.get(idComp).repairTime--;
                else if (compList.get(idComp).repairTime==0) {
                    compList.get(idComp).workTime=getWorkTime();
                    compList.get(idComp).repairTime=-1;
                    System.out.println("comp "+idComp+" returned with new time "+compList.get(idComp).workTime);
                    repairList.remove(j);
                }
            }
            if (day==7) day=0;
 
        }
        int max = kol[0];
        for (int i = 1; i < kol.length; i++) {
            if (kol[i]>max) max=kol[i];
        }
        System.out.println(max+" computers are broken max");
        System.out.println("need "+(max-10)+" workers");
 
    }
 
    public static int getWorkTime() {
        int cv = Normal(30, 15);
        if (cv<0) cv=30;
        return cv;
    }
 
    public static void addqueue(int item, Comp comp) {
        double l = Ravnomern(1,4);
        if (l<1) l =1;
        else if (l>3) l=3;
        int il = (int)(Math.round(l));
        comp.repairTime=il;
        System.out.println("comp "+item+" added to queue for "+il+" days");
    }
 
    public static int Normal(double mat, double dis)
    {
        double U = Math.random();
        double V = Math.random();
 
        double R1 = Math.sqrt(-2 * Math.log(U)) * Math.sin(2 * Math.PI * V);
        double R2 = Math.sqrt(-2 * Math.log(U)) * Math.cos(2 * Math.PI * V);
        double R = (R1 + R2) / 2;
        return (int)(R * dis + mat);
    }
 
    public static double getRand() {
        seed = (a * seed + c) % m;
        return seed / (double) m;
    }
 
    public static double Ravnomern (int a, int b){
        double ret = 0;
        ret = (b - a)*getRand() + a;
        return ret;
    }
}
 
package com.company;
 
/**
 * Created by Денис on 06.12.2016.
 */
public class Comp {
    int workTime, repairTime, id;
    public Comp(int id, int workTime, int repairTime) {
        this.id=id;
        this.workTime=workTime;
        this.repairTime=repairTime;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.12.2016, 11:47
Помогаю со студенческими работами здесь

задача по моделированию
выручите, вообще не разбираюсь в моделировании , задание прикреплю и есть схожий материал:wall:

Задача по моделированию
Производственная мощность цеха сборки – 120 изделий типа A и 360 изделий типа B в сутки. Технический контроль пропускает в сутки всего 200...

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

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

Задача по Моделированию систем.
Вот такое вот нужно сделать задание. Помогите, плз. =( http://s017.***********/i442/1111/fa/477f61190beb.jpg


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
PostgreSQL в Kubernetes: Подготовка кластера и настройка
Mr. Docker 20.03.2025
Когда доходит до контейнеризации баз данных и особенно таких требовательных к ресурсам системах как PostgreSQL, многие команды до сих пор колеблются, прежде чем перенести их в контейнерную. . .
C++26: Индексирование пакетов и метапрограммиро­вание
bytestream 20.03.2025
Эволюция C++ продолжается стремительными темпами – каждый новый стандарт приносит функциональность, о которой мы мечтали годами. Звучит слишком громко? Если вы когда-либо боролись с вариадическими. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru