Toggle navigation
?
users online
Logout
Open hangout
Open chat for current file
% Tariff rates between countries % tariff(Origin, Destination, Rate). tariff(china, us, 145). % US tariffs on Chinese goods tariff(us, china, 125). % Chinese tariffs on US goods tariff(vietnam, us, 10). % US general tariff on Vietnam tariff(mexico, us, 12). % US tariff on non-USMCA Mexican goods % Additional tariffs needed for our network tariff(china, vietnam, 5). % Vietnam's tariff on Chinese goods tariff(china, mexico, 7). % Mexico's tariff on Chinese goods tariff(vietnam, mexico, 8). % Mexico's tariff on Vietnamese goods (for multi-hop) % Major product categories for export % product_category(Category, TransformationDifficulty). product_category(electronics, 3). % Moderate difficulty to transform product_category(industrial_equipment, 4). % Harder to disguise origin % Trade volumes (in billions USD) % trade_volume(Origin, Destination, Category, Amount). trade_volume(china, us, electronics, 125). trade_volume(china, us, industrial_equipment, 45). % Manufacturing capability by country and product % manufacturing_capability(Country, Category, Level). manufacturing_capability(china, electronics, 5). manufacturing_capability(china, industrial_equipment, 5). manufacturing_capability(vietnam, electronics, 3). manufacturing_capability(vietnam, industrial_equipment, 2). manufacturing_capability(mexico, electronics, 3). manufacturing_capability(mexico, industrial_equipment, 3). % Rules of origin requirements by country % rules_of_origin(Country, MinTransformationPct). rules_of_origin(us, 35). % 35% value must be added for origin change rules_of_origin(vietnam, 25). % 25% value must be added rules_of_origin(mexico, 30). % 30% value must be added % Direct shipping connections (some routes may not have direct links) % shipping_route(Origin, Destination, CostPerUnit). % Again, simplified cost shipping_route(china, us, 50). shipping_route(china, vietnam, 10). shipping_route(china, mexico, 60). shipping_route(vietnam, us, 40). shipping_route(mexico, us, 20). shipping_route(vietnam, mexico, 30). % For multi-hop % Calculate total direct cost (tariffs + shipping) direct_total_cost(Origin, Destination, Category, TotalCost) :- tariff(Origin, Destination, Rate), % Rate is a percentage, e.g., 145 for 145% trade_volume(Origin, Destination, Category, Volume), % Volume in billion USD shipping_route(Origin, Destination, ShippingCostPerUnit), TariffCost is (Rate * Volume / 100), % Standard percentage calculation TotalShippingCost is (ShippingCostPerUnit * Volume / 100), % ShippingCostPerUnit is also treated as a rate per 100 units of Volume here TotalCost is TariffCost + TotalShippingCost. % Result is in billion USD % Find single-hop re-routing options and savings vs direct single_hop_reroute(Origin, Destination, Category, Via, Savings, Feasibility) :- trade_volume(Origin, Destination, Category, Volume), direct_total_cost(Origin, Destination, Category, DirectTotalCost), % Intermediary route details tariff(Origin, Via, FirstLegTariffRate), shipping_route(Origin, Via, FirstLegShippingCostPerUnit), tariff(Via, Destination, SecondLegTariffRate), shipping_route(Via, Destination, SecondLegShippingCostPerUnit), Origin \= Via, Via \= Destination, % should be different countries % Calculate costs for the re-routed path FirstLegTariff is (FirstLegTariffRate * Volume / 100), FirstLegShipping is (FirstLegShippingCostPerUnit * Volume / 100), SecondLegTariff is (SecondLegTariffRate * Volume / 100), SecondLegShipping is (SecondLegShippingCostPerUnit * Volume / 100), ReRouteTotalCost is FirstLegTariff + FirstLegShipping + SecondLegTariff + SecondLegShipping, % Must have manufacturing capability manufacturing_capability(Via, Category, Capability), Capability > 1, % This is a simplified check: any capability is better than none for this model % Origin transformation check can_transform_origin(Origin, Via, Category, CanTransform), % Calculate savings Savings is DirectTotalCost - ReRouteTotalCost, Savings > 0, % we only consider cases where there are actual savings % Determine feasibility (CanTransform = yes -> Feasibility = high ; Feasibility = low). % Find two-hop re-routing options and savings vs direct two_hop_reroute(Origin, Destination, Category, [Via1, Via2], Savings, Feasibility) :- trade_volume(Origin, Destination, Category, Volume), direct_total_cost(Origin, Destination, Category, DirectTotalCost), % Intermediary route details tariff(Origin, Via1, FirstLegTariffRate), shipping_route(Origin, Via1, FirstLegShippingCostPerUnit), tariff(Via1, Via2, SecondLegTariffRate), shipping_route(Via1, Via2, SecondLegShippingCostPerUnit), tariff(Via2, Destination, ThirdLegTariffRate), shipping_route(Via2, Destination, ThirdLegShippingCostPerUnit), Origin \= Via1, Via1 \= Via2, Via2 \= Destination, Origin \= Via2, % Calculate costs for the re-routed path FirstLegTariff is (FirstLegTariffRate * Volume / 100), FirstLegShipping is (FirstLegShippingCostPerUnit * Volume / 100), SecondLegTariff is (SecondLegTariffRate * Volume / 100), SecondLegShipping is (SecondLegShippingCostPerUnit * Volume / 100), ThirdLegTariff is (ThirdLegTariffRate * Volume / 100), ThirdLegShipping is (ThirdLegShippingCostPerUnit * Volume / 100), ReRouteTotalCost is FirstLegTariff + FirstLegShipping + SecondLegTariff + SecondLegShipping + ThirdLegTariff + ThirdLegShipping, % Must have manufacturing capabilities manufacturing_capability(Via1, Category, Capability1), manufacturing_capability(Via2, Category, Capability2), Capability1 > 0, Capability2 > 0, % Simplified check % Origin transformation check for both hops can_transform_origin(Origin, Via1, Category, CanTransform1), can_transform_origin(Via1, Via2, Category, CanTransform2), % Check transformation from Via1 to Via2's perspective Savings is DirectTotalCost - ReRouteTotalCost, Savings > 0, % Determine feasibility ((CanTransform1 = yes, CanTransform2 = yes) -> Feasibility = high; (CanTransform1 = yes ; CanTransform2 = yes) -> Feasibility = medium; Feasibility = low).