Então 0 é permitido, 1 não é permitido, 499 não é permitido e 501 é permitido? Parece uma área não contígua. Portanto, não é um problema puro de otimização, mas também um tipo de problema combinatório. Temo que Solver não consiga lidar com isso.
Você deve analisar dois casos de uso separadamente:
- O valor é zero (valor fixo, cálculo simples);
- O valor é 500 ou maior (otimizar no Solver usando restrição > = 500);
e, em seguida, compare esses dois casos usando uma fórmula IF.
EDITAR:
Eu tentei usar restrições "binárias" e "inteiras" como Karl sugeriu, mas elas não funcionaram.
- Crie uma variável binária 0-1 e uma variável contínua > = 500 e use IF para copiar a variável contínua ou escrever 0 para o valor de compras
- Crie uma variável binária 0-1 e uma variável contínua > = 500 e, em seguida, calcule as compras como seu produto
- Crie uma variável inteira > = 499 e use IF para substituir 499 por 0 pelo valor de compras
Em todos os casos, o resultado foi muitas vezes errado e dependia das condições iniciais. Aparentemente Solver não gosta de coisas assim.
Depois, pensei em aplicar minha proposta acima a todos os seis valores de compra e otimizá-los de forma independente, por exemplo, otimizando a soma de custos para todos os meses. Mas acontece que eles não são independentes: o estoque inicial depende do mês anterior e a compra ideal por um mês depende de uma compra ter sido feita no mês anterior. Por isso, não é possível adicionar um IF simples a cada mês.
O melhor que pude fazer é o seguinte.
Eu adicionei uma variável binária 0-1 e uma variável contínua > = 500, e calculei as compras de cada mês usando IF. Mas eu otimizei apenas as variáveis contínuas usando o Solver. As variáveis binárias são um parâmetro. Ou seja, selecionamos os meses em que uma compra será feita e usamos o Solver para calcular os valores dessas compras e, em seguida, anotar o custo total resultante.
Isso deve ser repetido para todas as combinações de compras e não compras. O número dessas combinações é 2 6 = 64. Mas, na verdade, se você não comprar nada em janeiro, acabará com um estoque de fechamento negativo que não é permitido. Portanto, existem apenas 32 combinações válidas. Eu adicionei fórmulas para calcular os valores binários do índice de combinação, iterou o índice 32 vezes, lançou o Solver a cada mão e copiou os resultados "como valores apenas" para cada combinação.
O resultado é que o custo mínimo é de 4 625,00 € e existem duas combinações para alcançar este valor.
Aqui está o arquivo enviado para o Google Docs, com uma captura de tela do Solver.
Iniciar o Solver várias vezes manualmente é entediante, acredito que possa ser automatizado usando macros.