Внешняя компонента Симплекс-метод

17.01.07

Разработка - Разработка внешних компонент

Внешняя компонента 1С для решения задач оптимизации (задачи линейного программирования) с помощью симплекс-метода.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Бесплатно
vk_simplex.zip
.1169038007 76,01Kb
913
913 Скачать бесплатно
Представим себе такую задачу.
Фирма, производящая некоторую продукцию осуществляет её рекламу двумя способами через радиосеть и через телевидение. Стоимость рекламы на радио обходится фирме в 5$, а стоимость телерекламы - в 100$ за минуту.
Фирма готова тратить на рекламу по 1000$ в месяц. Так же известно, что фирма готова рекламировать свою продукцию по радио по крайней мере в 2 раза чаще, чем по телевидению.
Опыт предыдущих лет показал, что телереклама приносит в 25 раз больший сбыт продукции, нежели радиореклама.
Задача заключается в правильном распределении финансовых средств фирмы.
Это и есть пример задачи оптимизации. В данном случае в задаче всего две неизвестных и она может быть решена с помощью, например, графического метода. В общем случае решаются такие задачи с помощью методов линейного программирования. Симплекс-метод – наиболее популярный среди них.

См. также

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Программист Пользователь Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Медиадисплей покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Экран можно использовать в качестве графического меню-борда в кафе и видеовывески. В качестве устройства отображения можно использовать Android-планшеты, смарт-телевизоры с Android, мониторы или проекторы под управлением Windows или Linux-компьютера. Linux-версия успешно запускается на одноплатных компьютерах Raspberri Pi и Orange Pi. Настраивается ЛЮБОЙ ДИЗАЙН экрана при помощи встроенного графического редактора! Решение можно масштабировать от одного экрана до тысяч экранов с централизованным управлением.

18000 руб.

30.05.2017    54158    9    69    

46

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Платные (руб)

Внешняя компонента для конвертации PDF файлов в картинки без использования дополнительных программ. Работает на сервере и в тонком клиенте.

2400 руб.

25.06.2024    1186    3    4    

3

Разработка внешних компонент Телефония, SIP Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    47448    124    66    

67

Разработка внешних компонент Программист Платформа 1С v8.3 Платформа 1C v8.2 Платные (руб)

Внешняя компонента, позволяющая посылать команды и получать ответы по GraphQL протоколу из 1С.Может быть использована при интеграции. В 1С работает на стороне "клиента".

4600 руб.

27.06.2023    3671    3    0    

5

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

3600 руб.

02.09.2010    77586    72    257    

191

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    36839    114    127    

114

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Бесплатно (free)

В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.

04.12.2024    4976    kovalevdmv    26    

75
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. IgorMgn 1 09.03.07 12:58 Сейчас в теме
Реальная компонента. Конечно совсем уж "Поиск решения" Excel не заменит, но кое-что можно сделать без выгрузки данных в Excel! +1, несомненно!
2. gelotus 01.06.07 17:29 Сейчас в теме
А можно исходный код компоненты?
3. savonov 01.06.07 19:08 Сейчас в теме
4. Myst_ 65 12.12.08 00:38 Сейчас в теме
5. Pavlovsky 56 28.09.10 16:54 Сейчас в теме
Чего то у меня возникли проблемы с ВК.
Вот такая задача:
36 17
0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 1 -9 = 4
1 1 0 0 -1 0 1 1 1 0 0 0 0 1 1 0 -5 >= 22
-2 -1 0 0 1 -1 -2 -1 0 1 -1 -1 -1 -1 0 1 9 >= 22
1 0 0 0 -1 0 0 -1 -1 -1 1 0 -1 -1 -1 -1 7 >= 22
-1 -1 -1 0 1 0 -1 -1 -1 0 -1 0 0 -1 -1 0 9 >= 58
1 1 0 -1 -1 1 2 1 0 -1 1 1 1 1 0 -1 -5 >= 58
-1 -1 -1 0 0 0 -1 -2 -1 0 0 0 -1 -1 -1 0 11 >= 58
0 -1 -1 -1 0 0 0 -1 -2 -1 0 0 0 -1 -1 -1 11 >= 22
1 1 0 0 0 1 1 1 0 -1 1 1 1 1 0 0 -7 >= 22
1 1 1 0 0 1 2 2 2 1 0 0 1 1 1 0 -13 >= 22
0 1 1 1 0 -1 0 1 1 1 0 0 0 1 1 1 -7 >= 58
-1 -1 0 0 0 -1 -2 -1 0 0 -1 -1 -1 -1 0 0 11 >= 58
2 2 1 0 -1 1 2 2 1 0 1 1 1 1 1 0 -14 >= 58
-1 0 1 1 1 -1 -1 0 1 1 -1 -1 0 0 0 1 0 >= 58
0 0 0 0 -1 0 0 0 0 0 0 0 -1 0 0 -1 4 >= 22
-2 -2 -1 0 1 -1 -2 -2 -1 0 -1 0 0 -1 0 1 12 >= 22
1 0 -1 -1 -1 1 1 0 -1 -1 1 0 0 0 -1 -1 4 >= 58
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 >= 58
-1 -1 -1 -1 0 0 0 0 0 0 -1 0 0 0 0 0 6 >= 58
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 >= 58
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 >= 58
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 >= 22
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 >= 58
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 >= 58
0 0 0 0 0 -1 -1 -1 -1 -1 0 0 0 0 0 0 6 >= 58
0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 >= 58
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 >= 58
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 >= 58
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 >= 58
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 >= 58
0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 -1 -1 6 >= 58
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 >= 58
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 >= 58
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 >= 58
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 >= 58
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 >= 58
min
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

решение у нее есть стопудово

58, 197/2, 58, 58, 58, 58, 259/4, 58, 259/4, 58, 58, 58, 58, 58, 58, 58, 259/4

А ВК отказывается решать эту задачу выдает результат 0 и все.
6. lavrik 45 29.09.10 09:50 Сейчас в теме
Pavlovsky: пришлите, пожалуйста, Вашу реализацию в 1с на эл. адрес, указанный в описании к компоненте, постараюсь рассмотреть Ваш пример.
7. Pavlovsky 56 29.09.10 11:00 Сейчас в теме
Спасибо за оперативный ответ. В прикрепленном файле обработка, где все команды прописаны в явном виде. Дело может в том, что для заданных ограничений существует бесконечно много решений где достигается минимум.
Прикрепленные файлы:
симплекс.ert
8. Pavlovsky 56 29.09.10 11:43 Сейчас в теме
максимально локализовал баг

Попытка
ЗагрузитьВнешнююКомпоненту("vk_simplex.dll");
Исключение
Сообщить("Не удалось загрузить внешнюю компоненту vk_simplex", "!");
СтатусВозврата(0);
Возврат;
КонецПопытки;
// создаем объект Симплекс
Симплекс = СоздатьОбъект("AddIn.vk_simplex");
// можно на всякий случай очистить исходные данные и результаты предыдущих расчетов
Симплекс.Очистить();
//целевая функция
Симплекс.ДобавитьКоэффициентФункции(0);
Симплекс.ДобавитьКоэффициентФункции(0);
Симплекс.ДобавитьКоэффициентФункции(0);
Симплекс.ДобавитьКоэффициентФункции(0);
Симплекс.ДобавитьКоэффициентФункции(0);
Симплекс.ДобавитьКоэффициентФункции(1);
//формирование ограничений
Симплекс.НовоеОграничение(1, 58);
Симплекс.ДобавитьКоэффициентОграничения(-1);
Симплекс.ДобавитьКоэффициентОграничения(-1);
Симплекс.ДобавитьКоэффициентОграничения(-1);
Симплекс.ДобавитьКоэффициентОграничения(-1);
Симплекс.ДобавитьКоэффициентОграничения(-1);
Симплекс.ДобавитьКоэффициентОграничения(6);
Симплекс.НовоеОграничение(1, 58);
Симплекс.ДобавитьКоэффициентОграничения(1);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.НовоеОграничение(1, 58);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(1);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.НовоеОграничение(1, 58);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(1);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.НовоеОграничение(1, 58);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(1);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.НовоеОграничение(1, 58);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(1);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.НовоеОграничение(1, 58);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(1);
// выполняем расчет
Симплекс.ВыполнитьРасчет(0);
// вывод результатов
Симплекс.ВыбратьРезультаты();
Инд=0;
Пока Симплекс.ПолучитьРезультат() = 1 Цикл
Сообщить(Окр(Симплекс.Результат,0));
КонецЦикла;
Сообщить("Сумма " + Окр(Симплекс.РезультатФункции,0));

Решение очевидно 58, а выдает 0
9. Pavlovsky 56 29.09.10 11:45 Сейчас в теме
Хм. Если убрать еще одну переменную, то выдает правльный ответ

//целевая функция
Симплекс.ДобавитьКоэффициентФункции(0);
Симплекс.ДобавитьКоэффициентФункции(0);
Симплекс.ДобавитьКоэффициентФункции(0);
Симплекс.ДобавитьКоэффициентФункции(0);
Симплекс.ДобавитьКоэффициентФункции(1);
//формирование ограничений
Симплекс.НовоеОграничение(1, 58);
Симплекс.ДобавитьКоэффициентОграничения(-1);
Симплекс.ДобавитьКоэффициентОграничения(-1);
Симплекс.ДобавитьКоэффициентОграничения(-1);
Симплекс.ДобавитьКоэффициентОграничения(-1);
Симплекс.ДобавитьКоэффициентОграничения(5);
Симплекс.НовоеОграничение(1, 58);
Симплекс.ДобавитьКоэффициентОграничения(1);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.НовоеОграничение(1, 58);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(1);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.НовоеОграничение(1, 58);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(1);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.НовоеОграничение(1, 58);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(1);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.НовоеОграничение(1, 58);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(0);
Симплекс.ДобавитьКоэффициентОграничения(1);
10. Stepan_1c 27.09.11 15:02 Сейчас в теме
11. gorneev 12.11.11 18:32 Сейчас в теме
Огромное спасибо за компоненту!!! Помогло в конфигурации по комбикормам!!!
Оставьте свое сообщение