Визуализация движения по маршруту
Предположим, что перед нами стоит классическая задача транспортной логистики: визуализировать движение некоего объекта по заданному маршруту из нескольких промежуточных точек. Для конкретики, давайте возьмем скорый фирменный поезд «Жигули», движущийся по маршруту Москва — Самара по следующему графику (взято из Яндекс.Расписаний):
Для решения задачи нам потребуется Excel 2013-2016 с установленной надстройкой Power Map. В Excel 2016 она установлена по умолчанию, для Excel 2013 можно скачать ее бесплатную превью-версию.
Этап 1. Находим координаты
Для однозначной привязки к промежуточным пунктам маршрута лучше использовать не названия населенных пунктов (они могут повторяться либо отсутствовать в принципе в нужном месте), а нормальные географические координаты. Достаточно щелкнуть по нужному месту в Яндекс-картах или Google Maps и вы увидите широту и долготу этой точки:
Добавим найденные координаты к нашей исходной таблице расписания движения поезда:
Этап 2. Дробим перегоны
Для плавного отображения движения поезда на карте нам необходимо разделить каждый перегон на несколько участков (чем их больше, тем плавнее будет анимация). Таким образом, перед нами встает задача получить примерные координаты и время для каждой промежуточной точки. Решить проблему можно формулой либо макросом.
Например, если хотим разбить каждый перегон на шесть интервалов (т.е. пять точек), то можно реализовать все одной формулой:
Но вставлять промежуточные строки, вводить и копировать формулу на все зеленые ячейки для каждого перегона придется вручную.
Другой вариант — макрос, что гораздо удобнее при большом количестве перегонов и промежуточных точек маршрута. Откройте редактор Visual Basic на вкладке Разработчик (Developer) или нажмите сочетание клавиш Alt+F11. Вставьте в вашу книгу новый пустой модуль через меню Insert — Module и скопируйте туда этот код:
Sub MakeRouteTable() Dim DeltaT#, DeltaS#, DeltaD#, NumSteps%, FirstRow%, LastRow% Const MINS_IN_ONE_STEP = 1 Application.ScreenUpdating = False FirstRow = ActiveCell.CurrentRegion.Rows(3).Row LastRow = ActiveCell.CurrentRegion.Rows.Count + FirstRow - 3 For i = 6 To 3 Step -1 'определяем число шагов на перегоне NumSteps = Int((Cells(i, 2) - Cells(i - 1, 2)) * 24 * 60 / MINS_IN_ONE_STEP) 'вычисляем изменение координат и времени на каждом шаге DeltaT = (Cells(i, 2) - Cells(i - 1, 2)) / (NumSteps + 1) DeltaS = (Cells(i, 3) - Cells(i - 1, 3)) / (NumSteps + 1) DeltaD = (Cells(i, 4) - Cells(i - 1, 4)) / (NumSteps + 1) 'заполняем строки интервалов по каждому перегону For j = 1 To NumSteps Rows(i).Insert Cells(i, 2) = Cells(i + 1, 2) - DeltaT Cells(i, 3) = Cells(i + 1, 3) - DeltaS Cells(i, 4) = Cells(i + 1, 4) - DeltaD Next j Next i
Как легко сообразить, константа MINS_IN_ONE_STEP задает количество минут в каждом шаге — можете менять ее значение по своему усмотрению. Теперь если выделить таблицу с данными или установить в нее активную ячейку, а потом запустить наш макрос сочетанием клавиш Alt+F8 или кнопкой Макросы на вкладке Разработчик (Developer — Macros), то наша таблица будет преобразована в следующий вид:
Как видите, каждый перегон теперь делится на несколько интервалов — по 1 минуте каждый.
Этап 3. Переходим к карте
Осталось совсем чуть-чуть. Выделите полученную таблицу и на вкладке Вставка нажмите кнопку 3D-карта (Insert — 3D-map):
Не перепутайте ее с кнопкой Карты (которая с глобусом) или Карты Bing (желтого цвета). После нажатия должно открыться окно надстройки Power Map.
В правой части окна на панели добавьте в группе Расположение (Location) поля широты и долготы и выберите напротив каждого название соответствующего столбца из нашей таблицы. Если все сделаете правильно, то на карте тут же должен отобразиться наш маршрут:
Теперь осталось выбрать в выпадающем списке Время (Time) столбец со значениями даты-времени из нашей таблицы и можно запускать анимацию с помощью кнопки воспроизведения в нижней части окна:
Дополнительно можно поиграться настройками слоя — кнопка Параметры слоя (Layer Options) в правом нижнем углу — и установить цвет, размер, прозрачность и т.д. отображаемых точек.
Если нажать на неприметную иконку с часами рядом с выпадающим списком Время, то можно поменять режим отображения и рисовать не маршрут, а сам поезд.
При щелчке левой кнопкой мыши по любой интересующей точке маршрута мы увидим ее подробные данные — координаты и время прохождения:
Этап 4. Несколько поездов сразу
Не секрет, что на самом деле по маршруту Москва-Самара курсируют два состава — в противофазе: когда один стартует из Москвы, другой примерно в то же время начинает движение ему навстречу из Самары. Утром один из них приходит в Самару, а другой, соответственно, в Москву и вечером процесс запускается заново. Расписание второго примерно отзеркаливает первый:
Что сделать, чтобы отобразить их на карте оба сразу?
Если по маршруту одновременно движется больше одного объекта, то данные по ним можно обработать аналогичным образом (Этапы 1 и 2) и просто добавить в продолжение нашей маршутной таблицы. А чтобы отличать поезда друг от друга, добавить еще один столбец с названием объекта:
Теперь, если построить по такой таблице еще одну визуализацию, мы будем видеть движение двух составов одновременно:
Красота
Ссылки по теме
- Все способы визуализация геоданных на картах в Excel
- Анимированная пузырьковая диаграмма
Эксель можно использовать для решения широкого спектра задач, в том числе, для нахождения наилучшего способа осуществления перевозок от производителя (продавца) к потребителю (покупателю). Давайте посмотрим, каким образом это можно реализовать в программе.
Содержание
- Транспортная задача: описание
- Подготовительный этап: включение функции “Поиск решения”
- Пример задачи и ее решение
- Условия
- Алгоритм решения
- Заключение
Транспортная задача: описание
С помощью транспортной задачи можно найти наилучший вариант перевозки с минимальными издержками между двумя взаимодействующими контрагентами (в рамках данной статьи будем рассматривать покупателей и продавцов). Чтобы приступить к решению, нужно представить исходные данные в схематичном или матричном виде. Последний вариант применяется в Эксель.
Транспортные задачи бывают двух типов:
- Закрытая – совокупное предложение продавца равняется общему спросу.
- Открытая – спрос и предложение не равны. Чтобы решить такую задачу, нужно сначала привести ее к закрытому типу. В этом случае добавляется условный покупатель или продавец с недостающим количеством спроса или предложения. Также в таблицу издержек следует внести соответствующую запись (с нулевыми значениями).
Подготовительный этап: включение функции “Поиск решения”
Чтобы решить транспортную задачу в Эксель, нужно воспользоваться функцией “Поиск решения”, которую нужно предварительно активировать, т.к. изначально она не включена. Алгоритм действий следующий:
- Открываем меню “Файл”.
- В перечне слева выбираем пункт “Параметры”.
- В параметрах кликаем по подразделу “Надстройки”. Затем в правой части окна в самом низу, выбрав значение “Надстройки Excel” для параметра “Управление”, щелкаем по кнопке “Перейти”.
- В открывшемся окне ставим галочку напротив надстройки “Поиск решения” и жмем OK.
- В результате, если мы перейдем во вкладу “Данные”, то увидим здесь кнопку “Поиск решения” в группе инструментов “Анализ”.
Пример задачи и ее решение
Чтобы лучше понять, как решать транспортные задачи в Excel, давайте рассмотрим конкретный практический пример.
Условия задачи
Допустим, у нас есть 6 продавцов и 7 покупателей. Предложение продавцов составляет 36, 51, 32, 44, 35 и 38 единиц. Спрос покупателей следующий: 33, 48, 30, 36, 33, 24 и 32 единицы. Суммарные количества по спросу и предложению равны, следовательно, это транспортная задача закрытого типа.
Также, мы имеем данные по издержкам перевозок из одного пункта в другой (ячейки с желтым фоном).
Алгоритм решения
Итак, приступи к решению нашей задачи:
- Для начала строим таблицу, количество строк и столбцов в которой соответствует числу продавцов и покупателей, соответственно.
- Перейдя в любую свободную ячейку щелкаем по кнопке “Вставить функцию” (fx).
- В открывшемся окне выбираем категорию “Математические”, в списке операторов отмечаем “СУММПРОИЗВ”, после чего щелкаем OK.
- На экране отобразится окно, в котором нужно заполнить аргументы:
- в поле для ввода значения напротив первого аргумента “Массив1” указываем координаты диапазона ячеек матрицы затрат (с желтым фоном). Сделать это можно, используя клавиши на клавиатуре, или просто выделив нужную область в самой таблице с помощью зажатой левой кнопки мыши.
- в качестве значения второго аргумента “Массив2” указываем диапазон ячеек новой таблицы (либо вручную, либо выделив нужные элементы на листе).
- по готовности жмем OK.
- Щелкаем по ячейке, расположенной слева от самого верхнего левого элемента новой таблицы, после чего снова жмем кнопку “Вставить функцию”.
- На этот раз нам нужна функция “СУММ”, которая также, находится в категории “Математические”.
- Теперь нужно заполнить аргументы. В качестве значения аргумента “Число1” указываем верхнюю строку созданной для расчетов таблицы (целиком) – вручную или методом выделения на листе. Жмем кнопку OK, когда все готово.
- В ячейке с функцией появится результат, равный нулю. Наводим указатель мыши на ее правый нижний угол, и когда появится Маркер заполнения в виде черного плюсика, зажав левую кнопку мыши тянем его до конца таблицы.
- Это позволит скопировать формулу и получить аналогичные результаты для остальных строк.
- Выбираем ячейку, которая находится сверху от самого верхнего левого элемента созданной таблицы. Аналогично описанным выше действиям вставляем в нее функцию “СУММ”.
- В значении аргумента “Число1” теперь указываем (вручную или с помощью выделения на листе) все ячейки первого столбца, после чего кликаем OK.
- С помощью Маркера заполнения выполняем копирование формулы на оставшиеся ячейки строки.
- Переключаемся во вкладку “Данные”, где жмем по кнопке функции “Поиск решения” (группа инструментов “Анализ”).
- Перед нами появится окно с параметрами функции:
- в качестве значения параметра “Оптимизировать целевую функцию” указываем координаты ячейки, в которую ранее была вставлена функция “СУММПРОИЗВ”.
- для параметра “До” выбираем вариант – “Минимум”.
- в области для ввода значений напротив параметра “Изменяя ячейки переменных” указываем диапазон ячеек новой таблицы (без суммирующей строки и столбца).
- нажимаем кнопку “Добавить” в блоке “В соответствии с ограничениями”.
- Откроется небольшое окошко, в котором мы можем добавить ограничение – сумма значений первых столбцов исходной и созданной таблицы должны быть равны.
- становимся в поле “Ссылка на ячейки”, после чего указываем нужный диапазон данных в таблице для расчетов.
- затем выбираем знак “равно”.
- в качестве значения для параметра “Ограничение” указываем координаты аналогичного столбца в исходной таблице.
- щелкаем OK по готовности.
- Таким же способом добавляем условие по равенству сумм верхних строк таблиц.
- Также добавляем следующие условия касательно суммы ячеек в таблице для расчетов (диапазон совпадает с тем, который мы указали для параметра “Изменяя ячейки переменных”):
- больше или равно нулю;
- целое число.
- В итоге получаем следующий список условий в поле “В соответствии с ограничениями”. Проверяем, чтобы обязательно была поставлена галочка напротив опции “Сделать переменные без ограничений неотрицательными”, а также, чтобы в качестве метода решения стояло значение “Поиск решения нелинейных задач методов ОПГ”. Когда все готово, нажимаем “Найти решение”.
- В результате будет выполнен расчет и отобразится окно с результатами поиска решения. Оцениваем их, и в случае, когда они нас устраивают, нажимаем OK.
- Все готово, мы получили таблицу с заполненными данными и транспортную задачу можно считать успешно решенной.
Заключение
Таким образом, с помощью программы Эксель достаточно просто решить транспортную задачу. Самое главное – правильно заполнить начальные данные и четко следовать плану действий, и тогда проблем быть не должно, т.к. программа все расчеты выполнит сама.
Практически все транспортные задачи имеют единую математическую модель. Классический вариант решения иллюстрирует самый экономный план перевозок одинаковых или схожих продуктов от производственного объекта в пункт потребления.
Планирование перевозок с помощью математических и вычислительных методов дает хороший экономический эффект.
Виды транспортных задач
Условия и ограничения транспортной задачи достаточно обширны и разнообразны. Поэтому для ее решения разработаны специальные методы. С помощью любого из них можно найти опорное решение. А впоследствии улучшить его и получить оптимальный вариант.
Условия транспортной задачи можно представить двумя способами:
- в виде схемы;
- в виде матрицы.
В процессе решения могут быть ограничения (либо задача решается без них).
По характеру условий различают следующие типы транспортных задач:
- открытые открытые транспортные задачи (запас товара у поставщика не совпадает с потребностью в товаре у потребителя);
- закрытые (суммарные запасы продукции у поставщиков и потребителей совпадают).
Закрытая транспортная задача может решаться методом потенциалов. Она всегда разрешима. Открытый тип сводят к закрытому с помощью прибавления к суммарному запасу или потребности в товаре недостающих единиц, чтобы добиться равенства.
Пример решения транспортной задачи в Excel
Предприятия А1, А2, А3 и А4 производят однородную продукцию а1, а2, а3 и а4, соответственно. В условных единицах – 246, 186, 196 и 197. Затем товар поступает в пять пунктов назначения: В1, В2, В3, В4 и В5. Это потребители продукции. Они готовы ежедневно принимать 136, 171, 71, 261 и 186 единиц товара.
Стоимость перевозки единицы продукции с учетом удаленности от пункта назначения:
Производители | Потребители | Объем производства | ||||
В1 | В2 | В3 | В4 | В5 | ||
А1 | 4,2 | 4 | 3,35 | 5 | 4,65 | 246 |
А2 | 4 | 3,85 | 3,5 | 4,9 | 4,55 | 186 |
А3 | 4,75 | 3,5 | 3,4 | 4,5 | 4,4 | 196 |
А4 | 5 | 3 | 3,1 | 5,1 | 4,4 | 197 |
Объем потребления | 136 | 171 | 71 | 261 | 186 |
Задача: минимизировать транспортные расходы по перевозке продукции.
- Проверим, является ли модель транспортной задачи сбалансированной. Для этого все количество производимого товара сравним с суммарным объемом потребности в продукции: 246 + 186 + 196 + 197 = 136 + 171 + 71 + 261 + 186. Вывод – модель сбалансированная.
- Сформулируем ограничения: объем перевозимой продукции не может быть отрицательным и весь товар должен быть доставлен к пунктам назначения (т.к. модель сбалансированная).
- Введем стоимость перевозки единицы продукции в рабочие ячейки Excel.
- Введем формулы для расчета суммарной потребности в товаре. Это будет первое ограничение.
- Введем формулы для расчета суммарного объема производства. Это будет второе ограничение.
- Вносим известные значения потребности в товаре и объема производства.
- Вводим формулу целевой функции СУММПРОИЗВ(B3:F6; B9:F12), где первый массив (B3:F6) – стоимость единицы перевозки товаров. Второй (B9:F12) – искомые значения транспортных расходов.
- Вызываем команду «Поиск решения» на закладке «Данные» (если там нет данного инструмента, то его нужно подключить в настройках Excel, а как это сделать описано в статье: расширенные возможности финансового анализа). Заполняем диалоговое окно. В графе «Установить целевую ячейку» — ссылка на целевую функцию. Ставим галочку «Равной минимальному значению». В поле «Изменяя ячейки» — массив искомых критериев. В поле «Ограничения»: искомый массив >=0, целые числа; «ограничение 1» = объему потребностей; «ограничение 2» = объему производства.
- Нажимаем «Выполнить». Команда подберет оптимальные переменные при заданных ограничениях.
Так выглядит «сырой» вариант работы инструмента. Экспериментируя с полученными данными, находим подходящие значения.
Решение открытой транспортной задачи в Excel
При таком типе возможны два варианта развития событий:
- суммарный объем производства превышает суммарную потребность в товаре;
- суммарная потребность больше суммы запасов.
Открытую транспортную задачу приводят к закрытому типу. В первом случае вводят фиктивного потребителя. Его потребности равны разнице всего объема производства и суммы существующих потребностей.
Во втором случае вводят фиктивного поставщика. Объем его производства равен разнице суммарной потребности и суммарных запасов.
Единица перевозки груза для фиктивного участника равняется 0.
Когда все преобразования выполнены, транспортная задача становится закрытой и решается обычным способом.
Читайте также по теме: решение транспортной задачи методом потенциалов в Excel.
Если вам нужна небольшая помощь в планировании поездки, то эта статья для вас!
Знаете ли вы, что можно использовать Excel для планирования ваших поездок практичным и эффективным способом? В этой статье мы собираемся дать вам несколько практических советов, чтобы вы могли настроить свой бюджет и организовать задачи, связанные с вашей поездкой, простым и объективным способом.
Вы заинтересованы в теме и хотите путешествовать? Тогда обратите внимание на приведенные ниже советы.
Практические советы по планированию поездки с помощью Excel
1. Установите пункт назначения
Первый шаг в планировании поездки — это просто выбор пункта назначения, который соответствует вашим интересам. На этом этапе интересно проанализировать направления, которые позволят вам получить опыт, который вам нравится, например, отдых или приключение, пляж или горы, лето или зима, фестивали и культура, шопинг или гастрономический опыт и другие.
На этом этапе вы также должны учитывать количество людей, которые будут путешествовать с вами. Эта информация будет полезна при планировании бюджета поездки.
2. Установите свой бюджет на поездку
Когда место назначения уже выбрано, настало время определить свой бюджет, то есть сколько вы собираетесь потратить на поездку. На этом этапе планирования интересно классифицировать основные расходы поездки и перечислить все расходы. Посмотрите пример ниже, как вы можете сделать это в Excel.
В этом примере мы можем вставить дополнительный столбец для составления соответствующих командировочных расходов. Следует отметить, что в зависимости от количества попутчиков в поездке необходимо внести пропорциональную сумму в графу расходов.
Обладая этой информацией, вы можете использовать Функция СУММЕСЛИ чтобы проверить расходы по категориям. См. пример ниже:
Получая представление о расходах по категориям, вы можете лучше анализировать состав расходов, упрощая проверку. куда уходят твои деньги.
3. Создайте контрольный список действий
Когда ваша смета завершена, пришло время приступить к планированию деталей поездки. А как известно, путешествие всегда складывается из множества деталей, о которых часто забывают.
Чтобы избежать забывчивости и стресса при планировании поездки, рекомендуется создать список дел (чек-лист), чтобы вы могли отслеживать все, что необходимо сделать до и даже во время поездки.
В Excel можно составить чек-лист разными способами. В следующем примере показан один из самых простых способов сделать это, т. е. составить список задач и отметить «ОК» на боковой панели выполненных действий.
Вы также можете распечатать контрольный список и записать свой прогресс ручкой.
4. Создайте программу путешествия
Если вы один из тех, кто любит планировать этапы своей поездки, создание расписания также может быть интересно включить в ваше планирование.
Хотя Excel — это программное обеспечение, предназначенное для расчетов и графики, вы также можете использовать его для создания расписания вашей поездки, а затем распечатать его. Ниже приведен пример того, как вы можете настроить расписание поездки в Excel.
Откройте для себя рабочий лист планирования поездки
Выше вы можете увидеть несколько шагов о том, как планировать поездки с помощью Excel. С помощью этих советов вы сможете определить свой бюджет и управлять основными задачами, связанными с поездкой.
Однако, если вам нужен комплексный инструмент планирования поездки, то на него стоит обратить внимание. Рабочий лист планирования поездки разработан нашей командой.
С его помощью вы сможете получить полное представление о своем бюджете, а также создать список дел и персонализированную программу поездок. Заинтересованы? Так Нажмите здесь чтобы увидеть все детали рабочего листа планирования поездки.
Также ознакомьтесь со следующими советами:
Итак, готовы спланировать поездку? Поделитесь этой статьей с друзьями и продолжайте следовать другим советам по Excel здесь, на нашем сайте!
В этой статье мы пошагово рассмотрим, как решить транспортную задачу посредством функций MS Excel. Задачи данного типа изучаются студентами на таких дисциплинах, как исследование операций и методы оптимальных решений.
Условие
Есть некие предприятия и склады с грузом. Каждое предприятие, нуждается в определённом объёме нашего груза. Каждый склад доставляет тонну груза по собственному тарифу. Таким образом, нужно составить маршрут, по которому мы развезём объём груза, удовлетворяющий каждое предприятие, и при этом затратим меньше всего средств.
Так транспортная задача выглядит в своём наиболее общем и типовом виде.
С – это цена за тонну. X – это то, сколько мы привезём тонн со склада на предприятие. Например, если мы примем X11 равным 5, это будет значить, что со склада А1 к потребителю B1 мы повезём 5 тонн по цене C11. Вот нам и нужно как-то распределить всё так, чтобы потратить меньше всего денег.
Варианты решения
Транспортную задачу можно решить «вручную». Существует несколько подходов к её решению на бумаге. Среди них:
- Метод опорного плана;
- Метод минимального элемента;
- Метод Фогеля.
Как правило, решая задачу одним из этих способов, вы получаете решение, находите потенциалы для него и понимаете, что в числе потенциалов есть положительные значения. Соответственно, это говорит о том, что вы нашли неверное решение. Далее вам нужно действовать, что называется, наугад. Вы переставляете различные цифры в таблице, пробуете разные варианты, словом, ищите решение методом «научного тыка». Далее снова пересчитываете потенциалы, и снова ничего не срастается.
Однозначного алгоритма, работающего безотказно в любых условиях, к сожалению, пока не придумали.
Однако для решения транспортной задачи или проверки полученного нами на бумаге результата, мы можем воспользоваться функционалом MS Excel.
Транспортная задача в Экселе
Для решения нам потребуется надстройка «Поиск решения». Возможно, она не будет активирована в вашем редакторе по умолчанию, поэтому, проделываем следующую очередность действий:
- Жмём «Файл»;
- В появившемся меню нажимаем по предпоследней кнопке «Параметры»;
- Вновь находим предпоследний пункт «Надстройки» и переходим в «Управление»:
- Ставим галочку в появившемся окне рядом с пунктов «Поиск решения» и жмём «ОК».
Поиск решения активирован. Далее он будет нами использован.
Пример задачи
На складах A1 — A4 есть суммарно 100 тонн зерна, и их нужно развести по текущим расценкам в пункты B1 – B3, потратив как можно меньше средств на доставку. Тарифы на доставку указаны в центре таблицы.
Шаг 1
Дублируем нашу таблицу в Excel.
Шаг 2
Рисуем другую таблицу.
Диапазон ячеек D12 – F15 заполняем единицами. Эти значения мы впоследствии будем изменять, чтобы найти самый дешёвый вариант перевозки. В диапазоне H12 – H15 должна быть сумма трёх единиц таблицы в строке D12 – F12, а в D17 – F17 – сумма четырёх единиц в столбце. Так напротив каждой строки и каждого столбца
Шаг 3
Рисуем третью таблицу, которая перемножит соответствующие ячейки первых двух таблиц.
Для этого выделяем диапазон 3 на 4 клетки, жмём на кнопку « = », выделяем диапазон D3-F6, жмём на клавиатуре « * », выделяем D12 – F15 и зажимаем сочетание клавиш Ctrl + Shift + Enter. Всё, вы перемножили значения.
Шаг 4
Теперь суммируем все значения последней таблицы. Для этого просто выберите произвольную свободную ячейку в MS Excel. Введите в неё « =СУММ( » и выделите третью таблицу. Нажмите Enter.
Шаг 5
Переходим во вкладку «Данные» и находим там «Поиск решения».
Щелкаем по данной кнопке. Далее всё делаем, как представлено на рисунке.
Описываю сверху вниз всё окно. Выберите целевую ячейку ту, которую мы сделали в 4-ом шаге нашего решения. Далее выберите минимум. В поле «Изменяя ячейки переменных» выберите диапазон, где мы проставили единицы. Выставляем ограничения. Значения, которые будут находиться вместо единиц, должны быть больше нуля и целыми, а потребности не должны превысить запасов. Жмём «Найти решение».
Получаем следующий результат.
Если вы всё сделали правильно, то у вас должно быть всё точно так же.
Заключение
По второй таблице сверху вы видите, сколько тонн и куда мы повезём. В третьей таблице вы видите, сколько это будет стоить. Например, мы повезём 30 тонн в B1 со склада A1 и 10 тонн со склада A3, так как спрос у пункта B1 равен 40. Аналогично и с другими пунктами.