4.П.5. Оптимальный план развития программных продуктов
Постановка задачи
Компания "Корвет" производит программное обеспечение на CD-ROM, которое продается в пакете с драйверами
CD-ROM основными производителями компьютерного оборудования. Компания оценивает возможность развития 6
новых программных приложений. В таблице представлена информация о затратах и ожидаемой чистой приведенной
прибыли от продажи приложений (с учетом временной стоимости денег, в тыс. долл.).
У "Корвета" 60 программистов. Фирма может выделить 3.5 млн. долл. на развитие новых программных
приложений.
Каков оптимальный набор приложений, которые следует развивать, если:
- Ожидается, что клиенты, заинтересованные в приложении 4, будут заинтересованы также в приложении 5 и
наоборот. Т.о., эти приложения должны вместе развиваться или не развиваться.
- Развитие приложения 1 имеет смысл только при наличии приложения 2. Т.о., если развивается приложение 1,
должно развиваться и приложение 2, но приложение 2 может развиваться и без приложения 1.
- Приложения 3 и 6 эксплуатируют одну и ту же тему. Следовательно, если одно из них развивается, то
другое - нет.
- Стремясь обеспечить качество продукции, "Корвет" не склонен развивать более 3 программных продуктов.
Проанализируйте влияние каждого из 4 последних ограничений на оптимальное решение.
приложение | затраты на развитие | число программистов | чистая прибыль |
П1 | 400 | 6 | 2000 |
П2 | 1100 | 18 | 3600 |
П3 | 940 | 20 | 4000 |
П4 | 760 | 16 | 3000 |
П5 | 1260 | 28 | 4400 |
П6 | 1800 | 34 | 6200 |
Ресурсы | 3500 | 60 | |
Решение задачи
Параметры задачи приведены в таблице в постановке задачи. Мы добавили в ту же таблицу ресурсы
"Корвета" и дали названия приложениям П1,...,П6.
Для условий изменим порядок и перепишем их в следующем виде:
- |{П3, П6}| <=1 (из П1, П6 - не более 1)
- |{Пi}| <=3 (из П1,...,П6 - не более 3)
- П1 => П2 (П2 необходим для П1; если П1, то П2)
- П4 <=> П5 ( П1 и П2 вместе выбираются или нет; П4 => П5 и П5 => П4 одновременно)
в таком порядке условия рассматривать удобнее.
Для решения задачи можно использовать следующую модель.
Ресурсы "Корвета" (тип "Приобретение") поступают в Приложения (тип "Производство"), где происходит
выбор и развитие приложений. Прибыль от Приложений поступает и учитывается в Прибыли (тип "Сбыт").
Для задания условий понадобится Управление (тип "Хранение"), из которого проведена связь в Счет (тип
"Производство"). В Управлении будут задаваться условия на флаги, в Счете - выполняться действия над
флагами. Управление и Приложения связаны двусторонней связью, т.е. поток флагов передается в обоих
направлениях.
Вставим в модель объект типа "Приобретение" с именем "Ресурсы", объект типа "Производство" с
именем "Приложения", объект типа "Сбыт" с именем "Прибыль". Проведем связи-потоки из Ресурсов в
Приложения и из Приложений в Прибыль. Это базовая модель, к которой будет добавлено управление, чтобы
задавать нужные дополнительные условия.
В Ресурсах, в таблице закупок, введем материалы: программисты, инвестиции. Зададим для них Мах кол-во
из параметров задачи.
В Приложениях, в процессах, добавим 6 процесссов-приложений: П1,...,П6. Зададим для них
целочисленность: для каждого зададим Ед./блок = 1, Мах = 1. Во входящих материалах для каждого из
процессов введем оба материала, поступающие из Ресурсов, потребление зададим из параметров задачи. В
исходящих материалах для каждого процесса введем один продукт, одноименный с процессом, с выходом = 1.
В Прибыль, в таблицу продаж, введем все эти 6 продуктов с ценой = прибыли из параметров задачи.
Обеспечим задание условий. Вставим в модель объект типа "Хранение" с именем "Управление", объект типа
"Производство" с именем "Счет", проведем связи-потоки из Управления в Счет, из Управления в Приложения и
из Приложений в Управление.
Чтобы задать условие-1, введем в Приложения, во входящие материалы, для процессов П3 и П6 материал-флаг
"|{3,6}|" с потреблением = 1. Введем в Управление, в хранимые материалы, этот флаг "|{3,6}|". Задавая
начальный запас для него, мы определяем, какое количество из процессов, потребляющих этот флаг, может
быть выполнено. При начальном запасе = 0, процессы не выполняются. При запасе = 1, может быть выполнено не
более 1 процесса, что и требуется в условии. При запасе >= 2, условие отменяется - могут быть выполнены
оба процесса.
Условие-2 задается подобным же образом. Введем в Приложения, во входящие материалы, для каждого из
процессов материал-флаг "|{1-6}|" с потреблением = 1. Введем в Управление, в хранимые материалы, этот
флаг. Задавая начальный запас для него, мы определяем, какое количество из процессов, потребляющих этот
флаг, может быть выполнено. В условии-2 запас=3. Чтобы отключить условие, достаточно задать запас >= 6.
Условие-3 задается следующим образом. Введем в Приложения, в исходящие материалы, для процессов П1 и
П2 продукты-флаги соответственно (П1)=>П2 и П1=>(П2) с выходом = 1. Эти флаги показывают, что связанные с
ними процессы выполнялись. Отправим эти флаги в Управление: введем в Управление, в хранимые материалы,
эти флаги. Нам надо, чтобы, если поступил флаг (П1)=>П2, то поступил бы и флаг П1=>(П2). Зададим для
(П1)=>П2 Мах запас = 0. Введем в Счет, в процессы, процесс "П1=>П2", во входящие материалы для этого
процесса материалы (П1)=>П2 и П1=>(П2) с потреблением = 1. Теперь, если П1 выполнен, в Управление передается
флаг (П1)=>П2, он должен быть использован (Мах запас = 0), для этого должен быть выполнен процесс П1=>П2
в Счете, для этого требуется передать этому процессу П1=>(П2) из Управления, для этого в Управление должен
поступить П1=>(П2), для этого должен быть выполнен П2. Если же П1 не выполняется, не возникает нужды в
выполнении каких-либо действий в Управлении. Если при этом выполняется П2, в Управление поступает флаг
П1=>(П2) и там остается, выполнение процесса в Счете необязательно. Чтобы отключить условие, достаточно
сделать Мах запас неопределенным или >= 1.
Условие-4 подобно условию-3 в обе стороны. Оно задается подобным же образом. Введем в Приложения, в
исходящие материалы, для процессов П4 и П5 продукты-флаги соответственно (П4)<=>П5 и П4<=>(П5) с выходом
= 1. Введем в Управление, в хранимые материалы, эти флаги, зададим для обоих флагов Мах запас = 0. Введем
в Счет, в процессы, процесс "П4<=>П5", во входящие материалы для этого процесса флаги (П4)<=>П5 и П4<=>(П5)
с потреблением = 1. Теперь, если П4 выполнен, должен быть выполнен П5, и наоборот. Но они могут также оба
не выполняться. Условие легко можно превратить в условие типа условия-3 ("=>"), убрав одно из ограничений
на Мах запас, или разрешив Мах запас >=1. Чтобы отключить условие, достаточно сделать оба Мах запаса
неопределенными или >= 1.
Решение модели с любым набором условий, мы оставляем пользователю. Для этого достаточно указанным
способом отключить ненужные условия, установить нужные, решить модель.